From 67e95c6ecc5e20809c37d1545abc93b566d154ba Mon Sep 17 00:00:00 2001 From: Aleksei Zelentsov Date: Thu, 24 Sep 2026 02:03:09 +0300 Subject: [PATCH 1/4] chore(contract): re-baseline the operation manifest to Apple API 4.5 Apple replaced App Store Connect OpenAPI 4.4.1 with 4.5 between 2026-09-21 and 2026-09-23, so the strict contract gate failed on every branch with 1,051 expired-review and pin errors and no code change. The pinned 4.4.1 document was recovered byte-for-byte from the Wayback Machine (snapshots 20260820205342 and 20260916204644 of Apple's zip: the zip SHA-1 equals the CDX digest and openapi.oas (2).json hashes to the pinned ed0202ef...). The previous manifest passes --strict against it with 0 errors and 0 warnings. Every stamp below is backed by a 4.4.1 -> 4.5 diff of operations, parameters, request-body inputs, requiredness, and response lineage: - specPin: 4.5, 973 paths, 1,270 operations, SHA-256 1e8ef250... - 644 exact optional-input classifications re-stamped: every classified Apple input is unchanged, including its referenced schemas and text. - sparseFields family rule re-decided: 110 of its 1,139 inputs changed only in enum values (fields[apps] +performanceOverviews, fields[subscriptions] +marketSettings/multiSeatStatus, fields[ageRatingDeclarations] +gracRatingClassificationNumber, fields[gameCenterDetails] +blockedPlayers, fields[appInfos] -kidsAgeBand). No new fields[...] input reached a mapped operation, and public tools still expose documented projections instead of caller-controlled sparse fieldsets. - 424 waivers: 385 unchanged; 39 re-decided because only referenced App, AppInfo, or GameCenterDetail schemas and fields[...] enums changed. No public tool maps these operations, so each deferral stands. - Scope rules: /v1/alternativeDistribution and /v1/marketplace unchanged; /v1/gameCenter (+4 operations) and /v2/gameCenter (+2 operations) re-decided as still out of scope. - New operation apps_performanceOverviews_getToManyRelated is deferred. - New optional inputs are classified as intentionally omitted: gracRatingClassificationNumber on app_versions_update_age_rating, and marketSettings and multiSeatStatus on subscriptions_update. - 17 reviewed reasons that cite the pinned Apple version now cite 4.5; each claim was verified against 4.5, and the build encryption-declaration PATCH deprecation against current Apple DocC. - optionalInputCoveragePin: 2,907 total, 1,121 bound, 40 internally controlled, 1,746 intentionally omitted, 0 unclassified. The only requiredness change on a mapped operation, filter[planType] on adjusted equalizations, is handled in the next commit. --- .../Resources/OperationManifest/manifest.json | 888 +++++++++--------- .../OperationManifest/tools/analytics.json | 4 +- .../OperationManifest/tools/apps.json | 266 +++--- .../OperationManifest/tools/beta_app.json | 2 +- .../OperationManifest/tools/beta_groups.json | 36 +- .../OperationManifest/tools/beta_license.json | 4 +- .../OperationManifest/tools/beta_testers.json | 36 +- .../OperationManifest/tools/build_beta.json | 12 +- .../tools/build_processing.json | 40 +- .../tools/build_uploads.json | 16 +- .../OperationManifest/tools/builds.json | 54 +- .../OperationManifest/tools/custom_pages.json | 36 +- .../tools/export_compliance.json | 52 +- .../OperationManifest/tools/iap.json | 130 +-- .../OperationManifest/tools/metrics.json | 8 +- .../OperationManifest/tools/ppo.json | 42 +- .../OperationManifest/tools/pre_release.json | 8 +- .../OperationManifest/tools/pricing.json | 4 +- .../OperationManifest/tools/promoted.json | 8 +- .../OperationManifest/tools/provisioning.json | 28 +- .../tools/review_attachments.json | 2 +- .../tools/review_submissions.json | 20 +- .../OperationManifest/tools/reviews.json | 18 +- .../OperationManifest/tools/screenshots.json | 112 +-- .../tools/subscriptions.json | 224 ++--- .../OperationManifest/tools/versions.json | 89 +- .../OperationManifest/tools/xcode_cloud.json | 62 +- 27 files changed, 1112 insertions(+), 1089 deletions(-) diff --git a/Sources/asc-mcp/Resources/OperationManifest/manifest.json b/Sources/asc-mcp/Resources/OperationManifest/manifest.json index 8ff407d..8f6120a 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/manifest.json +++ b/Sources/asc-mcp/Resources/OperationManifest/manifest.json @@ -1,18 +1,18 @@ { "schemaVersion": 2, "specPin": { - "version": "4.4.1", - "sha256": "ed0202ef37155b9334772482d2ea0be688c3046b284c895bcbea5455fbe54fd8", - "pathCount": 966, - "operationCount": 1263 + "version": "4.5", + "sha256": "1e8ef250d6a41bab0f5670b669abf3f06298ef129c8455ba258149fda86927b2", + "pathCount": 973, + "operationCount": 1270 }, "optionalInputCoveragePin": { - "total": 2905, - "bound": 1122, + "total": 2907, + "bound": 1121, "internalControl": 40, - "intentionallyOmitted": 1743, + "intentionallyOmitted": 1746, "unclassified": 0, - "identitySHA256": "c975f4e4eebb62ec87864a73fbf72bb8841f644108e54e6ffb25168bcf2a2766" + "identitySHA256": "0ce3ff14568f841643559c359bc91827290535925c3665172fda81d499f81ce1" }, "optionalParameterFamilyRules": [ { @@ -20,7 +20,7 @@ "disposition": "intentionallyOmitted", "reason": "Public tools expose documented resource projections instead of arbitrary JSON:API sparse fieldsets; concrete missing response data is tracked at the tool output contract rather than passed through as fields[resource] strings.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "scopeRules": [ @@ -29,28 +29,28 @@ "disposition": "outOfScope", "reason": "Game Center is tracked as a separate product roadmap and is not part of the current public MCP scope.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "pathPrefix": "/v2/gameCenter", "disposition": "outOfScope", "reason": "Game Center is tracked as a separate product roadmap and is not part of the current public MCP scope.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "pathPrefix": "/v1/alternativeDistribution", "disposition": "outOfScope", "reason": "Alternative distribution is intentionally deferred to a separate product phase.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "pathPrefix": "/v1/marketplace", "disposition": "outOfScope", "reason": "Alternative marketplace management is intentionally deferred to a separate product phase.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "waivers": [ @@ -60,7 +60,7 @@ "disposition": "deferred", "reason": "The `actors` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.actors_getInstance", @@ -68,7 +68,7 @@ "disposition": "deferred", "reason": "The `actors` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.analyticsReportInstances_segments_getToManyRelationship", @@ -76,7 +76,7 @@ "disposition": "deferred", "reason": "The `analyticsReportInstances` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.analyticsReportRequests_deleteInstance", @@ -84,7 +84,7 @@ "disposition": "deferred", "reason": "The `analyticsReportRequests` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.analyticsReportRequests_getInstance", @@ -92,7 +92,7 @@ "disposition": "deferred", "reason": "The `analyticsReportRequests` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.analyticsReportRequests_reports_getToManyRelationship", @@ -100,7 +100,7 @@ "disposition": "deferred", "reason": "The `analyticsReportRequests` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.analyticsReportSegments_getInstance", @@ -108,7 +108,7 @@ "disposition": "deferred", "reason": "The `analyticsReportSegments` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.analyticsReports_instances_getToManyRelationship", @@ -116,7 +116,7 @@ "disposition": "deferred", "reason": "The `analyticsReports` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.androidToIosAppMappingDetails_createInstance", @@ -124,7 +124,7 @@ "disposition": "deferred", "reason": "The `androidToIosAppMappingDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.androidToIosAppMappingDetails_deleteInstance", @@ -132,7 +132,7 @@ "disposition": "deferred", "reason": "The `androidToIosAppMappingDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.androidToIosAppMappingDetails_getInstance", @@ -140,7 +140,7 @@ "disposition": "deferred", "reason": "The `androidToIosAppMappingDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.androidToIosAppMappingDetails_updateInstance", @@ -148,7 +148,7 @@ "disposition": "deferred", "reason": "The `androidToIosAppMappingDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCategories_getCollection", @@ -156,7 +156,7 @@ "disposition": "deferred", "reason": "The `appCategories` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCategories_getInstance", @@ -164,7 +164,7 @@ "disposition": "deferred", "reason": "The `appCategories` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCategories_parent_getToOneRelated", @@ -172,7 +172,7 @@ "disposition": "deferred", "reason": "The `appCategories` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCategories_parent_getToOneRelationship", @@ -180,7 +180,7 @@ "disposition": "deferred", "reason": "The `appCategories` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCategories_subcategories_getToManyRelationship", @@ -188,7 +188,7 @@ "disposition": "deferred", "reason": "The `appCategories` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCategories_subcategories_getToManyRelated", @@ -196,7 +196,7 @@ "disposition": "deferred", "reason": "The `appCategories` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipAdvancedExperienceImages_createInstance", @@ -204,7 +204,7 @@ "disposition": "deferred", "reason": "The `appClipAdvancedExperienceImages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipAdvancedExperienceImages_getInstance", @@ -212,7 +212,7 @@ "disposition": "deferred", "reason": "The `appClipAdvancedExperienceImages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipAdvancedExperienceImages_updateInstance", @@ -220,7 +220,7 @@ "disposition": "deferred", "reason": "The `appClipAdvancedExperienceImages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipAdvancedExperiences_createInstance", @@ -228,7 +228,7 @@ "disposition": "deferred", "reason": "The `appClipAdvancedExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipAdvancedExperiences_getInstance", @@ -236,7 +236,7 @@ "disposition": "deferred", "reason": "The `appClipAdvancedExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipAdvancedExperiences_updateInstance", @@ -244,7 +244,7 @@ "disposition": "deferred", "reason": "The `appClipAdvancedExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipAppStoreReviewDetails_createInstance", @@ -252,7 +252,7 @@ "disposition": "deferred", "reason": "The `appClipAppStoreReviewDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipAppStoreReviewDetails_getInstance", @@ -260,7 +260,7 @@ "disposition": "deferred", "reason": "The `appClipAppStoreReviewDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipAppStoreReviewDetails_updateInstance", @@ -268,7 +268,7 @@ "disposition": "deferred", "reason": "The `appClipAppStoreReviewDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperienceLocalizations_createInstance", @@ -276,7 +276,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperienceLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperienceLocalizations_deleteInstance", @@ -284,7 +284,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperienceLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperienceLocalizations_getInstance", @@ -292,7 +292,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperienceLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperienceLocalizations_updateInstance", @@ -300,7 +300,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperienceLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperienceLocalizations_appClipHeaderImage_getToOneRelated", @@ -308,7 +308,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperienceLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperienceLocalizations_appClipHeaderImage_getToOneRelationship", @@ -316,7 +316,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperienceLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_createInstance", @@ -324,7 +324,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_deleteInstance", @@ -332,7 +332,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_getInstance", @@ -340,7 +340,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_updateInstance", @@ -348,7 +348,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_appClipAppStoreReviewDetail_getToOneRelated", @@ -356,7 +356,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_appClipDefaultExperienceLocalizations_getToManyRelated", @@ -364,7 +364,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_appClipAppStoreReviewDetail_getToOneRelationship", @@ -372,7 +372,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_appClipDefaultExperienceLocalizations_getToManyRelationship", @@ -380,7 +380,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_releaseWithAppStoreVersion_getToOneRelationship", @@ -388,7 +388,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_releaseWithAppStoreVersion_updateToOneRelationship", @@ -396,7 +396,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipDefaultExperiences_releaseWithAppStoreVersion_getToOneRelated", @@ -404,7 +404,7 @@ "disposition": "deferred", "reason": "The `appClipDefaultExperiences` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipHeaderImages_createInstance", @@ -412,7 +412,7 @@ "disposition": "deferred", "reason": "The `appClipHeaderImages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipHeaderImages_deleteInstance", @@ -420,7 +420,7 @@ "disposition": "deferred", "reason": "The `appClipHeaderImages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipHeaderImages_getInstance", @@ -428,7 +428,7 @@ "disposition": "deferred", "reason": "The `appClipHeaderImages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClipHeaderImages_updateInstance", @@ -436,7 +436,7 @@ "disposition": "deferred", "reason": "The `appClipHeaderImages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClips_getInstance", @@ -444,7 +444,7 @@ "disposition": "deferred", "reason": "The `appClips` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClips_appClipAdvancedExperiences_getToManyRelated", @@ -452,7 +452,7 @@ "disposition": "deferred", "reason": "The `appClips` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClips_appClipDefaultExperiences_getToManyRelated", @@ -460,7 +460,7 @@ "disposition": "deferred", "reason": "The `appClips` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClips_appClipAdvancedExperiences_getToManyRelationship", @@ -468,7 +468,7 @@ "disposition": "deferred", "reason": "The `appClips` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appClips_appClipDefaultExperiences_getToManyRelationship", @@ -476,7 +476,7 @@ "disposition": "deferred", "reason": "The `appClips` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCustomProductPageLocalizations_appPreviewSets_getToManyRelationship", @@ -484,7 +484,7 @@ "disposition": "deferred", "reason": "screenshots_list_preview_sets returns the full related preview-set resources; this linkage-only relationship document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCustomProductPageLocalizations_appScreenshotSets_getToManyRelationship", @@ -492,7 +492,7 @@ "disposition": "deferred", "reason": "screenshots_list_sets returns the full related screenshot-set resources; this linkage-only relationship document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCustomProductPageLocalizations_searchKeywords_getToManyRelationship", @@ -500,7 +500,7 @@ "disposition": "deferred", "reason": "custom_pages_list_search_keywords returns full related keyword resources; this linkage-only relationship document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCustomProductPageVersions_appCustomProductPageLocalizations_getToManyRelationship", @@ -508,7 +508,7 @@ "disposition": "deferred", "reason": "custom_pages_list_localizations returns full related localization resources; this linkage-only relationship document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appCustomProductPages_appCustomProductPageVersions_getToManyRelationship", @@ -516,7 +516,7 @@ "disposition": "deferred", "reason": "custom_pages_list_versions returns full related version resources; this linkage-only relationship document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEncryptionDeclarations_getCollection", @@ -524,7 +524,7 @@ "disposition": "deferred", "reason": "The `appEncryptionDeclarations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEncryptionDeclarations_app_getToOneRelated", @@ -532,7 +532,7 @@ "disposition": "deferred", "reason": "The `appEncryptionDeclarations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEncryptionDeclarations_app_getToOneRelationship", @@ -540,7 +540,7 @@ "disposition": "deferred", "reason": "The `appEncryptionDeclarations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEncryptionDeclarations_appEncryptionDeclarationDocument_getToOneRelationship", @@ -548,15 +548,15 @@ "disposition": "deferred", "reason": "The `appEncryptionDeclarations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEncryptionDeclarations_builds_createToManyRelationship", "operationId": "appEncryptionDeclarations_builds_createToManyRelationship", "disposition": "deferred", - "reason": "Pinned Apple OpenAPI 4.4.1 marks this declaration-to-build relationship POST deprecated; equivalent relationship assignment is exposed through builds_updateInstance.", + "reason": "Pinned Apple OpenAPI 4.5 marks this declaration-to-build relationship POST deprecated; equivalent relationship assignment is exposed through builds_updateInstance.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventLocalizations_getInstance", @@ -564,7 +564,7 @@ "disposition": "deferred", "reason": "The `appEventLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventLocalizations_appEventScreenshots_getToManyRelated", @@ -572,7 +572,7 @@ "disposition": "deferred", "reason": "The `appEventLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventLocalizations_appEventVideoClips_getToManyRelated", @@ -580,7 +580,7 @@ "disposition": "deferred", "reason": "The `appEventLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventLocalizations_appEventScreenshots_getToManyRelationship", @@ -588,7 +588,7 @@ "disposition": "deferred", "reason": "The `appEventLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventLocalizations_appEventVideoClips_getToManyRelationship", @@ -596,7 +596,7 @@ "disposition": "deferred", "reason": "The `appEventLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventScreenshots_createInstance", @@ -604,7 +604,7 @@ "disposition": "deferred", "reason": "The `appEventScreenshots` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventScreenshots_deleteInstance", @@ -612,7 +612,7 @@ "disposition": "deferred", "reason": "The `appEventScreenshots` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventScreenshots_getInstance", @@ -620,7 +620,7 @@ "disposition": "deferred", "reason": "The `appEventScreenshots` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventScreenshots_updateInstance", @@ -628,7 +628,7 @@ "disposition": "deferred", "reason": "The `appEventScreenshots` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventVideoClips_createInstance", @@ -636,7 +636,7 @@ "disposition": "deferred", "reason": "The `appEventVideoClips` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventVideoClips_deleteInstance", @@ -644,7 +644,7 @@ "disposition": "deferred", "reason": "The `appEventVideoClips` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventVideoClips_getInstance", @@ -652,7 +652,7 @@ "disposition": "deferred", "reason": "The `appEventVideoClips` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEventVideoClips_updateInstance", @@ -660,7 +660,7 @@ "disposition": "deferred", "reason": "The `appEventVideoClips` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appEvents_localizations_getToManyRelationship", @@ -668,7 +668,7 @@ "disposition": "deferred", "reason": "The `appEvents` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfoLocalizations_getInstance", @@ -676,7 +676,7 @@ "disposition": "deferred", "reason": "The `appInfoLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_primaryCategory_getToOneRelated", @@ -684,7 +684,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_primarySubcategoryOne_getToOneRelated", @@ -692,7 +692,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_primarySubcategoryTwo_getToOneRelated", @@ -700,7 +700,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_ageRatingDeclaration_getToOneRelationship", @@ -708,7 +708,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_appInfoLocalizations_getToManyRelationship", @@ -716,7 +716,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_primaryCategory_getToOneRelationship", @@ -724,7 +724,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_primarySubcategoryOne_getToOneRelationship", @@ -732,7 +732,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_primarySubcategoryTwo_getToOneRelationship", @@ -740,7 +740,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_secondaryCategory_getToOneRelationship", @@ -748,7 +748,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_secondarySubcategoryOne_getToOneRelationship", @@ -756,7 +756,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_secondarySubcategoryTwo_getToOneRelationship", @@ -764,7 +764,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_territoryAgeRatings_getToManyRelationship", @@ -772,7 +772,7 @@ "disposition": "deferred", "reason": "The related-resource collection is exposed and returns both calculated ratings and territory details; this linkage-only endpoint would add IDs without practical rating data.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_secondaryCategory_getToOneRelated", @@ -780,7 +780,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_secondarySubcategoryOne_getToOneRelated", @@ -788,7 +788,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appInfos_secondarySubcategoryTwo_getToOneRelated", @@ -796,7 +796,7 @@ "disposition": "deferred", "reason": "The `appInfos` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPreviewSets_appPreviews_getToManyRelationship", @@ -804,7 +804,7 @@ "disposition": "deferred", "reason": "screenshots_list_previews returns full preview resources; this linkage-only relationship document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPriceSchedules_getInstance", @@ -812,7 +812,7 @@ "disposition": "deferred", "reason": "The `appPriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPriceSchedules_automaticPrices_getToManyRelated", @@ -820,7 +820,7 @@ "disposition": "deferred", "reason": "The `appPriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPriceSchedules_baseTerritory_getToOneRelated", @@ -828,7 +828,7 @@ "disposition": "deferred", "reason": "The `appPriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPriceSchedules_manualPrices_getToManyRelated", @@ -836,7 +836,7 @@ "disposition": "deferred", "reason": "The `appPriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPriceSchedules_automaticPrices_getToManyRelationship", @@ -844,7 +844,7 @@ "disposition": "deferred", "reason": "The `appPriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPriceSchedules_baseTerritory_getToOneRelationship", @@ -852,7 +852,7 @@ "disposition": "deferred", "reason": "The `appPriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPriceSchedules_manualPrices_getToManyRelationship", @@ -860,7 +860,7 @@ "disposition": "deferred", "reason": "The `appPriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appScreenshotSets_appScreenshots_getToManyRelationship", @@ -868,7 +868,7 @@ "disposition": "deferred", "reason": "screenshots_list returns full screenshot resources; this linkage-only relationship document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreReviewDetails_getInstance", @@ -876,7 +876,7 @@ "disposition": "deferred", "reason": "The `appStoreReviewDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreReviewDetails_appStoreReviewAttachments_getToManyRelationship", @@ -884,7 +884,7 @@ "disposition": "deferred", "reason": "review_attachments_list exposes the related attachment resources; the linkage-only relationship endpoint is deferred because it would duplicate IDs without attachment attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionExperimentTreatmentLocalizations_appPreviewSets_getToManyRelationship", @@ -892,7 +892,7 @@ "disposition": "deferred", "reason": "screenshots_list_preview_sets returns the full treatment-localization preview-set resources; this linkage-only document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionExperimentTreatmentLocalizations_appScreenshotSets_getToManyRelationship", @@ -900,7 +900,7 @@ "disposition": "deferred", "reason": "screenshots_list_sets returns the full treatment-localization screenshot-set resources; this linkage-only document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionExperimentTreatments_appStoreVersionExperimentTreatmentLocalizations_getToManyRelationship", @@ -908,7 +908,7 @@ "disposition": "deferred", "reason": "ppo_list_treatment_localizations returns full localization resources; this linkage-only relationship document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionExperiments_createInstance", @@ -916,7 +916,7 @@ "disposition": "deferred", "reason": "The legacy V1 experiment mutation is intentionally deferred; PPO tools use Apple's nondeprecated V2 experiment surface and shared treatment resources.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionExperiments_deleteInstance", @@ -924,7 +924,7 @@ "disposition": "deferred", "reason": "The legacy V1 experiment mutation is intentionally deferred; PPO tools use Apple's nondeprecated V2 experiment surface and shared treatment resources.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionExperiments_getInstance", @@ -932,7 +932,7 @@ "disposition": "deferred", "reason": "The legacy V1 experiment read is intentionally deferred; PPO tools use Apple's nondeprecated V2 experiment surface and shared treatment resources.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionExperiments_updateInstance", @@ -940,7 +940,7 @@ "disposition": "deferred", "reason": "The legacy V1 experiment mutation is intentionally deferred; PPO tools use Apple's nondeprecated V2 experiment surface and shared treatment resources.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionExperiments_appStoreVersionExperimentTreatments_getToManyRelated", @@ -948,7 +948,7 @@ "disposition": "deferred", "reason": "This legacy V1 experiment relationship is intentionally deferred; ppo_list_treatments uses the nondeprecated V2 experiment relationship and returns full treatment resources.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionExperiments_appStoreVersionExperimentTreatments_getToManyRelationship", @@ -956,7 +956,7 @@ "disposition": "deferred", "reason": "This legacy V1 linkage-only relationship is intentionally deferred; ppo_list_treatments uses the nondeprecated V2 relationship and returns full treatment resources.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionLocalizations_getInstance", @@ -964,7 +964,7 @@ "disposition": "deferred", "reason": "Version-localization list/create/update/delete operations are exposed, but a dedicated direct-get tool is not yet published; this read remains deferred pending a distinct practical use case.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionLocalizations_appPreviewSets_getToManyRelationship", @@ -972,7 +972,7 @@ "disposition": "deferred", "reason": "screenshots_list_preview_sets returns full version-localization preview-set resources; this linkage-only document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionLocalizations_appScreenshotSets_getToManyRelationship", @@ -980,7 +980,7 @@ "disposition": "deferred", "reason": "screenshots_list_sets returns full version-localization screenshot-set resources; this linkage-only document is deferred because it duplicates IDs without attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionLocalizations_searchKeywords_deleteToManyRelationship", @@ -988,7 +988,7 @@ "disposition": "deferred", "reason": "Search-keyword targeting for standard App Store version localizations is not yet exposed; the current search-keyword tools are scoped to apps and Custom Product Page localizations.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionLocalizations_searchKeywords_getToManyRelationship", @@ -996,7 +996,7 @@ "disposition": "deferred", "reason": "Search-keyword targeting for standard App Store version localizations is not yet exposed; the current search-keyword tools are scoped to apps and Custom Product Page localizations.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionLocalizations_searchKeywords_createToManyRelationship", @@ -1004,7 +1004,7 @@ "disposition": "deferred", "reason": "Search-keyword targeting for standard App Store version localizations is not yet exposed; the current search-keyword tools are scoped to apps and Custom Product Page localizations.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionLocalizations_searchKeywords_getToManyRelated", @@ -1012,7 +1012,7 @@ "disposition": "deferred", "reason": "Search-keyword targeting for standard App Store version localizations is not yet exposed; the current search-keyword tools are scoped to apps and Custom Product Page localizations.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionPromotions_createInstance", @@ -1020,7 +1020,7 @@ "disposition": "deferred", "reason": "The `appStoreVersionPromotions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionSubmissions_deleteInstance", @@ -1028,7 +1028,7 @@ "disposition": "deferred", "reason": "The `appStoreVersionSubmissions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_alternativeDistributionPackage_getToOneRelated", @@ -1036,7 +1036,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appClipDefaultExperience_getToOneRelated", @@ -1044,7 +1044,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appStoreVersionExperiments_getToManyRelated", @@ -1052,7 +1052,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appStoreVersionSubmission_getToOneRelated", @@ -1060,7 +1060,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_gameCenterAppVersion_getToOneRelated", @@ -1068,7 +1068,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_alternativeDistributionPackage_getToOneRelationship", @@ -1076,7 +1076,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appClipDefaultExperience_getToOneRelationship", @@ -1084,7 +1084,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appClipDefaultExperience_updateToOneRelationship", @@ -1092,7 +1092,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appStoreReviewDetail_getToOneRelationship", @@ -1100,7 +1100,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appStoreVersionExperiments_getToManyRelationship", @@ -1108,7 +1108,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appStoreVersionExperimentsV2_getToManyRelationship", @@ -1116,7 +1116,7 @@ "disposition": "deferred", "reason": "ppo_list_version_experiments returns full V2 experiment resources; this linkage-only relationship document is deferred because it duplicates IDs without experiment attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appStoreVersionLocalizations_getToManyRelationship", @@ -1124,7 +1124,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appStoreVersionPhasedRelease_getToOneRelationship", @@ -1132,7 +1132,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_appStoreVersionSubmission_getToOneRelationship", @@ -1140,7 +1140,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_build_getToOneRelationship", @@ -1148,7 +1148,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_customerReviews_getToManyRelationship", @@ -1156,7 +1156,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_gameCenterAppVersion_getToOneRelationship", @@ -1164,7 +1164,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_routingAppCoverage_getToOneRelationship", @@ -1172,7 +1172,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersions_routingAppCoverage_getToOneRelated", @@ -1180,7 +1180,7 @@ "disposition": "deferred", "reason": "The `appStoreVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appTags_updateInstance", @@ -1188,7 +1188,7 @@ "disposition": "deferred", "reason": "The `appTags` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appTags_territories_getToManyRelationship", @@ -1196,7 +1196,7 @@ "disposition": "deferred", "reason": "The `appTags` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appTags_territories_getToManyRelated", @@ -1204,7 +1204,7 @@ "disposition": "deferred", "reason": "The `appTags` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_updateInstance", @@ -1212,7 +1212,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_alternativeDistributionKey_getToOneRelated", @@ -1220,7 +1220,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_androidToIosAppMappingDetails_getToManyRelated", @@ -1228,7 +1228,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appClips_getToManyRelated", @@ -1236,7 +1236,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appTags_getToManyRelated", @@ -1244,7 +1244,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_backgroundAssets_getToManyRelated", @@ -1252,7 +1252,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_betaGroups_getToManyRelated", @@ -1260,7 +1260,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_betaLicenseAgreement_getToOneRelated", @@ -1268,7 +1268,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_builds_getToManyRelated", @@ -1276,7 +1276,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_gameCenterDetail_getToOneRelated", @@ -1284,7 +1284,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_gameCenterEnabledVersions_getToManyRelated", @@ -1292,7 +1292,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_inAppPurchases_getToManyRelated", @@ -1300,7 +1300,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_marketplaceSearchDetail_getToOneRelated", @@ -1308,7 +1308,15 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" + }, + { + "id": "deferred.apps_performanceOverviews_getToManyRelated", + "operationId": "apps_performanceOverviews_getToManyRelated", + "disposition": "deferred", + "reason": "Apple 4.5 adds app performance overviews; the `apps` performanceOverviews relationship is not yet exposed by asc-mcp.", + "owner": "asc-mcp", + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_preReleaseVersions_getToManyRelated", @@ -1316,7 +1324,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_alternativeDistributionKey_getToOneRelationship", @@ -1324,7 +1332,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_analyticsReportRequests_getToManyRelationship", @@ -1332,7 +1340,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_androidToIosAppMappingDetails_getToManyRelationship", @@ -1340,7 +1348,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appAvailabilityV2_getToOneRelationship", @@ -1348,7 +1356,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appClips_getToManyRelationship", @@ -1356,7 +1364,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appCustomProductPages_getToManyRelationship", @@ -1364,7 +1372,7 @@ "disposition": "deferred", "reason": "custom_pages_list returns full app-owned custom product page resources; this linkage-only relationship document is deferred because it duplicates IDs without page attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appEncryptionDeclarations_getToManyRelationship", @@ -1372,7 +1380,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appEvents_getToManyRelationship", @@ -1380,7 +1388,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appInfos_getToManyRelationship", @@ -1388,7 +1396,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appPricePoints_getToManyRelationship", @@ -1396,7 +1404,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appPriceSchedule_getToOneRelationship", @@ -1404,7 +1412,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appStoreVersionExperimentsV2_getToManyRelationship", @@ -1412,7 +1420,7 @@ "disposition": "deferred", "reason": "ppo_list_experiments returns full app-owned V2 experiment resources; this linkage-only relationship document is deferred because it duplicates IDs without experiment attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appStoreVersions_getToManyRelationship", @@ -1420,7 +1428,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_appTags_getToManyRelationship", @@ -1428,7 +1436,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_backgroundAssets_getToManyRelationship", @@ -1436,7 +1444,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_betaAppLocalizations_getToManyRelationship", @@ -1444,7 +1452,7 @@ "disposition": "deferred", "reason": "The related BetaAppLocalization resource list is exposed; the raw app-to-localizations linkage collection is not exposed.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_betaAppReviewDetail_getToOneRelationship", @@ -1452,7 +1460,7 @@ "disposition": "deferred", "reason": "The related BetaAppReviewDetail resource is exposed; the raw app-to-review-detail linkage endpoint is not exposed.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_betaFeedbackCrashSubmissions_getToManyRelationship", @@ -1460,7 +1468,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_betaFeedbackScreenshotSubmissions_getToManyRelationship", @@ -1468,7 +1476,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_betaGroups_getToManyRelationship", @@ -1476,7 +1484,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_betaLicenseAgreement_getToOneRelationship", @@ -1484,7 +1492,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_betaTesters_deleteToManyRelationship", @@ -1492,7 +1500,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_buildUploads_getToManyRelationship", @@ -1500,7 +1508,7 @@ "disposition": "deferred", "reason": "build_uploads_list exposes the related BuildUpload resources; the linkage-only relationship endpoint is deferred because it would duplicate IDs without upload attributes or processing state.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_builds_getToManyRelationship", @@ -1508,7 +1516,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_ciProduct_getToOneRelationship", @@ -1516,7 +1524,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_app_product_get is a functional superset that returns the same product identity together with validated product attributes and relationship context.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_customerReviews_getToManyRelationship", @@ -1524,7 +1532,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_endUserLicenseAgreement_getToOneRelationship", @@ -1532,7 +1540,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_gameCenterDetail_getToOneRelationship", @@ -1540,7 +1548,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_gameCenterEnabledVersions_getToManyRelationship", @@ -1548,7 +1556,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_inAppPurchases_getToManyRelationship", @@ -1556,7 +1564,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_inAppPurchasesV2_getToManyRelationship", @@ -1564,7 +1572,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_marketplaceSearchDetail_getToOneRelationship", @@ -1572,7 +1580,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_preReleaseVersions_getToManyRelationship", @@ -1580,7 +1588,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_reviewSubmissions_getToManyRelationship", @@ -1588,7 +1596,7 @@ "disposition": "deferred", "reason": "`review_submissions_list` uses Apple's filtered collection endpoint to return submissions for one required app with state and platform filters; this app-scoped linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_searchKeywords_getToManyRelationship", @@ -1596,7 +1604,7 @@ "disposition": "deferred", "reason": "apps_list_search_keywords returns full related keyword resources; this linkage-only relationship document is deferred because it duplicates IDs without keyword attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_subscriptionGracePeriod_getToOneRelationship", @@ -1604,7 +1612,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_subscriptionGroups_getToManyRelationship", @@ -1612,7 +1620,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_webhooks_getToManyRelationship", @@ -1620,7 +1628,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_reviewSubmissions_getToManyRelated", @@ -1628,7 +1636,7 @@ "disposition": "deferred", "reason": "`review_submissions_list` exposes the equivalent app-owned submission collection through Apple's required filter[app] query and adds state, platform, include, and strict pagination controls; the alternate related-resource path is intentionally deferred.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.apps_subscriptionGracePeriod_getToOneRelated", @@ -1636,7 +1644,7 @@ "disposition": "deferred", "reason": "The `apps` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssetUploadFiles_createInstance", @@ -1644,7 +1652,7 @@ "disposition": "deferred", "reason": "The `backgroundAssetUploadFiles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssetUploadFiles_getInstance", @@ -1652,7 +1660,7 @@ "disposition": "deferred", "reason": "The `backgroundAssetUploadFiles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssetUploadFiles_updateInstance", @@ -1660,7 +1668,7 @@ "disposition": "deferred", "reason": "The `backgroundAssetUploadFiles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssetVersionAppStoreReleases_getInstance", @@ -1668,7 +1676,7 @@ "disposition": "deferred", "reason": "The `backgroundAssetVersionAppStoreReleases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssetVersionExternalBetaReleases_getInstance", @@ -1676,7 +1684,7 @@ "disposition": "deferred", "reason": "The `backgroundAssetVersionExternalBetaReleases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssetVersionInternalBetaReleases_getInstance", @@ -1684,7 +1692,7 @@ "disposition": "deferred", "reason": "The `backgroundAssetVersionInternalBetaReleases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssetVersions_createInstance", @@ -1692,7 +1700,7 @@ "disposition": "deferred", "reason": "The `backgroundAssetVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssetVersions_getInstance", @@ -1700,7 +1708,7 @@ "disposition": "deferred", "reason": "The `backgroundAssetVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssetVersions_backgroundAssetUploadFiles_getToManyRelated", @@ -1708,7 +1716,7 @@ "disposition": "deferred", "reason": "The `backgroundAssetVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssetVersions_backgroundAssetUploadFiles_getToManyRelationship", @@ -1716,7 +1724,7 @@ "disposition": "deferred", "reason": "The `backgroundAssetVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssets_createInstance", @@ -1724,7 +1732,7 @@ "disposition": "deferred", "reason": "The `backgroundAssets` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssets_getInstance", @@ -1732,7 +1740,7 @@ "disposition": "deferred", "reason": "The `backgroundAssets` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssets_updateInstance", @@ -1740,7 +1748,7 @@ "disposition": "deferred", "reason": "The `backgroundAssets` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssets_versions_getToManyRelationship", @@ -1748,7 +1756,7 @@ "disposition": "deferred", "reason": "The `backgroundAssets` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.backgroundAssets_versions_getToManyRelated", @@ -1756,7 +1764,7 @@ "disposition": "deferred", "reason": "The `backgroundAssets` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppClipInvocationLocalizations_createInstance", @@ -1764,7 +1772,7 @@ "disposition": "deferred", "reason": "The `betaAppClipInvocationLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppClipInvocationLocalizations_deleteInstance", @@ -1772,7 +1780,7 @@ "disposition": "deferred", "reason": "The `betaAppClipInvocationLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppClipInvocationLocalizations_updateInstance", @@ -1780,7 +1788,7 @@ "disposition": "deferred", "reason": "The `betaAppClipInvocationLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppClipInvocations_createInstance", @@ -1788,7 +1796,7 @@ "disposition": "deferred", "reason": "The `betaAppClipInvocations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppClipInvocations_deleteInstance", @@ -1796,7 +1804,7 @@ "disposition": "deferred", "reason": "The `betaAppClipInvocations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppClipInvocations_getInstance", @@ -1804,7 +1812,7 @@ "disposition": "deferred", "reason": "The `betaAppClipInvocations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppClipInvocations_updateInstance", @@ -1812,7 +1820,7 @@ "disposition": "deferred", "reason": "The `betaAppClipInvocations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppLocalizations_getCollection", @@ -1820,7 +1828,7 @@ "disposition": "deferred", "reason": "The app-scoped related-resource list is exposed; the direct BetaAppLocalization collection and its app filter are not exposed.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppLocalizations_app_getToOneRelated", @@ -1828,7 +1836,7 @@ "disposition": "deferred", "reason": "BetaAppLocalization resources are exposed, but the dedicated related App resource endpoint is not exposed.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppLocalizations_app_getToOneRelationship", @@ -1836,7 +1844,7 @@ "disposition": "deferred", "reason": "BetaAppLocalization resources are exposed, but the raw App relationship-linkage endpoint is not exposed.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppReviewDetails_getCollection", @@ -1844,7 +1852,7 @@ "disposition": "deferred", "reason": "The app-scoped related review detail is exposed; the direct BetaAppReviewDetail collection is not exposed.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppReviewDetails_getInstance", @@ -1852,7 +1860,7 @@ "disposition": "deferred", "reason": "The app-scoped related review detail is exposed; direct BetaAppReviewDetail lookup by detail ID is not exposed.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppReviewDetails_app_getToOneRelated", @@ -1860,7 +1868,7 @@ "disposition": "deferred", "reason": "BetaAppReviewDetail resources are exposed, but the dedicated related App resource endpoint is not exposed.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppReviewDetails_app_getToOneRelationship", @@ -1868,7 +1876,7 @@ "disposition": "deferred", "reason": "BetaAppReviewDetail resources are exposed, but the raw App relationship-linkage endpoint is not exposed.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaAppReviewSubmissions_build_getToOneRelated", @@ -1876,7 +1884,7 @@ "disposition": "deferred", "reason": "Submission tools expand Build resources with include=build; the dedicated related Build resource endpoint is not exposed.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaBuildLocalizations_deleteInstance", @@ -1884,7 +1892,7 @@ "disposition": "deferred", "reason": "The `betaBuildLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaBuildLocalizations_getInstance", @@ -1892,7 +1900,7 @@ "disposition": "deferred", "reason": "The `betaBuildLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaBuildLocalizations_build_getToOneRelated", @@ -1900,7 +1908,7 @@ "disposition": "deferred", "reason": "The `betaBuildLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaBuildLocalizations_build_getToOneRelationship", @@ -1908,7 +1916,7 @@ "disposition": "deferred", "reason": "The `betaBuildLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaFeedbackCrashSubmissions_crashLog_getToOneRelationship", @@ -1916,7 +1924,7 @@ "disposition": "deferred", "reason": "The `betaFeedbackCrashSubmissions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaGroups_app_getToOneRelated", @@ -1924,7 +1932,7 @@ "disposition": "deferred", "reason": "The related App resource lookup is deferred; current beta-group tools accept or filter by the App identifier without projecting the App resource.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaGroups_builds_getToManyRelated", @@ -1932,7 +1940,7 @@ "disposition": "deferred", "reason": "Reading the related Build resources for a beta group is deferred; current beta-group tools manage build membership but do not project Build resources.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaGroups_app_getToOneRelationship", @@ -1940,7 +1948,7 @@ "disposition": "deferred", "reason": "The linkage-only App relationship is deferred with the related App lookup; current beta-group tools accept or filter by the App identifier without a separate relationship read.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaGroups_betaRecruitmentCriteria_getToOneRelationship", @@ -1948,7 +1956,7 @@ "disposition": "deferred", "reason": "`beta_groups_get_recruitment_criteria` uses the related-resource endpoint to return the criterion identity and attributes after confirming the exact beta group; the linkage-only response is intentionally deferred because it is strictly less informative.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaGroups_betaRecruitmentCriterionCompatibleBuildCheck_getToOneRelationship", @@ -1956,7 +1964,7 @@ "disposition": "deferred", "reason": "`beta_groups_check_recruitment_compatibility` uses the related-resource endpoint to return the check identity and compatibility attribute after confirming the exact beta group; the linkage-only response is intentionally deferred because it is strictly less informative.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaGroups_betaTesters_getToManyRelationship", @@ -1964,7 +1972,7 @@ "disposition": "deferred", "reason": "`beta_groups_list_testers` returns the related BetaTester resources for the group; the linkage-only identifier response is intentionally deferred because it is strictly less informative.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaGroups_builds_getToManyRelationship", @@ -1972,7 +1980,7 @@ "disposition": "deferred", "reason": "The linkage-only Build relationship read is deferred with the richer related Build resource lookup; current tools manage build membership without a separate read projection.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaLicenseAgreements_app_getToOneRelated", @@ -1980,7 +1988,7 @@ "disposition": "deferred", "reason": "The `betaLicenseAgreements` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaLicenseAgreements_app_getToOneRelationship", @@ -1988,7 +1996,7 @@ "disposition": "deferred", "reason": "The `betaLicenseAgreements` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaTesters_betaGroups_getToManyRelated", @@ -1996,7 +2004,7 @@ "disposition": "deferred", "reason": "The `betaTesters` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaTesters_builds_getToManyRelated", @@ -2004,7 +2012,7 @@ "disposition": "deferred", "reason": "The `betaTesters` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaTesters_apps_getToManyRelationship", @@ -2012,7 +2020,7 @@ "disposition": "deferred", "reason": "The `betaTesters` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaTesters_betaGroups_getToManyRelationship", @@ -2020,7 +2028,7 @@ "disposition": "deferred", "reason": "The `betaTesters` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.betaTesters_builds_getToManyRelationship", @@ -2028,7 +2036,7 @@ "disposition": "deferred", "reason": "The `betaTesters` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBetaDetails_getCollection", @@ -2036,7 +2044,7 @@ "disposition": "deferred", "reason": "The `buildBetaDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBetaDetails_getInstance", @@ -2044,7 +2052,7 @@ "disposition": "deferred", "reason": "The public beta-detail tool resolves through a build ID and does not accept a BuildBetaDetail resource ID.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBetaDetails_build_getToOneRelated", @@ -2052,7 +2060,7 @@ "disposition": "deferred", "reason": "The `buildBetaDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBetaDetails_build_getToOneRelationship", @@ -2060,7 +2068,7 @@ "disposition": "deferred", "reason": "The `buildBetaDetails` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBundles_appClipDomainCacheStatus_getToOneRelated", @@ -2068,7 +2076,7 @@ "disposition": "deferred", "reason": "The `buildBundles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBundles_appClipDomainDebugStatus_getToOneRelated", @@ -2076,7 +2084,7 @@ "disposition": "deferred", "reason": "The `buildBundles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBundles_betaAppClipInvocations_getToManyRelated", @@ -2084,7 +2092,7 @@ "disposition": "deferred", "reason": "The `buildBundles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBundles_buildBundleFileSizes_getToManyRelated", @@ -2092,7 +2100,7 @@ "disposition": "deferred", "reason": "The `buildBundles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBundles_appClipDomainCacheStatus_getToOneRelationship", @@ -2100,7 +2108,7 @@ "disposition": "deferred", "reason": "The `buildBundles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBundles_appClipDomainDebugStatus_getToOneRelationship", @@ -2108,7 +2116,7 @@ "disposition": "deferred", "reason": "The `buildBundles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBundles_betaAppClipInvocations_getToManyRelationship", @@ -2116,7 +2124,7 @@ "disposition": "deferred", "reason": "The `buildBundles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildBundles_buildBundleFileSizes_getToManyRelationship", @@ -2124,7 +2132,7 @@ "disposition": "deferred", "reason": "The `buildBundles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.buildUploads_buildUploadFiles_getToManyRelationship", @@ -2132,7 +2140,7 @@ "disposition": "deferred", "reason": "build_uploads_list_files exposes the related BuildUploadFile resources; the linkage-only relationship endpoint is deferred because it would duplicate IDs without file attributes or delivery state.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_app_getToOneRelated", @@ -2140,7 +2148,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_appStoreVersion_getToOneRelated", @@ -2148,7 +2156,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_betaAppReviewSubmission_getToOneRelated", @@ -2156,7 +2164,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_icons_getToManyRelated", @@ -2164,7 +2172,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_preReleaseVersion_getToOneRelated", @@ -2172,7 +2180,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_app_getToOneRelationship", @@ -2180,7 +2188,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_appEncryptionDeclaration_getToOneRelationship", @@ -2188,15 +2196,15 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_appEncryptionDeclaration_updateToOneRelationship", "operationId": "builds_appEncryptionDeclaration_updateToOneRelationship", "disposition": "deferred", - "reason": "Pinned Apple OpenAPI 4.4.1 omits a deprecated flag, while current Apple DocC marks the direct relationship PATCH deprecated and directs clients to Modify a build; asc-mcp exposes that replacement through builds_updateInstance.", + "reason": "Pinned Apple OpenAPI 4.5 omits a deprecated flag, while current Apple DocC marks the direct relationship PATCH deprecated and directs clients to Modify a build; asc-mcp exposes that replacement through builds_updateInstance.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_appStoreVersion_getToOneRelationship", @@ -2204,7 +2212,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_betaAppReviewSubmission_getToOneRelationship", @@ -2212,7 +2220,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_betaBuildLocalizations_getToManyRelationship", @@ -2220,7 +2228,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_betaGroups_deleteToManyRelationship", @@ -2228,7 +2236,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_buildBetaDetail_getToOneRelationship", @@ -2236,7 +2244,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_diagnosticSignatures_getToManyRelationship", @@ -2244,7 +2252,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_icons_getToManyRelationship", @@ -2252,7 +2260,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_individualTesters_getToManyRelationship", @@ -2260,7 +2268,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.builds_preReleaseVersion_getToOneRelationship", @@ -2268,7 +2276,7 @@ "disposition": "deferred", "reason": "The `builds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.bundleIdCapabilities_updateInstance", @@ -2276,7 +2284,7 @@ "disposition": "deferred", "reason": "The `bundleIdCapabilities` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.bundleIds_updateInstance", @@ -2284,7 +2292,7 @@ "disposition": "deferred", "reason": "The `bundleIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.bundleIds_app_getToOneRelated", @@ -2292,7 +2300,7 @@ "disposition": "deferred", "reason": "The `bundleIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.bundleIds_profiles_getToManyRelated", @@ -2300,7 +2308,7 @@ "disposition": "deferred", "reason": "The `bundleIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.bundleIds_app_getToOneRelationship", @@ -2308,7 +2316,7 @@ "disposition": "deferred", "reason": "The `bundleIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.bundleIds_bundleIdCapabilities_getToManyRelationship", @@ -2316,7 +2324,7 @@ "disposition": "deferred", "reason": "The `bundleIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.bundleIds_profiles_getToManyRelationship", @@ -2324,7 +2332,7 @@ "disposition": "deferred", "reason": "The `bundleIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.certificates_createInstance", @@ -2332,7 +2340,7 @@ "disposition": "deferred", "reason": "The `certificates` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.certificates_updateInstance", @@ -2340,7 +2348,7 @@ "disposition": "deferred", "reason": "The `certificates` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.certificates_passTypeId_getToOneRelated", @@ -2348,7 +2356,7 @@ "disposition": "deferred", "reason": "The `certificates` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.certificates_passTypeId_getToOneRelationship", @@ -2356,7 +2364,7 @@ "disposition": "deferred", "reason": "The `certificates` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciBuildActions_artifacts_getToManyRelationship", @@ -2364,7 +2372,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_action_artifacts_list is a functional superset that returns artifact identities together with artifact attributes and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciBuildActions_buildRun_getToOneRelationship", @@ -2372,7 +2380,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_action_build_run_get is a functional superset that returns the build-run identity together with validated build-run attributes and requested related resources.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciBuildActions_issues_getToManyRelationship", @@ -2380,7 +2388,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_action_issues_list is a functional superset that returns issue identities together with issue attributes and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciBuildActions_testResults_getToManyRelationship", @@ -2388,7 +2396,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_action_test_results_list is a functional superset that returns test-result identities together with result attributes and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciBuildRuns_actions_getToManyRelationship", @@ -2396,7 +2404,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_build_run_actions_list is a functional superset that returns action identities together with action attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciBuildRuns_builds_getToManyRelationship", @@ -2404,7 +2412,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_build_run_builds_list is a functional superset that returns build identities together with build attributes and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciMacOsVersions_xcodeVersions_getToManyRelationship", @@ -2412,7 +2420,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_macos_version_xcode_versions_list is a functional superset that returns Xcode-version identities together with version attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciProducts_additionalRepositories_getToManyRelationship", @@ -2420,7 +2428,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_product_additional_repositories_list is a functional superset that returns repository identities together with repository attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciProducts_app_getToOneRelationship", @@ -2428,7 +2436,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_product_app_get is a functional superset that returns the app identity together with compact membership attributes and canonical resource context.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciProducts_buildRuns_getToManyRelationship", @@ -2436,7 +2444,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_product_build_runs_list is a functional superset that returns build-run identities together with build-run attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciProducts_primaryRepositories_getToManyRelationship", @@ -2444,7 +2452,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_product_primary_repositories_list is a functional superset that returns repository identities together with repository attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciProducts_workflows_getToManyRelationship", @@ -2452,7 +2460,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_product_workflows_list is a functional superset that returns workflow identities together with workflow attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciWorkflows_buildRuns_getToManyRelationship", @@ -2460,7 +2468,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_workflow_build_runs_list is a functional superset that returns build-run identities together with build-run attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciWorkflows_repository_getToOneRelationship", @@ -2468,7 +2476,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_workflow_repository_get is a functional superset that returns the repository identity together with repository attributes and validated included resources.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.ciXcodeVersions_macOsVersions_getToManyRelationship", @@ -2476,7 +2484,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_xcode_version_macos_versions_list is a functional superset that returns macOS-version identities together with version attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.customerReviewResponses_getInstance", @@ -2484,7 +2492,7 @@ "disposition": "deferred", "reason": "The `customerReviewResponses` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.customerReviews_response_getToOneRelationship", @@ -2492,7 +2500,7 @@ "disposition": "deferred", "reason": "The `customerReviews` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.devices_getInstance", @@ -2500,7 +2508,7 @@ "disposition": "deferred", "reason": "The `devices` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.endAppAvailabilityPreOrders_createInstance", @@ -2508,7 +2516,7 @@ "disposition": "deferred", "reason": "The `endAppAvailabilityPreOrders` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.endUserLicenseAgreements_deleteInstance", @@ -2516,7 +2524,7 @@ "disposition": "deferred", "reason": "The `endUserLicenseAgreements` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.endUserLicenseAgreements_getInstance", @@ -2524,7 +2532,7 @@ "disposition": "deferred", "reason": "The `endUserLicenseAgreements` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.endUserLicenseAgreements_territories_getToManyRelationship", @@ -2532,7 +2540,7 @@ "disposition": "deferred", "reason": "The `endUserLicenseAgreements` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.endUserLicenseAgreements_territories_getToManyRelated", @@ -2540,7 +2548,7 @@ "disposition": "deferred", "reason": "The `endUserLicenseAgreements` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchaseAvailabilities_availableTerritories_getToManyRelationship", @@ -2548,7 +2556,7 @@ "disposition": "deferred", "reason": "The `inAppPurchaseAvailabilities` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchaseContents_getInstance", @@ -2556,7 +2564,7 @@ "disposition": "deferred", "reason": "The `inAppPurchaseContents` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchaseLocalizations_getInstance", @@ -2564,7 +2572,7 @@ "disposition": "deferred", "reason": "The `inAppPurchaseLocalizations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchaseOfferCodes_customCodes_getToManyRelated", @@ -2572,7 +2580,7 @@ "disposition": "deferred", "reason": "The `inAppPurchaseOfferCodes` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchaseOfferCodes_customCodes_getToManyRelationship", @@ -2580,7 +2588,7 @@ "disposition": "deferred", "reason": "The `inAppPurchaseOfferCodes` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchaseOfferCodes_oneTimeUseCodes_getToManyRelationship", @@ -2588,7 +2596,7 @@ "disposition": "deferred", "reason": "The `inAppPurchaseOfferCodes` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchaseOfferCodes_prices_getToManyRelationship", @@ -2596,7 +2604,7 @@ "disposition": "deferred", "reason": "The `inAppPurchaseOfferCodes` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasePricePoints_equalizations_getToManyRelationship", @@ -2604,7 +2612,7 @@ "disposition": "deferred", "reason": "The `inAppPurchasePricePoints` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasePriceSchedules_getInstance", @@ -2612,7 +2620,7 @@ "disposition": "deferred", "reason": "The `inAppPurchasePriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasePriceSchedules_baseTerritory_getToOneRelated", @@ -2620,7 +2628,7 @@ "disposition": "deferred", "reason": "The `inAppPurchasePriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasePriceSchedules_automaticPrices_getToManyRelationship", @@ -2628,7 +2636,7 @@ "disposition": "deferred", "reason": "The `inAppPurchasePriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasePriceSchedules_baseTerritory_getToOneRelationship", @@ -2636,7 +2644,7 @@ "disposition": "deferred", "reason": "The `inAppPurchasePriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasePriceSchedules_manualPrices_getToManyRelationship", @@ -2644,7 +2652,7 @@ "disposition": "deferred", "reason": "The `inAppPurchasePriceSchedules` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchaseVersions_image_getToOneRelationship", @@ -2652,7 +2660,7 @@ "disposition": "deferred", "reason": "`iap_get_version_image` returns the singular related review image itself; the linkage-only relationship document would duplicate that workflow without additional public value.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchaseVersions_images_getToManyRelationship", @@ -2660,7 +2668,7 @@ "disposition": "deferred", "reason": "The plural IAP image relationship is semantically ambiguous beside Apple's documented singular review screenshot, so its linkage-only document remains deferred with the plural related-resource endpoint.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchaseVersions_localizations_getToManyRelationship", @@ -2668,7 +2676,7 @@ "disposition": "deferred", "reason": "`iap_list_version_localizations` returns the related localization resources and IDs; the linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchases_getInstance", @@ -2676,7 +2684,7 @@ "disposition": "deferred", "reason": "The `inAppPurchases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.merchantIds_getCollection", @@ -2684,7 +2692,7 @@ "disposition": "deferred", "reason": "The `merchantIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.merchantIds_createInstance", @@ -2692,7 +2700,7 @@ "disposition": "deferred", "reason": "The `merchantIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.merchantIds_deleteInstance", @@ -2700,7 +2708,7 @@ "disposition": "deferred", "reason": "The `merchantIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.merchantIds_getInstance", @@ -2708,7 +2716,7 @@ "disposition": "deferred", "reason": "The `merchantIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.merchantIds_updateInstance", @@ -2716,7 +2724,7 @@ "disposition": "deferred", "reason": "The `merchantIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.merchantIds_certificates_getToManyRelated", @@ -2724,7 +2732,7 @@ "disposition": "deferred", "reason": "The `merchantIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.merchantIds_certificates_getToManyRelationship", @@ -2732,7 +2740,7 @@ "disposition": "deferred", "reason": "The `merchantIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.nominations_getCollection", @@ -2740,7 +2748,7 @@ "disposition": "deferred", "reason": "The `nominations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.nominations_createInstance", @@ -2748,7 +2756,7 @@ "disposition": "deferred", "reason": "The `nominations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.nominations_deleteInstance", @@ -2756,7 +2764,7 @@ "disposition": "deferred", "reason": "The `nominations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.nominations_getInstance", @@ -2764,7 +2772,7 @@ "disposition": "deferred", "reason": "The `nominations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.nominations_updateInstance", @@ -2772,7 +2780,7 @@ "disposition": "deferred", "reason": "The `nominations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.passTypeIds_getCollection", @@ -2780,7 +2788,7 @@ "disposition": "deferred", "reason": "The `passTypeIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.passTypeIds_createInstance", @@ -2788,7 +2796,7 @@ "disposition": "deferred", "reason": "The `passTypeIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.passTypeIds_deleteInstance", @@ -2796,7 +2804,7 @@ "disposition": "deferred", "reason": "The `passTypeIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.passTypeIds_getInstance", @@ -2804,7 +2812,7 @@ "disposition": "deferred", "reason": "The `passTypeIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.passTypeIds_updateInstance", @@ -2812,7 +2820,7 @@ "disposition": "deferred", "reason": "The `passTypeIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.passTypeIds_certificates_getToManyRelated", @@ -2820,7 +2828,7 @@ "disposition": "deferred", "reason": "The `passTypeIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.passTypeIds_certificates_getToManyRelationship", @@ -2828,7 +2836,7 @@ "disposition": "deferred", "reason": "The `passTypeIds` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.preReleaseVersions_app_getToOneRelated", @@ -2836,7 +2844,7 @@ "disposition": "deferred", "reason": "The `preReleaseVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.preReleaseVersions_app_getToOneRelationship", @@ -2844,7 +2852,7 @@ "disposition": "deferred", "reason": "The `preReleaseVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.preReleaseVersions_builds_getToManyRelationship", @@ -2852,7 +2860,7 @@ "disposition": "deferred", "reason": "The `preReleaseVersions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.profiles_bundleId_getToOneRelated", @@ -2860,7 +2868,7 @@ "disposition": "deferred", "reason": "The `profiles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.profiles_certificates_getToManyRelated", @@ -2868,7 +2876,7 @@ "disposition": "deferred", "reason": "The `profiles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.profiles_devices_getToManyRelated", @@ -2876,7 +2884,7 @@ "disposition": "deferred", "reason": "The `profiles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.profiles_bundleId_getToOneRelationship", @@ -2884,7 +2892,7 @@ "disposition": "deferred", "reason": "The `profiles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.profiles_certificates_getToManyRelationship", @@ -2892,7 +2900,7 @@ "disposition": "deferred", "reason": "The `profiles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.profiles_devices_getToManyRelationship", @@ -2900,7 +2908,7 @@ "disposition": "deferred", "reason": "The `profiles` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.reviewSubmissions_items_getToManyRelationship", @@ -2908,7 +2916,7 @@ "disposition": "deferred", "reason": "`review_submissions_list_items` returns typed review item resources and IDs for recovery; the linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.routingAppCoverages_createInstance", @@ -2916,7 +2924,7 @@ "disposition": "deferred", "reason": "The `routingAppCoverages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.routingAppCoverages_deleteInstance", @@ -2924,7 +2932,7 @@ "disposition": "deferred", "reason": "The `routingAppCoverages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.routingAppCoverages_getInstance", @@ -2932,7 +2940,7 @@ "disposition": "deferred", "reason": "The `routingAppCoverages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.routingAppCoverages_updateInstance", @@ -2940,7 +2948,7 @@ "disposition": "deferred", "reason": "The `routingAppCoverages` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.scmProviders_repositories_getToManyRelationship", @@ -2948,7 +2956,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_scm_provider_repositories_list is a functional superset that returns repository identities together with repository attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.scmRepositories_gitReferences_getToManyRelationship", @@ -2956,7 +2964,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_scm_repository_git_references_list is a functional superset that returns Git-reference identities together with reference attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.scmRepositories_pullRequests_getToManyRelationship", @@ -2964,7 +2972,7 @@ "disposition": "deferred", "reason": "This ID-only linkage endpoint is intentionally deferred because xcode_cloud_scm_repository_pull_requests_list is a functional superset that returns pull-request identities together with pull-request attributes, included resources, and pagination.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionAvailabilities_getInstance", @@ -2972,7 +2980,7 @@ "disposition": "deferred", "reason": "The `subscriptionAvailabilities` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionAvailabilities_availableTerritories_getToManyRelationship", @@ -2980,7 +2988,7 @@ "disposition": "deferred", "reason": "The `subscriptionAvailabilities` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionGracePeriods_getInstance", @@ -2988,7 +2996,7 @@ "disposition": "deferred", "reason": "The `subscriptionGracePeriods` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionGracePeriods_updateInstance", @@ -2996,7 +3004,7 @@ "disposition": "deferred", "reason": "The `subscriptionGracePeriods` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionGroupVersions_localizations_getToManyRelationship", @@ -3004,7 +3012,7 @@ "disposition": "deferred", "reason": "`subscriptions_list_group_version_localizations` returns the related localization resources and IDs; the linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionGroups_subscriptionGroupLocalizations_getToManyRelationship", @@ -3012,7 +3020,7 @@ "disposition": "deferred", "reason": "The `subscriptionGroups` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionGroups_subscriptions_getToManyRelationship", @@ -3020,7 +3028,7 @@ "disposition": "deferred", "reason": "The `subscriptionGroups` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionGroups_versions_getToManyRelationship", @@ -3028,7 +3036,7 @@ "disposition": "deferred", "reason": "`subscriptions_list_group_versions` returns the related metadata versions and IDs; the linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionOfferCodeOneTimeUseCodes_updateInstance", @@ -3036,7 +3044,7 @@ "disposition": "deferred", "reason": "The `subscriptionOfferCodeOneTimeUseCodes` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionOfferCodes_customCodes_getToManyRelated", @@ -3044,7 +3052,7 @@ "disposition": "deferred", "reason": "The `subscriptionOfferCodes` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionOfferCodes_customCodes_getToManyRelationship", @@ -3052,7 +3060,7 @@ "disposition": "deferred", "reason": "The `subscriptionOfferCodes` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionOfferCodes_oneTimeUseCodes_getToManyRelationship", @@ -3060,7 +3068,7 @@ "disposition": "deferred", "reason": "The `subscriptionOfferCodes` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionOfferCodes_prices_getToManyRelationship", @@ -3068,7 +3076,7 @@ "disposition": "deferred", "reason": "The `subscriptionOfferCodes` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionPlanAvailabilities_availableTerritories_getToManyRelationship", @@ -3076,7 +3084,7 @@ "disposition": "deferred", "reason": "`subscriptions_list_plan_availability_territories` returns the related territory resources and IDs with pagination; the linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionPlanAvailabilities_availableTerritories_replaceToManyRelationship", @@ -3084,7 +3092,7 @@ "disposition": "deferred", "reason": "`subscriptions_update_plan_availability` already replaces the complete territory relationship through the resource PATCH and can update the nullable availability attribute atomically; a second relationship-only mutation is intentionally deferred.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionPricePoints_equalizations_getToManyRelationship", @@ -3092,7 +3100,7 @@ "disposition": "deferred", "reason": "The `subscriptionPricePoints` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionPromotionalOffers_prices_getToManyRelationship", @@ -3100,15 +3108,15 @@ "disposition": "deferred", "reason": "The `subscriptionPromotionalOffers` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionVersions_image_getToOneRelated", "operationId": "subscriptionVersions_image_getToOneRelated", "disposition": "deferred", - "reason": "Apple 4.4.1 documents plural version-owned subscription promotional images, which `subscriptions_list_version_images` exposes. The overlapping singular related-resource endpoint is deferred until Apple clarifies its distinct semantics.", + "reason": "Apple 4.5 documents plural version-owned subscription promotional images, which `subscriptions_list_version_images` exposes. The overlapping singular related-resource endpoint is deferred until Apple clarifies its distinct semantics.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionVersions_image_getToOneRelationship", @@ -3116,7 +3124,7 @@ "disposition": "deferred", "reason": "The singular subscription image relationship is semantically ambiguous beside Apple's documented plural promotional images, so its linkage-only document remains deferred with the singular related-resource endpoint.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionVersions_images_getToManyRelationship", @@ -3124,7 +3132,7 @@ "disposition": "deferred", "reason": "`subscriptions_list_version_images` returns the related promotional image resources and IDs; the linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptionVersions_localizations_getToManyRelationship", @@ -3132,7 +3140,7 @@ "disposition": "deferred", "reason": "`subscriptions_list_version_localizations` returns the related localization resources and IDs; the linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_appStoreReviewScreenshot_getToOneRelationship", @@ -3140,7 +3148,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_images_getToManyRelationship", @@ -3148,7 +3156,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_introductoryOffers_deleteToManyRelationship", @@ -3156,7 +3164,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_introductoryOffers_getToManyRelationship", @@ -3164,7 +3172,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_offerCodes_getToManyRelationship", @@ -3172,7 +3180,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_planAvailabilities_getToManyRelationship", @@ -3180,7 +3188,7 @@ "disposition": "deferred", "reason": "`subscriptions_list_plan_availabilities` returns the related plan availability resources and IDs; the linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_pricePoints_getToManyRelationship", @@ -3188,7 +3196,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_prices_deleteToManyRelationship", @@ -3196,7 +3204,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_prices_getToManyRelationship", @@ -3204,7 +3212,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_promotedPurchase_getToOneRelationship", @@ -3212,7 +3220,7 @@ "disposition": "deferred", "reason": "promoted_list and promoted_get expose the promoted-purchase resource and its linked subscription; this linkage-only inverse relationship is deferred because it carries only the promoted-purchase ID.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_promotionalOffers_getToManyRelationship", @@ -3220,7 +3228,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_subscriptionAvailability_getToOneRelationship", @@ -3228,7 +3236,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_subscriptionLocalizations_getToManyRelationship", @@ -3236,7 +3244,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_versions_getToManyRelationship", @@ -3244,7 +3252,7 @@ "disposition": "deferred", "reason": "`subscriptions_list_versions` returns the related metadata versions and IDs; the linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.subscriptions_winBackOffers_getToManyRelationship", @@ -3252,7 +3260,7 @@ "disposition": "deferred", "reason": "The `subscriptions` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.territoryAvailabilities_updateInstance", @@ -3260,7 +3268,7 @@ "disposition": "deferred", "reason": "The `territoryAvailabilities` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.userInvitations_getInstance", @@ -3268,7 +3276,7 @@ "disposition": "deferred", "reason": "The `userInvitations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.userInvitations_visibleApps_getToManyRelationship", @@ -3276,7 +3284,7 @@ "disposition": "deferred", "reason": "The `userInvitations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.userInvitations_visibleApps_getToManyRelated", @@ -3284,7 +3292,7 @@ "disposition": "deferred", "reason": "The `userInvitations` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.users_visibleApps_getToManyRelationship", @@ -3292,7 +3300,7 @@ "disposition": "deferred", "reason": "The `users` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.users_visibleApps_replaceToManyRelationship", @@ -3300,7 +3308,7 @@ "disposition": "deferred", "reason": "The `users` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.webhooks_deliveries_getToManyRelationship", @@ -3308,7 +3316,7 @@ "disposition": "deferred", "reason": "The `webhooks` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.winBackOffers_prices_getToManyRelationship", @@ -3316,7 +3324,7 @@ "disposition": "deferred", "reason": "The `winBackOffers` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appAvailabilitiesV2_territoryAvailabilities_getToManyRelationship", @@ -3324,7 +3332,7 @@ "disposition": "deferred", "reason": "The `appAvailabilities` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appStoreVersionExperimentsV2_appStoreVersionExperimentTreatments_getToManyRelationship", @@ -3332,7 +3340,7 @@ "disposition": "deferred", "reason": "ppo_list_treatments returns full treatment resources; this V2 linkage-only relationship document is deferred because it duplicates IDs without treatment attributes.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_content_getToOneRelated", @@ -3340,7 +3348,7 @@ "disposition": "deferred", "reason": "The `inAppPurchases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_appStoreReviewScreenshot_getToOneRelationship", @@ -3348,7 +3356,7 @@ "disposition": "deferred", "reason": "The `inAppPurchases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_content_getToOneRelationship", @@ -3356,7 +3364,7 @@ "disposition": "deferred", "reason": "The `inAppPurchases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_iapPriceSchedule_getToOneRelationship", @@ -3364,7 +3372,7 @@ "disposition": "deferred", "reason": "The `inAppPurchases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_images_getToManyRelationship", @@ -3372,7 +3380,7 @@ "disposition": "deferred", "reason": "The `inAppPurchases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_inAppPurchaseAvailability_getToOneRelationship", @@ -3380,7 +3388,7 @@ "disposition": "deferred", "reason": "The `inAppPurchases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_inAppPurchaseLocalizations_getToManyRelationship", @@ -3388,7 +3396,7 @@ "disposition": "deferred", "reason": "The `inAppPurchases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_offerCodes_getToManyRelationship", @@ -3396,7 +3404,7 @@ "disposition": "deferred", "reason": "The `inAppPurchases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_pricePoints_getToManyRelationship", @@ -3404,7 +3412,7 @@ "disposition": "deferred", "reason": "The `inAppPurchases` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_promotedPurchase_getToOneRelationship", @@ -3412,7 +3420,7 @@ "disposition": "deferred", "reason": "promoted_list and promoted_get expose the promoted-purchase resource and its linked in-app purchase; this linkage-only inverse relationship is deferred because it carries only the promoted-purchase ID.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.inAppPurchasesV2_versions_getToManyRelationship", @@ -3420,7 +3428,7 @@ "disposition": "deferred", "reason": "`iap_list_versions` returns the related metadata versions and IDs; the linkage-only relationship document is a lower-value duplicate.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPricePointsV3_getInstance", @@ -3428,7 +3436,7 @@ "disposition": "deferred", "reason": "The `appPricePoints` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPricePointsV3_equalizations_getToManyRelated", @@ -3436,7 +3444,7 @@ "disposition": "deferred", "reason": "The `appPricePoints` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "id": "deferred.appPricePointsV3_equalizations_getToManyRelationship", @@ -3444,7 +3452,7 @@ "disposition": "deferred", "reason": "The `appPricePoints` resource-group capability is not yet exposed by asc-mcp.", "owner": "asc-mcp", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/analytics.json b/Sources/asc-mcp/Resources/OperationManifest/tools/analytics.json index ec69c26..08fc1cd 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/analytics.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/analytics.json @@ -220,14 +220,14 @@ "appleName": "filter[granularity]", "disposition": "intentionallyOmitted", "reason": "The readiness heuristic only needs to know whether any report instance exists, regardless of granularity.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[processingDate]", "disposition": "intentionallyOmitted", "reason": "The readiness heuristic only needs to know whether any report instance exists, regardless of processing date.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "inputs": [ diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/apps.json b/Sources/asc-mcp/Resources/OperationManifest/tools/apps.json index bb0bfba..72445b0 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/apps.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/apps.json @@ -83,24 +83,24 @@ "path": "/v1/apps/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[androidToIosAppMappingDetails]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appClips]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appCustomProductPages]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appEncryptionDeclarations]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appEvents]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appInfos]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaAppLocalizations]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[inAppPurchases]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[inAppPurchasesV2]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[preReleaseVersions]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[promotedPurchases]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[reviewSubmissions]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[subscriptionGroups]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[androidToIosAppMappingDetails]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appClips]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appCustomProductPages]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appEncryptionDeclarations]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appEvents]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appInfos]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaAppLocalizations]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[inAppPurchases]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[inAppPurchasesV2]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[preReleaseVersions]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[promotedPurchases]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[reviewSubmissions]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[subscriptionGroups]", "disposition": "intentionallyOmitted", "reason": "The detail projection does not promise complete embedded to-many collections; use resource-specific tools for independently paginated data.", "reviewAtSpec": "4.5" } ] } ], @@ -135,9 +135,9 @@ "role": "supporting", "condition": "version_id is supplied", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included by this metadata lookup.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included by this metadata lookup.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are fetched through their dedicated paginated related-resource operation.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included by this metadata lookup.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included by this metadata lookup.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are fetched through their dedicated paginated related-resource operation.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -161,15 +161,15 @@ "role": "supporting", "condition": "version_id is omitted", "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[appStoreState]", "disposition": "intentionallyOmitted", "reason": "The tool traverses all version pages and applies legacy state fallback locally so selection semantics remain deterministic.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appVersionState]", "disposition": "intentionallyOmitted", "reason": "The tool traverses all version pages and selects current version state locally so state fallback remains deterministic.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[id]", "disposition": "intentionallyOmitted", "reason": "Explicit version selection uses version_id and the instance operation instead of filtering the auto-selection collection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[platform]", "disposition": "intentionallyOmitted", "reason": "Platform selection is applied locally after complete traversal to preserve the documented preference order.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[versionString]", "disposition": "intentionallyOmitted", "reason": "The metadata workflow selects by state and platform, not by version string.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Auto-selection consumes only the fixed sparse App Store version projection and does not expand relationships.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included during auto-selection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included during auto-selection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are fetched through their dedicated paginated related-resource operation.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[appStoreState]", "disposition": "intentionallyOmitted", "reason": "The tool traverses all version pages and applies legacy state fallback locally so selection semantics remain deterministic.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appVersionState]", "disposition": "intentionallyOmitted", "reason": "The tool traverses all version pages and selects current version state locally so state fallback remains deterministic.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[id]", "disposition": "intentionallyOmitted", "reason": "Explicit version selection uses version_id and the instance operation instead of filtering the auto-selection collection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[platform]", "disposition": "intentionallyOmitted", "reason": "Platform selection is applied locally after complete traversal to preserve the documented preference order.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[versionString]", "disposition": "intentionallyOmitted", "reason": "The metadata workflow selects by state and platform, not by version string.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Auto-selection consumes only the fixed sparse App Store version projection and does not expand relationships.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included during auto-selection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included during auto-selection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are fetched through their dedicated paginated related-resource operation.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -192,9 +192,9 @@ "path": "/v1/appStoreVersions/{id}/appStoreVersionLocalizations", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Preview sets are loaded through their dedicated paginated related-resource operation.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Screenshot sets are loaded through their dedicated paginated related-resource operation.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[searchKeywords]", "disposition": "intentionallyOmitted", "reason": "Search keyword relationships are outside the metadata aggregate response.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Preview sets are loaded through their dedicated paginated related-resource operation.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Screenshot sets are loaded through their dedicated paginated related-resource operation.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[searchKeywords]", "disposition": "intentionallyOmitted", "reason": "Search keyword relationships are outside the metadata aggregate response.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -234,9 +234,9 @@ "role": "conditional", "condition": "include_media is true and locale is supplied", "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[previewType]", "disposition": "intentionallyOmitted", "reason": "The media aggregate returns every preview set for the selected localization so callers can choose display types from one response.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "This workflow addresses an App Store version localization, not a custom product page localization.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "This workflow addresses an App Store version localization, not an experiment treatment localization.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[previewType]", "disposition": "intentionallyOmitted", "reason": "The media aggregate returns every preview set for the selected localization so callers can choose display types from one response.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "This workflow addresses an App Store version localization, not a custom product page localization.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "This workflow addresses an App Store version localization, not an experiment treatment localization.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -273,9 +273,9 @@ "role": "conditional", "condition": "include_media is true and locale is supplied", "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[screenshotDisplayType]", "disposition": "intentionallyOmitted", "reason": "The media aggregate returns every screenshot set for the selected localization so callers can choose display types from one response.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "This workflow addresses an App Store version localization, not a custom product page localization.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "This workflow addresses an App Store version localization, not an experiment treatment localization.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[screenshotDisplayType]", "disposition": "intentionallyOmitted", "reason": "The media aggregate returns every screenshot set for the selected localization so callers can choose display types from one response.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "This workflow addresses an App Store version localization, not a custom product page localization.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "This workflow addresses an App Store version localization, not an experiment treatment localization.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -348,25 +348,25 @@ "path": "/v1/apps", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The collection tool returns an App projection without included resources; use apps_get_details or resource-specific tools for relationships.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[androidToIosAppMappingDetails]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appClips]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appCustomProductPages]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appEncryptionDeclarations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appEvents]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appInfos]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaAppLocalizations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[inAppPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[inAppPurchasesV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[preReleaseVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[promotedPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[reviewSubmissions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[subscriptionGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The collection tool returns an App projection without included resources; use apps_get_details or resource-specific tools for relationships.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[androidToIosAppMappingDetails]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appClips]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appCustomProductPages]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appEncryptionDeclarations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appEvents]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appInfos]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaAppLocalizations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[inAppPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[inAppPurchasesV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[preReleaseVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[promotedPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[reviewSubmissions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[subscriptionGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included by the App collection projection, so this related-resource limit is inapplicable.", "reviewAtSpec": "4.5" } ] } ], @@ -416,9 +416,9 @@ "path": "/v1/appStoreVersions/{id}", "role": "supporting", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included in the ownership check.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included in the ownership check.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are fetched by the dedicated primary operation.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included in the ownership check.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included in the ownership check.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are fetched by the dedicated primary operation.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -441,9 +441,9 @@ "path": "/v1/appStoreVersions/{id}/appStoreVersionLocalizations", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Preview sets are not included by the localization list.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Screenshot sets are not included by the localization list.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[searchKeywords]", "disposition": "intentionallyOmitted", "reason": "Search keywords are not included by the localization list.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Preview sets are not included by the localization list.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Screenshot sets are not included by the localization list.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[searchKeywords]", "disposition": "intentionallyOmitted", "reason": "Search keywords are not included by the localization list.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -541,10 +541,10 @@ "path": "/v1/apps/{id}/appStoreVersions", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The lightweight version list returns a fixed base projection and does not expand relationships.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included by the lightweight list.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included by the lightweight list.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included by the lightweight list.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The lightweight version list returns a fixed base projection and does not expand relationships.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included by the lightweight list.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included by the lightweight list.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included by the lightweight list.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -604,35 +604,35 @@ { "sourceKind": "fixed", "location": "query", "appleName": "sort", "fixedValue": ["name", "bundleId", "sku"] } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[bundleId]", "disposition": "intentionallyOmitted", "reason": "The bundle ID filter is applied by the separate bundle-search invocation so this branch remains an independent union branch instead of an Apple AND filter.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[sku]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersions.appStoreState]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersions.platform]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersions.appVersionState]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[reviewSubmissions.state]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[reviewSubmissions.platform]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[id]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "exists[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Search returns only the base App identity projection and does not expand relationships.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[androidToIosAppMappingDetails]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appClips]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appCustomProductPages]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appEncryptionDeclarations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appEvents]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appInfos]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaAppLocalizations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[inAppPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[inAppPurchasesV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[preReleaseVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[promotedPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[reviewSubmissions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[subscriptionGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[bundleId]", "disposition": "intentionallyOmitted", "reason": "The bundle ID filter is applied by the separate bundle-search invocation so this branch remains an independent union branch instead of an Apple AND filter.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[sku]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersions.appStoreState]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersions.platform]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersions.appVersionState]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[reviewSubmissions.state]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[reviewSubmissions.platform]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[id]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "exists[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Search returns only the base App identity projection and does not expand relationships.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[androidToIosAppMappingDetails]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appClips]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appCustomProductPages]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appEncryptionDeclarations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appEvents]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appInfos]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaAppLocalizations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[inAppPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[inAppPurchasesV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[preReleaseVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[promotedPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[reviewSubmissions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[subscriptionGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" } ] }, { @@ -648,35 +648,35 @@ { "sourceKind": "fixed", "location": "query", "appleName": "sort", "fixedValue": ["name", "bundleId", "sku"] } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[name]", "disposition": "intentionallyOmitted", "reason": "The name filter is applied by the separate name-search invocation so this branch remains an independent union branch instead of an Apple AND filter.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[sku]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersions.appStoreState]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersions.platform]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersions.appVersionState]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[reviewSubmissions.state]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[reviewSubmissions.platform]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[id]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "exists[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Search returns only the base App identity projection and does not expand relationships.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[androidToIosAppMappingDetails]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appClips]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appCustomProductPages]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appEncryptionDeclarations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appEvents]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appInfos]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaAppLocalizations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[inAppPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[inAppPurchasesV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[preReleaseVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[promotedPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[reviewSubmissions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[subscriptionGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[name]", "disposition": "intentionallyOmitted", "reason": "The name filter is applied by the separate name-search invocation so this branch remains an independent union branch instead of an Apple AND filter.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[sku]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersions.appStoreState]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersions.platform]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersions.appVersionState]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[reviewSubmissions.state]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[reviewSubmissions.platform]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[id]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "exists[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "The public search contract is limited to an exact name-or-bundle-ID union; this additional filter would change its result semantics.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Search returns only the base App identity projection and does not expand relationships.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[androidToIosAppMappingDetails]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appClips]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appCustomProductPages]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appEncryptionDeclarations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appEvents]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appInfos]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaAppLocalizations]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[inAppPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[inAppPurchasesV2]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[preReleaseVersions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[promotedPurchases]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[reviewSubmissions]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[subscriptionGroups]", "disposition": "intentionallyOmitted", "reason": "No relationships are included, so this related-resource page limit is inapplicable to the search projection.", "reviewAtSpec": "4.5" } ] } ], @@ -735,9 +735,9 @@ "path": "/v1/appStoreVersions/{id}", "role": "supporting", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included in the write preflight.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included in the write preflight.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "The target localization is resolved through the dedicated filtered operation.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included in the write preflight.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "App Store version experiments are not included in the write preflight.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "The target localization is resolved through the dedicated filtered operation.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -760,10 +760,10 @@ "path": "/v1/appStoreVersions/{id}/appStoreVersionLocalizations", "role": "supporting", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit", "disposition": "internalControl", "reason": "The exact-locale write lookup fixes the page size to one before patching the resolved localization.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Preview sets are not included in the write lookup.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Screenshot sets are not included in the write lookup.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[searchKeywords]", "disposition": "intentionallyOmitted", "reason": "Search keywords are not included in the write lookup.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit", "disposition": "internalControl", "reason": "The exact-locale write lookup fixes the page size to one before patching the resolved localization.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Preview sets are not included in the write lookup.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Screenshot sets are not included in the write lookup.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[searchKeywords]", "disposition": "intentionallyOmitted", "reason": "Search keywords are not included in the write lookup.", "reviewAtSpec": "4.5" } ], "inputs": [ { diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/beta_app.json b/Sources/asc-mcp/Resources/OperationManifest/tools/beta_app.json index 91a707f..5a18861 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/beta_app.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/beta_app.json @@ -166,7 +166,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The focused localization tool projects the base resource; callers can use apps tools for expanded App details.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/beta_groups.json b/Sources/asc-mcp/Resources/OperationManifest/tools/beta_groups.json index 0c053ce..3556f7a 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/beta_groups.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/beta_groups.json @@ -271,21 +271,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The group collection returns stable group and relationship-ID projections; related resources have dedicated tools.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaTesters]", "disposition": "intentionallyOmitted", "reason": "Beta testers are not included in the group collection response.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Builds are not included in the group collection response.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -683,21 +683,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The supporting request only confirms the parent identity and does not project relationships.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaTesters]", "disposition": "intentionallyOmitted", "reason": "No beta testers are included by the supporting parent lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No builds are included by the supporting parent lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -801,21 +801,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The supporting request only confirms the parent identity.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaTesters]", "disposition": "intentionallyOmitted", "reason": "No beta testers are included by the supporting parent lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No builds are included by the supporting parent lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -1033,21 +1033,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The supporting request only confirms the parent identity.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaTesters]", "disposition": "intentionallyOmitted", "reason": "No beta testers are included by the supporting parent lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No builds are included by the supporting parent lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -1259,21 +1259,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The supporting request only confirms the parent identity.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaTesters]", "disposition": "intentionallyOmitted", "reason": "No beta testers are included by the supporting parent lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No builds are included by the supporting parent lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -1548,21 +1548,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The supporting request only confirms the parent identity.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaTesters]", "disposition": "intentionallyOmitted", "reason": "No beta testers are included by the supporting parent lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "No builds are included by the supporting parent lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/beta_license.json b/Sources/asc-mcp/Resources/OperationManifest/tools/beta_license.json index 4e9173e..391ecda 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/beta_license.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/beta_license.json @@ -19,7 +19,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The base resource app linkage is projected as appId; expanding the full App resource is outside this focused agreement tool.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -74,7 +74,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Each agreement already projects its app linkage; expanding full App resources would duplicate the apps worker.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/beta_testers.json b/Sources/asc-mcp/Resources/OperationManifest/tools/beta_testers.json index c5df706..48e8598 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/beta_testers.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/beta_testers.json @@ -254,21 +254,21 @@ "appleName": "limit[apps]", "disposition": "intentionallyOmitted", "reason": "The detail tool returns Apple's bounded included-app preview; full app access remains paginated through beta_testers_list_apps.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "The detail tool intentionally returns a bounded included beta-group preview.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "The detail tool intentionally returns a bounded included-build preview; relationship mutation has dedicated tools.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -342,28 +342,28 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The collection returns tester and relationship-ID projections; included details are available through beta_testers_get.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[apps]", "disposition": "intentionallyOmitted", "reason": "Apps are not included by the tester collection projection.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are not included by the tester collection projection.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Builds are not included by the tester collection projection.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -725,77 +725,77 @@ "appleName": "filter[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Advanced group filtering belongs to beta_testers_list; search is intentionally exact-email plus optional app scope.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[builds]", "disposition": "intentionallyOmitted", "reason": "Advanced build filtering belongs to beta_testers_list; search is intentionally exact-email plus optional app scope.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[firstName]", "disposition": "intentionallyOmitted", "reason": "Name filtering belongs to beta_testers_list; Apple email search is exact.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[id]", "disposition": "intentionallyOmitted", "reason": "A caller with a tester ID should use beta_testers_get.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[inviteType]", "disposition": "intentionallyOmitted", "reason": "Invitation-type filtering belongs to beta_testers_list.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[lastName]", "disposition": "intentionallyOmitted", "reason": "Name filtering belongs to beta_testers_list; Apple email search is exact.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Search returns compact tester matches; beta_testers_get provides included details.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[apps]", "disposition": "intentionallyOmitted", "reason": "Apps are not included in search results.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are not included in search results.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Builds are not included in search results.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "sort", "disposition": "intentionallyOmitted", "reason": "Exact-email search preserves Apple's natural match order and exposes pagination for ambiguous matches.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/build_beta.json b/Sources/asc-mcp/Resources/OperationManifest/tools/build_beta.json index fbb791f..56b7230 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/build_beta.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/build_beta.json @@ -119,7 +119,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The selected build ID is already known and the tool returns the related beta-detail resource without re-including the Build.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -178,28 +178,28 @@ "appleName": "filter[app]", "disposition": "intentionallyOmitted", "reason": "The required build filter already scopes this tool to groups attached to the selected build.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The tool returns a stable group projection and relationship IDs; related resources use dedicated tools.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaTesters]", "disposition": "intentionallyOmitted", "reason": "Beta testers are not included by this group projection.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Builds are represented by relationship IDs rather than included resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -621,7 +621,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The supporting lookup needs only the localization resource ID and does not expand its Build relationship.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/build_processing.json b/Sources/asc-mcp/Resources/OperationManifest/tools/build_processing.json index 58387d6..978a5e7 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/build_processing.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/build_processing.json @@ -19,42 +19,42 @@ "appleName": "include", "disposition": "internalControl", "reason": "Readiness always includes buildBetaDetail because TestFlight states are required for the documented result.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaBuildLocalizations]", "disposition": "intentionallyOmitted", "reason": "Beta build localizations are not included in readiness checks.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are not included in readiness checks.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[buildBundles]", "disposition": "intentionallyOmitted", "reason": "Build bundles are not included in readiness checks.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[icons]", "disposition": "intentionallyOmitted", "reason": "Build icons are not included in readiness checks.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[individualTesters]", "disposition": "intentionallyOmitted", "reason": "Individual testers are not included in readiness checks.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -140,42 +140,42 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Processing state is a reduced Build projection and does not include related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaBuildLocalizations]", "disposition": "intentionallyOmitted", "reason": "Beta build localizations are not included in processing state.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are not included in processing state.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[buildBundles]", "disposition": "intentionallyOmitted", "reason": "Build bundles are not included in processing state.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[icons]", "disposition": "intentionallyOmitted", "reason": "Build icons are not included in processing state.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[individualTesters]", "disposition": "intentionallyOmitted", "reason": "Individual testers are not included in processing state.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -235,42 +235,42 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Processing status is a reduced Build projection and does not include related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaBuildLocalizations]", "disposition": "intentionallyOmitted", "reason": "Beta build localizations are not included in processing status.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are not included in processing status.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[buildBundles]", "disposition": "intentionallyOmitted", "reason": "Build bundles are not included in processing status.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[icons]", "disposition": "intentionallyOmitted", "reason": "Build icons are not included in processing status.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[individualTesters]", "disposition": "intentionallyOmitted", "reason": "Individual testers are not included in processing status.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -345,14 +345,14 @@ "appleName": "/data/attributes/expired", "disposition": "intentionallyOmitted", "reason": "This narrowly scoped encryption-compliance tool must not also expire a TestFlight build; expiration requires a separately named destructive action.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "body", "appleName": "/data/relationships/appEncryptionDeclaration", "disposition": "intentionallyOmitted", "reason": "Linking an App Encryption Declaration is a distinct relationship workflow and is not inferred by the boolean encryption-compliance update.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/build_uploads.json b/Sources/asc-mcp/Resources/OperationManifest/tools/build_uploads.json index 039fccf..e96212d 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/build_uploads.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/build_uploads.json @@ -102,21 +102,21 @@ "appleName": "filter[state]", "disposition": "intentionallyOmitted", "reason": "Recovery must compare the complete exact version/build/platform fingerprint regardless of current upload state.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "sort", "disposition": "intentionallyOmitted", "reason": "Recovery computes a set difference across every bounded page, so Apple result ordering cannot affect identity.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Parent recovery needs only BuildUpload identity and fingerprint attributes; related resources cannot prove create ownership.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -397,7 +397,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Parent identity and processing state are sufficient for upload-file ownership and polling; related resources do not affect the transfer contract.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -513,21 +513,21 @@ "appleName": "filter[state]", "disposition": "intentionallyOmitted", "reason": "Recovery must compare the complete exact version/build/platform fingerprint regardless of current upload state.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "sort", "disposition": "intentionallyOmitted", "reason": "Recovery computes a set difference across every bounded page, so Apple result ordering cannot affect identity.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Parent recovery needs only BuildUpload identity and fingerprint attributes; related resources cannot prove create ownership.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -607,7 +607,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Post-commit polling needs parent processing state and build linkage already present in the base BuildUpload projection; expanded resources do not change terminal classification.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/builds.json b/Sources/asc-mcp/Resources/OperationManifest/tools/builds.json index 2ebeed7..c74e65c 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/builds.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/builds.json @@ -19,112 +19,112 @@ "appleName": "include", "disposition": "internalControl", "reason": "The finder fixes include to app, buildBetaDetail, preReleaseVersion, and buildUpload so a stable match and upload-state projection can be produced.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit", "disposition": "internalControl", "reason": "The singular finder fixes limit to one after applying deterministic filters and sort.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "exists[usesNonExemptEncryption]", "disposition": "intentionallyOmitted", "reason": "Encryption-presence filtering belongs to builds_list; this tool is intentionally scoped to exact build-number lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[appStoreVersion]", "disposition": "intentionallyOmitted", "reason": "App Store version filtering belongs to builds_list; the finder supports platform and pre-release disambiguation.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[betaAppReviewSubmission.betaReviewState]", "disposition": "intentionallyOmitted", "reason": "Beta review-state filtering belongs to builds_list, not exact build-number lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta-group filtering belongs to builds_list, not exact build-number lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[buildAudienceType]", "disposition": "intentionallyOmitted", "reason": "Audience filtering belongs to builds_list, not exact build-number lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[expired]", "disposition": "intentionallyOmitted", "reason": "Expiration filtering belongs to builds_list, not exact build-number lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[id]", "disposition": "intentionallyOmitted", "reason": "A caller with a build ID should use builds_get; this finder is keyed by app and build number.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[processingState]", "disposition": "intentionallyOmitted", "reason": "Processing-state filtering belongs to builds_list, not exact build-number lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[usesNonExemptEncryption]", "disposition": "intentionallyOmitted", "reason": "Encryption-value filtering belongs to builds_list, not exact build-number lookup.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaBuildLocalizations]", "disposition": "intentionallyOmitted", "reason": "Beta build localizations are not included by the finder.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are not included by the finder.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[buildBundles]", "disposition": "intentionallyOmitted", "reason": "Build bundles are not included by the finder.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[icons]", "disposition": "intentionallyOmitted", "reason": "Build icons are not included by the finder.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[individualTesters]", "disposition": "intentionallyOmitted", "reason": "Individual testers are not included by the finder.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -220,35 +220,35 @@ "appleName": "limit[betaBuildLocalizations]", "disposition": "intentionallyOmitted", "reason": "Beta build localizations are available through builds_list_beta_localizations and are not included by this detail tool.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are available through builds_get_beta_groups and are not included by this detail tool.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[buildBundles]", "disposition": "intentionallyOmitted", "reason": "The detail tool intentionally returns Apple's bounded build-bundle include preview rather than exposing nested JSON:API pagination controls.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[icons]", "disposition": "intentionallyOmitted", "reason": "Build icons are not included by this detail tool.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[individualTesters]", "disposition": "intentionallyOmitted", "reason": "Individual testers are available through dedicated paginated tools and are not included here.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -318,42 +318,42 @@ "appleName": "include", "disposition": "internalControl", "reason": "The list fixes include to app, buildBetaDetail, preReleaseVersion, and buildUpload, which are projected in its included output.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaBuildLocalizations]", "disposition": "intentionallyOmitted", "reason": "Beta build localizations are not included by this list projection.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are not included by this list projection.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[buildBundles]", "disposition": "intentionallyOmitted", "reason": "Build bundles are not included by this list projection.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[icons]", "disposition": "intentionallyOmitted", "reason": "Build icons are not included by this list projection.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[individualTesters]", "disposition": "intentionallyOmitted", "reason": "Individual testers are available through dedicated TestFlight tools and are not included here.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/custom_pages.json b/Sources/asc-mcp/Resources/OperationManifest/tools/custom_pages.json index b41aa3f..c2c7546 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/custom_pages.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/custom_pages.json @@ -20,7 +20,7 @@ { "sourceKind": "fixed", "jsonPointer": "/data/relationships/customProductPageTemplate/data/type", "fixedValue": "appCustomProductPages" } ], "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/relationships/appCustomProductPageVersions", "disposition": "internalControl", "reason": "The create workflow always generates local JSON:API IDs for the first page version and localization, then binds this relationship to that internally constructed inline version graph required by the public locale input.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/relationships/appCustomProductPageVersions", "disposition": "internalControl", "reason": "The create workflow always generates local JSON:API IDs for the first page version and localization, then binds this relationship to that internally constructed inline version graph required by the public locale input.", "reviewAtSpec": "4.5" } ] } ], @@ -121,7 +121,7 @@ { "sourceKind": "fixed", "jsonPointer": "/data/relationships/appCustomProductPage/data/type", "fixedValue": "appCustomProductPages" } ], "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/relationships/appCustomProductPageLocalizations", "disposition": "intentionallyOmitted", "reason": "Apple 4.4.1's standalone AppCustomProductPageVersionCreateRequest has no top-level included member for inline localization resources; this tool creates the version first and callers create its owned localizations through appCustomProductPageLocalizations_createInstance instead of attempting to reparent existing localization IDs.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/relationships/appCustomProductPageLocalizations", "disposition": "intentionallyOmitted", "reason": "Apple 4.5's standalone AppCustomProductPageVersionCreateRequest has no top-level included member for inline localization resources; this tool creates the version first and callers create its owned localizations through appCustomProductPageLocalizations_createInstance instead of attempting to reparent existing localization IDs.", "reviewAtSpec": "4.5" } ] } ], @@ -196,8 +196,8 @@ "path": "/v1/appCustomProductPages/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The get tool projects only the primary appCustomProductPages resource and does not decode Apple's top-level included relationship resources, so exposing include would silently discard the requested expansion.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appCustomProductPageVersions]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when appCustomProductPageVersions is requested through include; the get tool intentionally returns the base page without relationship expansion.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The get tool projects only the primary appCustomProductPages resource and does not decode Apple's top-level included relationship resources, so exposing include would silently discard the requested expansion.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appCustomProductPageVersions]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when appCustomProductPageVersions is requested through include; the get tool intentionally returns the base page without relationship expansion.", "reviewAtSpec": "4.5" } ] } ], @@ -237,8 +237,8 @@ "path": "/v1/apps/{id}/appCustomProductPages", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The list tool returns only its primary appCustomProductPages array and does not decode Apple's top-level included resources, so relationship expansion is deliberately unavailable.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appCustomProductPageVersions]", "disposition": "intentionallyOmitted", "reason": "Apple uses this nested limit only for included appCustomProductPageVersions; the list tool does not request or project that relationship.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The list tool returns only its primary appCustomProductPages array and does not decode Apple's top-level included resources, so relationship expansion is deliberately unavailable.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appCustomProductPageVersions]", "disposition": "intentionallyOmitted", "reason": "Apple uses this nested limit only for included appCustomProductPageVersions; the list tool does not request or project that relationship.", "reviewAtSpec": "4.5" } ] } ], @@ -285,10 +285,10 @@ "path": "/v1/appCustomProductPageVersions/{id}/appCustomProductPageLocalizations", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The localization list projects only primary appCustomProductPageLocalizations resources and does not decode Apple's included screenshot, preview, keyword, or parent-version resources.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when appPreviewSets is included; this tool neither requests nor projects preview-set relationship resources.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when appScreenshotSets is included; this tool neither requests nor projects screenshot-set relationship resources.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[searchKeywords]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when searchKeywords is included; this tool neither requests nor projects keyword relationship resources.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The localization list projects only primary appCustomProductPageLocalizations resources and does not decode Apple's included screenshot, preview, keyword, or parent-version resources.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when appPreviewSets is included; this tool neither requests nor projects preview-set relationship resources.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when appScreenshotSets is included; this tool neither requests nor projects screenshot-set relationship resources.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[searchKeywords]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when searchKeywords is included; this tool neither requests nor projects keyword relationship resources.", "reviewAtSpec": "4.5" } ] } ], @@ -331,8 +331,8 @@ "path": "/v1/appCustomProductPages/{id}/appCustomProductPageVersions", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The version list projects only primary appCustomProductPageVersions resources and does not decode Apple's included page or localization resources.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appCustomProductPageLocalizations]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when appCustomProductPageLocalizations is included; this tool leaves relationship expansion to custom_pages_list_localizations.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The version list projects only primary appCustomProductPageVersions resources and does not decode Apple's included page or localization resources.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appCustomProductPageLocalizations]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when appCustomProductPageLocalizations is included; this tool leaves relationship expansion to custom_pages_list_localizations.", "reviewAtSpec": "4.5" } ] } ], @@ -480,8 +480,8 @@ "path": "/v1/appCustomProductPageVersions/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The tool projects the primary page-version resource only; relationship expansion would be silently discarded and is available through the dedicated page and localization tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appCustomProductPageLocalizations]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when appCustomProductPageLocalizations is included; the tool does not request that expansion.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The tool projects the primary page-version resource only; relationship expansion would be silently discarded and is available through the dedicated page and localization tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appCustomProductPageLocalizations]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only when appCustomProductPageLocalizations is included; the tool does not request that expansion.", "reviewAtSpec": "4.5" } ] } ], @@ -563,10 +563,10 @@ "path": "/v1/appCustomProductPageLocalizations/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The tool projects the primary localization only and does not decode included parent, screenshot, preview, or keyword resources.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an appPreviewSets expansion that this tool does not request.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an appScreenshotSets expansion that this tool does not request.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[searchKeywords]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an included searchKeywords expansion; custom_pages_list_search_keywords exposes the related collection directly.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The tool projects the primary localization only and does not decode included parent, screenshot, preview, or keyword resources.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an appPreviewSets expansion that this tool does not request.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an appScreenshotSets expansion that this tool does not request.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[searchKeywords]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an included searchKeywords expansion; custom_pages_list_search_keywords exposes the related collection directly.", "reviewAtSpec": "4.5" } ] } ], diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/export_compliance.json b/Sources/asc-mcp/Resources/OperationManifest/tools/export_compliance.json index 42ecf68..4753e70 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/export_compliance.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/export_compliance.json @@ -20,14 +20,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Attachment preflight only needs declaration approval metadata.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Attachment preflight does not expand the deprecated builds relationship.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "inputs": [ @@ -82,14 +82,14 @@ "appleName": "/data/attributes/expired", "disposition": "intentionallyOmitted", "reason": "Attachment does not mutate build expiration state.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "body", "appleName": "/data/attributes/usesNonExemptEncryption", "disposition": "intentionallyOmitted", "reason": "Attachment does not change the build encryption answer; builds_update_encryption owns that mutation.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "inputs": [ @@ -208,12 +208,12 @@ "path": "/v1/builds/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The export gate reads only Build attributes and the app relationship identifier.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaBuildLocalizations]", "disposition": "intentionallyOmitted", "reason": "Beta localizations are outside export compliance.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are outside export compliance.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[buildBundles]", "disposition": "intentionallyOmitted", "reason": "Build bundles are outside this gate.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[icons]", "disposition": "intentionallyOmitted", "reason": "Build icons are outside this gate.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[individualTesters]", "disposition": "intentionallyOmitted", "reason": "Individual testers are outside export compliance.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The export gate reads only Build attributes and the app relationship identifier.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaBuildLocalizations]", "disposition": "intentionallyOmitted", "reason": "Beta localizations are outside export compliance.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are outside export compliance.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[buildBundles]", "disposition": "intentionallyOmitted", "reason": "Build bundles are outside this gate.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[icons]", "disposition": "intentionallyOmitted", "reason": "Build icons are outside this gate.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[individualTesters]", "disposition": "intentionallyOmitted", "reason": "Individual testers are outside export compliance.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -345,8 +345,8 @@ "role": "supporting", "condition": "Preflight a mutable declaration state before creating a reservation.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Reservation preflight only needs declaration state.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Reservation preflight does not expand deprecated builds.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Reservation preflight only needs declaration state.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Reservation preflight does not expand deprecated builds.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -481,12 +481,12 @@ "role": "supporting", "condition": "Confirm that the parent build exists before interpreting a relationship 404 as absence.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Parent existence confirmation needs only the Build resource.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaBuildLocalizations]", "disposition": "intentionallyOmitted", "reason": "Beta localizations are outside parent confirmation.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are outside parent confirmation.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[buildBundles]", "disposition": "intentionallyOmitted", "reason": "Build bundles are outside parent confirmation.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[icons]", "disposition": "intentionallyOmitted", "reason": "Icons are outside parent confirmation.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[individualTesters]", "disposition": "intentionallyOmitted", "reason": "Individual testers are outside parent confirmation.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Parent existence confirmation needs only the Build resource.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaBuildLocalizations]", "disposition": "intentionallyOmitted", "reason": "Beta localizations are outside parent confirmation.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "Beta groups are outside parent confirmation.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[buildBundles]", "disposition": "intentionallyOmitted", "reason": "Build bundles are outside parent confirmation.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[icons]", "disposition": "intentionallyOmitted", "reason": "Icons are outside parent confirmation.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[individualTesters]", "disposition": "intentionallyOmitted", "reason": "Individual testers are outside parent confirmation.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -552,8 +552,8 @@ "path": "/v1/appEncryptionDeclarations/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The safe declaration projection does not expand related app, builds, or document resources.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "The deprecated builds relationship is not expanded.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The safe declaration projection does not expand related app, builds, or document resources.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "The deprecated builds relationship is not expanded.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -627,8 +627,8 @@ "role": "supporting", "condition": "Confirm that the parent declaration exists before interpreting a relationship 404 as absence.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Parent confirmation needs only declaration state.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Parent confirmation does not expand deprecated builds.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Parent confirmation needs only declaration state.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Parent confirmation does not expand deprecated builds.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -694,10 +694,10 @@ "path": "/v1/apps/{id}/appEncryptionDeclarations", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[platform]", "disposition": "intentionallyOmitted", "reason": "The platform filter is deprecated and is not exposed.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[builds]", "disposition": "intentionallyOmitted", "reason": "The app-scoped list does not infer a build filter; build linkage has a dedicated tool.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The list returns a bounded declaration projection without related expansion.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "The deprecated builds relationship is not expanded.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[platform]", "disposition": "intentionallyOmitted", "reason": "The platform filter is deprecated and is not exposed.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[builds]", "disposition": "intentionallyOmitted", "reason": "The app-scoped list does not infer a build filter; build linkage has a dedicated tool.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The list returns a bounded declaration projection without related expansion.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "The deprecated builds relationship is not expanded.", "reviewAtSpec": "4.5" } ], "inputs": [ { diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/iap.json b/Sources/asc-mcp/Resources/OperationManifest/tools/iap.json index 4e3fcef..3244521 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/iap.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/iap.json @@ -655,42 +655,42 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[images]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[inAppPurchaseLocalizations]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[offerCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[pricePoints]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[versions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -859,7 +859,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -901,7 +901,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -943,28 +943,28 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[customCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[oneTimeUseCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[prices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1006,7 +1006,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1110,21 +1110,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[automaticPrices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[manualPrices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1166,7 +1166,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1208,7 +1208,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1250,21 +1250,21 @@ "appleName": "limit[subscriptionGroupLocalizations]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[versions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1340,35 +1340,35 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[images]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[inAppPurchaseLocalizations]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[offerCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[versions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1490,35 +1490,35 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[images]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[inAppPurchaseLocalizations]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[offerCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[versions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1675,7 +1675,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1729,7 +1729,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1783,7 +1783,7 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control and requires the same value on every continuation; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1844,35 +1844,35 @@ "appleName": "filter[territory]", "disposition": "intentionallyOmitted", "reason": "Offer-code discovery stays product-scoped; territory selection is available on the dedicated offer-price listing.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control and requires the same value on every continuation; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[customCodes]", "disposition": "internalControl", "reason": "The handler fixes this query control and requires the same value on every continuation; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[oneTimeUseCodes]", "disposition": "internalControl", "reason": "The handler fixes this query control and requires the same value on every continuation; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[prices]", "disposition": "internalControl", "reason": "The handler fixes this query control and requires the same value on every continuation; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1926,7 +1926,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1980,7 +1980,7 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control and requires the same value on every continuation; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2049,7 +2049,7 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control and requires the same value on every continuation; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2122,28 +2122,28 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptionGroupLocalizations]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[versions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2218,14 +2218,14 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2280,21 +2280,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[automaticPrices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[manualPrices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -2321,14 +2321,14 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -2355,14 +2355,14 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2988,7 +2988,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -3134,7 +3134,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -3253,9 +3253,9 @@ "role": "primary", "condition": null, "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The tool avoids arbitrary relationship expansion.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[images]", "disposition": "intentionallyOmitted", "reason": "Images are not included inline.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[localizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included inline.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The tool avoids arbitrary relationship expansion.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[images]", "disposition": "intentionallyOmitted", "reason": "Images are not included inline.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[localizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included inline.", "reviewAtSpec": "4.5" } ] } ], @@ -3306,9 +3306,9 @@ "role": "primary", "condition": null, "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The list avoids arbitrary relationship expansion.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[images]", "disposition": "intentionallyOmitted", "reason": "Images are not included inline.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[localizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included inline.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The list avoids arbitrary relationship expansion.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[images]", "disposition": "intentionallyOmitted", "reason": "Images are not included inline.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[localizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included inline.", "reviewAtSpec": "4.5" } ] } ], @@ -3365,7 +3365,7 @@ "role": "primary", "condition": null, "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The list avoids redundant parent expansion.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The list avoids redundant parent expansion.", "reviewAtSpec": "4.5" } ] } ], @@ -3431,7 +3431,7 @@ "role": "primary", "condition": null, "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The tool avoids redundant parent expansion.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The tool avoids redundant parent expansion.", "reviewAtSpec": "4.5" } ] } ], diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/metrics.json b/Sources/asc-mcp/Resources/OperationManifest/tools/metrics.json index f5a1ffb..3e96915 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/metrics.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/metrics.json @@ -18,8 +18,8 @@ "location": "query", "appleName": "filter[platform]", "disposition": "intentionallyOmitted", - "reason": "Apple 4.4.1 only permits IOS, so exposing this filter would not change the result set.", - "reviewAtSpec": "4.4.1" + "reason": "Apple 4.5 only permits IOS, so exposing this filter would not change the result set.", + "reviewAtSpec": "4.5" } ] } @@ -188,8 +188,8 @@ "location": "query", "appleName": "filter[platform]", "disposition": "intentionallyOmitted", - "reason": "Apple 4.4.1 only permits IOS, so exposing this filter would not change the result set.", - "reviewAtSpec": "4.4.1" + "reason": "Apple 4.5 only permits IOS, so exposing this filter would not change the result set.", + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/ppo.json b/Sources/asc-mcp/Resources/OperationManifest/tools/ppo.json index bddbaf3..4b92b82 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/ppo.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/ppo.json @@ -59,8 +59,8 @@ "location": "body", "appleName": "/data/relationships/appStoreVersionExperiment", "disposition": "intentionallyOmitted", - "reason": "Apple 4.4.1 retains this deprecated V1 parent alternative. PPO tools accept only current V2 experiment IDs and always bind appStoreVersionExperimentV2, so exposing both parents would make lineage ambiguous.", - "reviewAtSpec": "4.4.1" + "reason": "Apple 4.5 retains this deprecated V1 parent alternative. PPO tools accept only current V2 experiment IDs and always bind appStoreVersionExperimentV2, so exposing both parents would make lineage ambiguous.", + "reviewAtSpec": "4.5" } ] } @@ -224,9 +224,9 @@ "path": "/v2/appStoreVersionExperiments/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.4.1 can expand app, control-version, and treatment resources; the detail tool returns the canonical experiment and dedicated tools own child collections.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentTreatments]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an omitted treatment include; ppo_list_treatments provides strict continuation.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[controlVersions]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an omitted controlVersions include.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.5 can expand app, control-version, and treatment resources; the detail tool returns the canonical experiment and dedicated tools own child collections.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentTreatments]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an omitted treatment include; ppo_list_treatments provides strict continuation.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[controlVersions]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an omitted controlVersions include.", "reviewAtSpec": "4.5" } ] } ], @@ -258,8 +258,8 @@ "path": "/v1/appStoreVersionExperimentTreatments/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.4.1 allows legacy-parent and child expansion; the direct treatment projection avoids the deprecated parent and uses ppo_list_treatment_localizations for child resources.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentTreatmentLocalizations]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to the omitted localization include; the child collection has strict pagination.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.5 allows legacy-parent and child expansion; the direct treatment projection avoids the deprecated parent and uses ppo_list_treatment_localizations for child resources.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentTreatmentLocalizations]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to the omitted localization include; the child collection has strict pagination.", "reviewAtSpec": "4.5" } ] } ], @@ -291,9 +291,9 @@ "path": "/v1/appStoreVersionExperimentTreatmentLocalizations/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.4.1 allows media expansion; this tool returns the localization identity and locale while screenshot and preview media remain in ScreenshotsWorker.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested preview limit only to the omitted appPreviewSets include.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested screenshot limit only to the omitted appScreenshotSets include.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.5 allows media expansion; this tool returns the localization identity and locale while screenshot and preview media remain in ScreenshotsWorker.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested preview limit only to the omitted appPreviewSets include.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested screenshot limit only to the omitted appScreenshotSets include.", "reviewAtSpec": "4.5" } ] } ], @@ -325,9 +325,9 @@ "path": "/v1/apps/{id}/appStoreVersionExperimentsV2", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.4.1 can expand app, control-version, and treatment resources; this app collection returns experiment resources only and dedicated tools own children.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentTreatments]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an omitted treatment include.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[controlVersions]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an omitted controlVersions include.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.5 can expand app, control-version, and treatment resources; this app collection returns experiment resources only and dedicated tools own children.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentTreatments]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an omitted treatment include.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[controlVersions]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested limit only to an omitted controlVersions include.", "reviewAtSpec": "4.5" } ] } ], @@ -363,9 +363,9 @@ "path": "/v1/appStoreVersionExperimentTreatments/{id}/appStoreVersionExperimentTreatmentLocalizations", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.4.1 can expand the treatment and media resources; this localization collection stays narrow and ScreenshotsWorker owns media lifecycle operations.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested preview limit only to an omitted appPreviewSets include.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested screenshot limit only to an omitted appScreenshotSets include.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.5 can expand the treatment and media resources; this localization collection stays narrow and ScreenshotsWorker owns media lifecycle operations.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appPreviewSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested preview limit only to an omitted appPreviewSets include.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshotSets]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested screenshot limit only to an omitted appScreenshotSets include.", "reviewAtSpec": "4.5" } ] } ], @@ -401,8 +401,8 @@ "path": "/v2/appStoreVersionExperiments/{id}/appStoreVersionExperimentTreatments", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.4.1 can expand parent and localization resources; the V2 relationship endpoint establishes lineage and the child collection is separate.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentTreatmentLocalizations]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested localization limit only to an omitted include.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.5 can expand parent and localization resources; the V2 relationship endpoint establishes lineage and the child collection is separate.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentTreatmentLocalizations]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested localization limit only to an omitted include.", "reviewAtSpec": "4.5" } ] } ], @@ -437,9 +437,9 @@ "path": "/v1/appStoreVersions/{id}/appStoreVersionExperimentsV2", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.4.1 allows related-resource expansion; the version-scoped endpoint establishes lineage directly while app, control-version, and treatment resources remain separate contracts.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentTreatments]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested treatment limit only to the omitted include; ppo_list_treatments is strictly paginated.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[controlVersions]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested control-version limit only to the omitted include.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Apple 4.5 allows related-resource expansion; the version-scoped endpoint establishes lineage directly while app, control-version, and treatment resources remain separate contracts.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentTreatments]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested treatment limit only to the omitted include; ppo_list_treatments is strictly paginated.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[controlVersions]", "disposition": "intentionallyOmitted", "reason": "Apple applies this nested control-version limit only to the omitted include.", "reviewAtSpec": "4.5" } ] } ], diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/pre_release.json b/Sources/asc-mcp/Resources/OperationManifest/tools/pre_release.json index 5fff32e..7393d34 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/pre_release.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/pre_release.json @@ -19,14 +19,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The detail tool preserves relationship IDs and uses dedicated tools for full related builds.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Builds are not included by this detail projection.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -77,14 +77,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The collection preserves relationship IDs and uses pre_release_list_builds for full related Build resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Builds are not included by the pre-release collection projection.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/pricing.json b/Sources/asc-mcp/Resources/OperationManifest/tools/pricing.json index 06a3736..54eaa32 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/pricing.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/pricing.json @@ -809,14 +809,14 @@ "appleName": "include", "disposition": "internalControl", "reason": "The resolver needs only the authoritative availability ID; the primary operation fetches the complete paginated territory collection with included territories.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[territoryAvailabilities]", "disposition": "internalControl", "reason": "The resolver does not include territoryAvailabilities because the primary related-collection operation provides independent pagination up to 200 resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/promoted.json b/Sources/asc-mcp/Resources/OperationManifest/tools/promoted.json index 458ab2c..6643ed3 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/promoted.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/promoted.json @@ -162,8 +162,8 @@ "location": "query", "appleName": "include", "disposition": "internalControl", - "reason": "The handler always sends Apple 4.4.1 include=inAppPurchaseV2,subscription so the detail result can project the linked product without requiring caller-controlled expansion.", - "reviewAtSpec": "4.4.1" + "reason": "The handler always sends Apple 4.5 include=inAppPurchaseV2,subscription so the detail result can project the linked product without requiring caller-controlled expansion.", + "reviewAtSpec": "4.5" } ] } @@ -254,8 +254,8 @@ "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", - "reason": "Apple 4.4.1 can include inAppPurchaseV2 and subscription resources, but this collection contract returns base promoted-purchase attributes and relationship IDs; promoted_get provides expanded linked-product details.", - "reviewAtSpec": "4.4.1" + "reason": "Apple 4.5 can include inAppPurchaseV2 and subscription resources, but this collection contract returns base promoted-purchase attributes and relationship IDs; promoted_get provides expanded linked-product details.", + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/provisioning.json b/Sources/asc-mcp/Resources/OperationManifest/tools/provisioning.json index 12f1273..ca335fa 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/provisioning.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/provisioning.json @@ -194,21 +194,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "This detail tool returns a stable bundle-ID projection and does not project related profiles, capabilities, or app resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[bundleIdCapabilities]", "disposition": "intentionallyOmitted", "reason": "The related capability collection is not included by this tool, so its nested include limit has no effect on the documented output.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[profiles]", "disposition": "intentionallyOmitted", "reason": "The related profile collection is not included by this tool, so its nested include limit has no effect on the documented output.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -245,7 +245,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The certificate detail output is deliberately limited to certificate attributes and does not project the optional passTypeId relationship.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -282,21 +282,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The profile detail output returns profile attributes and does not project bundleId, devices, or certificates relationship resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[certificates]", "disposition": "intentionallyOmitted", "reason": "Certificates are not included by this tool, so the nested relationship limit has no effect on its documented output.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[devices]", "disposition": "intentionallyOmitted", "reason": "Devices are not included by this tool, so the nested relationship limit has no effect on its documented output.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -333,21 +333,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The collection tool returns a stable bundle-ID projection and does not project related profiles, capabilities, or app resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[bundleIdCapabilities]", "disposition": "intentionallyOmitted", "reason": "The related capability collection is not included, so its nested limit has no effect on the documented output.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[profiles]", "disposition": "intentionallyOmitted", "reason": "The related profile collection is not included, so its nested limit has no effect on the documented output.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -420,7 +420,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Certificate lists use a bounded attribute projection and do not project optional passTypeId relationship resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -497,21 +497,21 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Profile lists use a bounded attribute projection and do not project bundleId, devices, or certificates relationship resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[certificates]", "disposition": "intentionallyOmitted", "reason": "Certificates are not included by this tool, so the nested relationship limit has no effect on its documented output.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[devices]", "disposition": "intentionallyOmitted", "reason": "Devices are not included by this tool, so the nested relationship limit has no effect on its documented output.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/review_attachments.json b/Sources/asc-mcp/Resources/OperationManifest/tools/review_attachments.json index cb65a07..f6d8896 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/review_attachments.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/review_attachments.json @@ -301,7 +301,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Upload reconciliation needs attachment delivery state and relationship identity only; expanding reviewer contact or demo-account data is unrelated to delivery verification.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "inputs": [ diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/review_submissions.json b/Sources/asc-mcp/Resources/OperationManifest/tools/review_submissions.json index 7a577ca..94cdf4a 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/review_submissions.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/review_submissions.json @@ -14,12 +14,12 @@ "path": "/v1/reviewSubmissionItems", "role": "primary", "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/relationships/appStoreVersionExperiment", "disposition": "intentionallyOmitted", "reason": "The legacy PPO relationship is intentionally rejected; this worker accepts only appStoreVersionExperimentV2.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/gameCenterAchievementVersion", "disposition": "intentionallyOmitted", "reason": "Game Center review items remain in the separately scoped Game Center product.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/gameCenterActivityVersion", "disposition": "intentionallyOmitted", "reason": "Game Center review items remain in the separately scoped Game Center product.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/gameCenterChallengeVersion", "disposition": "intentionallyOmitted", "reason": "Game Center review items remain in the separately scoped Game Center product.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/gameCenterLeaderboardSetVersion", "disposition": "intentionallyOmitted", "reason": "Game Center review items remain in the separately scoped Game Center product.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/gameCenterLeaderboardVersion", "disposition": "intentionallyOmitted", "reason": "Game Center review items remain in the separately scoped Game Center product.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/relationships/appStoreVersionExperiment", "disposition": "intentionallyOmitted", "reason": "The legacy PPO relationship is intentionally rejected; this worker accepts only appStoreVersionExperimentV2.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/gameCenterAchievementVersion", "disposition": "intentionallyOmitted", "reason": "Game Center review items remain in the separately scoped Game Center product.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/gameCenterActivityVersion", "disposition": "intentionallyOmitted", "reason": "Game Center review items remain in the separately scoped Game Center product.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/gameCenterChallengeVersion", "disposition": "intentionallyOmitted", "reason": "Game Center review items remain in the separately scoped Game Center product.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/gameCenterLeaderboardSetVersion", "disposition": "intentionallyOmitted", "reason": "Game Center review items remain in the separately scoped Game Center product.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/gameCenterLeaderboardVersion", "disposition": "intentionallyOmitted", "reason": "Game Center review items remain in the separately scoped Game Center product.", "reviewAtSpec": "4.5" } ], "inputs": [ { "sourceKind": "fixed", "jsonPointer": "/data/type", "fixedValue": "reviewSubmissionItems" }, @@ -73,8 +73,8 @@ "path": "/v1/reviewSubmissions/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/attributes/platform", "disposition": "intentionallyOmitted", "reason": "Cancellation preserves the platform selected when the submission was created.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/attributes/submitted", "disposition": "intentionallyOmitted", "reason": "Cancellation never combines canceled=true with the distinct submit transition.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/attributes/platform", "disposition": "intentionallyOmitted", "reason": "Cancellation preserves the platform selected when the submission was created.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/attributes/submitted", "disposition": "intentionallyOmitted", "reason": "Cancellation never combines canceled=true with the distinct submit transition.", "reviewAtSpec": "4.5" } ], "inputs": [ { "sourceKind": "derived", "jsonPointer": "/data/id", "derivedFrom": ["submission_id"], "localRole": "Copy the path ID into the JSON:API resource identifier." }, @@ -362,8 +362,8 @@ "path": "/v1/reviewSubmissions/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/attributes/platform", "disposition": "intentionallyOmitted", "reason": "Submission preserves the platform selected when the submission was created.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/attributes/canceled", "disposition": "intentionallyOmitted", "reason": "Submission never combines submitted=true with the distinct cancellation transition.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/attributes/platform", "disposition": "intentionallyOmitted", "reason": "Submission preserves the platform selected when the submission was created.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/attributes/canceled", "disposition": "intentionallyOmitted", "reason": "Submission never combines submitted=true with the distinct cancellation transition.", "reviewAtSpec": "4.5" } ], "inputs": [ { "sourceKind": "derived", "jsonPointer": "/data/id", "derivedFrom": ["submission_id"], "localRole": "Copy the path ID into the JSON:API resource identifier." }, diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/reviews.json b/Sources/asc-mcp/Resources/OperationManifest/tools/reviews.json index 1c87c26..16a9dc2 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/reviews.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/reviews.json @@ -135,7 +135,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The detail tool returns the review attributes and response relationship presence; the full response has a dedicated reviews_get_response tool and territory is already projected from review attributes.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -226,7 +226,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The caller already supplies the review ID and can use reviews_get when the full related review resource is needed.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -242,7 +242,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The conditional lookup only confirms that the parent review exists and does not project related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -335,7 +335,7 @@ "appleName": "filter[reviewTerritory]", "disposition": "intentionallyOmitted", "reason": "The public territory and territories inputs use Apple's documented three-letter filter[territory] values; the related-resource-ID filter would duplicate that capability with opaque IDs.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -479,7 +479,7 @@ "appleName": "filter[reviewTerritory]", "disposition": "intentionallyOmitted", "reason": "The public territory and territories inputs use Apple's documented three-letter filter[territory] values; the related-resource-ID filter would duplicate that capability with opaque IDs.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -638,21 +638,21 @@ "appleName": "filter[rating]", "disposition": "intentionallyOmitted", "reason": "The aggregate must retrieve every rating to calculate a complete 1-through-5 distribution.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[reviewTerritory]", "disposition": "intentionallyOmitted", "reason": "The statistics tool uses public alpha-3 filter[territory] values instead of opaque related territory resource IDs.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Statistics require only review attributes and do not download related response or territory resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -788,7 +788,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The tool returns Apple's summarization resources unchanged and preserves the related territory ID already present on each resource; callers do not need duplicated included territory resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/screenshots.json b/Sources/asc-mcp/Resources/OperationManifest/tools/screenshots.json index b453e8d..5d5194e 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/screenshots.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/screenshots.json @@ -30,10 +30,10 @@ { "sourceKind": "fixed", "location": "query", "appleName": "limit", "fixedValue": 200 } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected App Store parent and exact previewType, so cross-parent filters are unnecessary.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected App Store parent and exact previewType, so cross-parent filters are unnecessary.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and previewType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child previews.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected App Store parent and exact previewType, so cross-parent filters are unnecessary.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected App Store parent and exact previewType, so cross-parent filters are unnecessary.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and previewType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child previews.", "reviewAtSpec": "4.5" } ] }, { @@ -46,10 +46,10 @@ { "sourceKind": "fixed", "location": "query", "appleName": "limit", "fixedValue": 200 } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[appStoreVersionLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected custom-page parent and exact previewType.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected custom-page parent and exact previewType.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and previewType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child previews.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[appStoreVersionLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected custom-page parent and exact previewType.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected custom-page parent and exact previewType.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and previewType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child previews.", "reviewAtSpec": "4.5" } ] }, { @@ -62,10 +62,10 @@ { "sourceKind": "fixed", "location": "query", "appleName": "limit", "fixedValue": 200 } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[appStoreVersionLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected treatment parent and exact previewType.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected treatment parent and exact previewType.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and previewType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child previews.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[appStoreVersionLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected treatment parent and exact previewType.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected treatment parent and exact previewType.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and previewType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child previews.", "reviewAtSpec": "4.5" } ] } ], @@ -147,10 +147,10 @@ { "sourceKind": "fixed", "location": "query", "appleName": "limit", "fixedValue": 200 } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected App Store parent and exact screenshotDisplayType.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected App Store parent and exact screenshotDisplayType.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and screenshotDisplayType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child screenshots.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected App Store parent and exact screenshotDisplayType.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected App Store parent and exact screenshotDisplayType.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and screenshotDisplayType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child screenshots.", "reviewAtSpec": "4.5" } ] }, { @@ -163,10 +163,10 @@ { "sourceKind": "fixed", "location": "query", "appleName": "limit", "fixedValue": 200 } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[appStoreVersionLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected custom-page parent and exact screenshotDisplayType.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected custom-page parent and exact screenshotDisplayType.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and screenshotDisplayType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child screenshots.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[appStoreVersionLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected custom-page parent and exact screenshotDisplayType.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appStoreVersionExperimentTreatmentLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected custom-page parent and exact screenshotDisplayType.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and screenshotDisplayType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child screenshots.", "reviewAtSpec": "4.5" } ] }, { @@ -179,10 +179,10 @@ { "sourceKind": "fixed", "location": "query", "appleName": "limit", "fixedValue": 200 } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "filter[appStoreVersionLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected treatment parent and exact screenshotDisplayType.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected treatment parent and exact screenshotDisplayType.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and screenshotDisplayType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child screenshots.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "filter[appStoreVersionLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected treatment parent and exact screenshotDisplayType.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "filter[appCustomProductPageLocalization]", "disposition": "intentionallyOmitted", "reason": "Create recovery scopes by the selected treatment parent and exact screenshotDisplayType.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact parent-scoped relationship path proves localization scope; the base projection validates identity and screenshotDisplayType plus optional resource self and parent linkage when present, so included resources are unnecessary and not decoded.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "Create recovery does not include child screenshots.", "reviewAtSpec": "4.5" } ] } ], @@ -319,8 +319,8 @@ "role": "supporting", "condition": "Confirm the canonical target identity before the cascade delete.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Delete preflight needs only the exact base set identity.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "The preflight does not include previews.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Delete preflight needs only the exact base set identity.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "The preflight does not include previews.", "reviewAtSpec": "4.5" } ] }, { "operationId": "appPreviewSets_deleteInstance", "method": "delete", "path": "/v1/appPreviewSets/{id}", "role": "primary" } @@ -366,8 +366,8 @@ "role": "supporting", "condition": "Confirm the canonical target identity before the cascade delete.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Delete preflight needs only the exact base set identity.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "The preflight does not include screenshots.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Delete preflight needs only the exact base set identity.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "The preflight does not include screenshots.", "reviewAtSpec": "4.5" } ] }, { "operationId": "appScreenshotSets_deleteInstance", "method": "delete", "path": "/v1/appScreenshotSets/{id}", "role": "primary" } @@ -417,14 +417,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact-ID path proves resource identity; the base appPreviewSet projection includes validated attributes plus optional self and parent linkage when present, so included localization and appPreview resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "The nested limit applies only when appPreviews is included; callers page previews through screenshots_list_previews.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -462,14 +462,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact-ID path proves resource identity; the base appScreenshotSet projection includes validated attributes plus optional self and parent linkage when present, so included localization and appScreenshot resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "The nested limit applies only when appScreenshots is included; callers page screenshots through screenshots_list.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -507,7 +507,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact-ID path proves resource identity; screenshots_get returns a validated base projection with attributes plus optional resource self and screenshot-set linkage when present, so included appScreenshotSet resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -547,7 +547,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact-ID path proves resource identity; screenshots_get_preview returns a validated base projection with attributes plus optional resource self and preview-set linkage when present, so included appPreviewSet resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -592,7 +592,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact appScreenshotSet relationship path proves set scope; screenshots_list returns ordered validated base projections with attributes plus optional resource self and set linkage when present, so included appScreenshotSet resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -638,14 +638,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact localization relationship path proves parent scope; each base preview-set projection includes validated identity, previewType, optional self, and optional parent linkage when present, so included resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "Apple applies this limit only when appPreviews is included; screenshots_list_preview_sets does not request that relationship, and callers page previews through screenshots_list_previews instead.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -661,14 +661,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact localization relationship path proves parent scope; each base preview-set projection includes validated identity, previewType, optional self, and optional parent linkage when present, so included resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "The tool does not include child previews; callers page them through screenshots_list_previews.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -684,14 +684,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact localization relationship path proves parent scope; each base preview-set projection includes validated identity, previewType, optional self, and optional parent linkage when present, so included resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[appPreviews]", "disposition": "intentionallyOmitted", "reason": "The tool does not include child previews; callers page them through screenshots_list_previews.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -753,7 +753,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact appPreviewSet relationship path proves set scope; screenshots_list_previews returns ordered validated base projections with attributes plus optional resource self and set linkage when present, so included appPreviewSet resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -803,14 +803,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact localization relationship path proves parent scope; each base screenshot-set projection includes validated identity, screenshotDisplayType, optional self, and optional parent linkage when present, so included resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "Apple applies this limit only when appScreenshots is included; screenshots_list_sets does not request that relationship, and callers page screenshots through screenshots_list instead.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -826,14 +826,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact localization relationship path proves parent scope; each base screenshot-set projection includes validated identity, screenshotDisplayType, optional self, and optional parent linkage when present, so included resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "The tool does not include child screenshots; callers page them through screenshots_list.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -849,14 +849,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact localization relationship path proves parent scope; each base screenshot-set projection includes validated identity, screenshotDisplayType, optional self, and optional parent linkage when present, so included resources are unnecessary and not decoded.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[appScreenshots]", "disposition": "intentionallyOmitted", "reason": "The tool does not include child screenshots; callers page them through screenshots_list.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -922,7 +922,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Reorder verification needs only ordered base screenshot IDs.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -985,7 +985,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Reorder verification needs only ordered base preview IDs.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -1098,7 +1098,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "This conditional GET only reconciles the reserved appScreenshot's assetDeliveryState; Apple's appScreenshotSet inclusion cannot affect processing classification and the upload decoder intentionally ignores included resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "inputs": [ @@ -1121,7 +1121,7 @@ { "sourceKind": "fixed", "location": "query", "appleName": "limit", "fixedValue": 200 } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact appScreenshotSet relationship path proves set scope; optional returned linkage is validated when present and any contradiction is rejected.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact appScreenshotSet relationship path proves set scope; optional returned linkage is validated when present and any contradiction is rejected.", "reviewAtSpec": "4.5" } ] }, { @@ -1256,7 +1256,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Each conditional GET only reconciles that appScreenshot's assetDeliveryState; Apple's appScreenshotSet inclusion cannot affect batch processing classification and the upload decoder intentionally ignores included resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "inputs": [ @@ -1279,7 +1279,7 @@ { "sourceKind": "fixed", "location": "query", "appleName": "limit", "fixedValue": 200 } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact appScreenshotSet relationship path proves set scope; optional returned linkage is validated when present and any contradiction is rejected.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact appScreenshotSet relationship path proves set scope; optional returned linkage is validated when present and any contradiction is rejected.", "reviewAtSpec": "4.5" } ] }, { @@ -1427,7 +1427,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "This conditional GET only reconciles the reserved appPreview's videoDeliveryState or assetDeliveryState; Apple's appPreviewSet inclusion cannot affect processing classification and the upload decoder intentionally ignores included resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "inputs": [ @@ -1450,7 +1450,7 @@ { "sourceKind": "fixed", "location": "query", "appleName": "limit", "fixedValue": 200 } ], "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact appPreviewSet relationship path proves set scope; optional returned linkage is validated when present and any contradiction is rejected.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The exact appPreviewSet relationship path proves set scope; optional returned linkage is validated when present and any contradiction is rejected.", "reviewAtSpec": "4.5" } ] }, { diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/subscriptions.json b/Sources/asc-mcp/Resources/OperationManifest/tools/subscriptions.json index 2fd1fca..77da80d 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/subscriptions.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/subscriptions.json @@ -274,7 +274,7 @@ "appleName": "/included", "disposition": "intentionallyOmitted", "reason": "The tool links an existing subscription price point by ID. Apple's inline price-point graph adds no independent caller value and would duplicate typed price-point discovery and validation.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "inputs": [ @@ -1514,70 +1514,70 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[images]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[introductoryOffers]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[offerCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[planAvailabilities]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[prices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[promotionalOffers]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptionLocalizations]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[versions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[winBackOffers]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1620,14 +1620,14 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[availableTerritories]", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1669,7 +1669,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1711,28 +1711,28 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptionGroupLocalizations]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[versions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1774,7 +1774,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1816,7 +1816,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1858,7 +1858,7 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1900,28 +1900,28 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[customCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[oneTimeUseCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[prices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -1963,7 +1963,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2120,7 +2120,7 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2162,7 +2162,7 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2204,14 +2204,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[prices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2253,7 +2253,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2295,7 +2295,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2337,14 +2337,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[prices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2386,49 +2386,49 @@ "appleName": "filter[referenceName]", "disposition": "intentionallyOmitted", "reason": "This deprecated compatibility inventory keeps its narrow legacy contract; authoritative list tools provide filtered discovery.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[subscriptions.state]", "disposition": "intentionallyOmitted", "reason": "This deprecated compatibility inventory keeps its narrow legacy contract; authoritative list tools provide filtered discovery.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptionGroupLocalizations]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[versions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "sort", "disposition": "intentionallyOmitted", "reason": "This deprecated compatibility inventory keeps its narrow legacy contract; authoritative list tools provide filtered discovery.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -2455,14 +2455,14 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[availableTerritories]", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -2489,28 +2489,28 @@ "appleName": "filter[planType]", "disposition": "intentionallyOmitted", "reason": "The current tool retains territory-focused pricing semantics; plan-aware selection requires a dedicated result contract.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[subscriptionPricePoint]", "disposition": "intentionallyOmitted", "reason": "The current tool retains territory-focused pricing semantics; plan-aware selection requires a dedicated result contract.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2568,70 +2568,70 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[images]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[introductoryOffers]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[offerCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[planAvailabilities]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[prices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[promotionalOffers]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptionLocalizations]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[versions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[winBackOffers]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2759,7 +2759,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2813,28 +2813,28 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptionGroupLocalizations]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[subscriptions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[versions]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2909,7 +2909,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -2963,7 +2963,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3024,7 +3024,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3078,7 +3078,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3139,28 +3139,28 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[customCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[oneTimeUseCodes]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[prices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3221,7 +3221,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3494,7 +3494,7 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control and requires the same value on every continuation; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3577,7 +3577,7 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control and requires the same value on every continuation; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3653,7 +3653,7 @@ "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control and requires the same value on every continuation; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3728,7 +3728,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3789,14 +3789,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[prices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3857,7 +3857,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3918,14 +3918,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[prices]", "disposition": "intentionallyOmitted", "reason": "The corresponding embedded relationship is not caller-configurable; dedicated relationship tools provide paginated access where supported.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -3979,28 +3979,28 @@ "appleName": "filter[planType]", "disposition": "intentionallyOmitted", "reason": "The current tool retains territory-focused pricing semantics; plan-aware selection requires a dedicated result contract.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "filter[upfrontPricePointId]", "disposition": "intentionallyOmitted", "reason": "The current tool retains territory-focused pricing semantics; plan-aware selection requires a dedicated result contract.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit", "disposition": "internalControl", "reason": "The handler fixes this query control on the initial request; it is not exposed as a direct public input.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -4086,7 +4086,7 @@ "appleName": "filter[subscriptionPricePoint]", "disposition": "intentionallyOmitted", "reason": "The aggregate summarizes the complete territory and optional plan schedule; narrowing to one price point would make current and scheduled classifications incomplete.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] } @@ -4322,33 +4322,47 @@ "role": "primary", "condition": null, "optionalParameterClassifications": [ + { + "location": "body", + "appleName": "/data/attributes/marketSettings", + "disposition": "intentionallyOmitted", + "reason": "Added in Apple 4.5 and not yet exposed by the general subscription update; omission leaves the stored market settings unchanged.", + "reviewAtSpec": "4.5" + }, + { + "location": "body", + "appleName": "/data/attributes/multiSeatStatus", + "disposition": "intentionallyOmitted", + "reason": "Added in Apple 4.5 and not yet exposed by the general subscription update; omission leaves the stored multi-seat status unchanged.", + "reviewAtSpec": "4.5" + }, { "location": "body", "appleName": "/data/relationships/introductoryOffers", "disposition": "intentionallyOmitted", "reason": "The general subscription update remains attribute-only; dedicated introductory-offer tools manage this relationship without exposing a replacement-capable inline graph.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "body", "appleName": "/data/relationships/prices", "disposition": "intentionallyOmitted", "reason": "The general subscription update remains attribute-only; dedicated price tools validate territory and price-point identifiers without exposing a replacement-capable inline graph.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "body", "appleName": "/data/relationships/promotionalOffers", "disposition": "intentionallyOmitted", "reason": "The general subscription update remains attribute-only; dedicated promotional-offer tools preserve offer and pricing invariants without exposing a replacement-capable inline graph.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "body", "appleName": "/included", "disposition": "intentionallyOmitted", "reason": "Apple's included resources form the inline create graph coupled to the omitted offer and price relationships; dedicated typed lifecycle tools provide safer validated mutations and returned resource IDs.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ], "inputs": [ @@ -5108,7 +5122,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -5254,7 +5268,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The public tool returns its stable base projection instead of arbitrary relationship expansion; dedicated commerce tools cover related resources.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -5354,9 +5368,9 @@ "operations": [{ "operationId": "subscriptionVersions_getInstance", "method": "get", "path": "/v1/subscriptionVersions/{id}", "role": "primary", "condition": null, "optionalParameterClassifications": [ - {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.4.1"}, - {"location":"query","appleName":"limit[images]","disposition":"intentionallyOmitted","reason":"Images are paged through subscriptions_list_version_images.","reviewAtSpec":"4.4.1"}, - {"location":"query","appleName":"limit[localizations]","disposition":"intentionallyOmitted","reason":"Localizations are paged through subscriptions_list_version_localizations.","reviewAtSpec":"4.4.1"} + {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.5"}, + {"location":"query","appleName":"limit[images]","disposition":"intentionallyOmitted","reason":"Images are paged through subscriptions_list_version_images.","reviewAtSpec":"4.5"}, + {"location":"query","appleName":"limit[localizations]","disposition":"intentionallyOmitted","reason":"Localizations are paged through subscriptions_list_version_localizations.","reviewAtSpec":"4.5"} ] }], "fields": [{"toolField":"version_id","sourceKind":"parameter","operationId":"subscriptionVersions_getInstance","location":"path","appleName":"id"}], @@ -5393,9 +5407,9 @@ "operations": [{ "operationId":"subscriptions_versions_getToManyRelated","method":"get","path":"/v1/subscriptions/{id}/versions","role":"primary","condition":null, "optionalParameterClassifications":[ - {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable paginated projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.4.1"}, - {"location":"query","appleName":"limit[images]","disposition":"intentionallyOmitted","reason":"Images have their own bounded continuation tool.","reviewAtSpec":"4.4.1"}, - {"location":"query","appleName":"limit[localizations]","disposition":"intentionallyOmitted","reason":"Localizations have their own bounded continuation tool.","reviewAtSpec":"4.4.1"} + {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable paginated projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.5"}, + {"location":"query","appleName":"limit[images]","disposition":"intentionallyOmitted","reason":"Images have their own bounded continuation tool.","reviewAtSpec":"4.5"}, + {"location":"query","appleName":"limit[localizations]","disposition":"intentionallyOmitted","reason":"Localizations have their own bounded continuation tool.","reviewAtSpec":"4.5"} ] }], "fields":[ @@ -5434,7 +5448,7 @@ { "tool":"subscriptions_list_version_localizations","kind":"direct","status":"partial","effect":"read","implementationState":"asBuilt", "operations":[{"operationId":"subscriptionVersions_localizations_getToManyRelated","method":"get","path":"/v1/subscriptionVersions/{id}/localizations","role":"primary","condition":null,"optionalParameterClassifications":[ - {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.4.1"} + {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.5"} ]}], "fields":[ {"toolField":"version_id","sourceKind":"parameter","operationId":"subscriptionVersions_localizations_getToManyRelated","location":"path","appleName":"id"}, @@ -5462,7 +5476,7 @@ { "tool":"subscriptions_get_version_localization","kind":"direct","status":"partial","effect":"read","implementationState":"asBuilt", "operations":[{"operationId":"subscriptionLocalizationsV2_getInstance","method":"get","path":"/v2/subscriptionLocalizations/{id}","role":"primary","condition":null,"optionalParameterClassifications":[ - {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.4.1"} + {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.5"} ]}], "fields":[{"toolField":"localization_id","sourceKind":"parameter","operationId":"subscriptionLocalizationsV2_getInstance","location":"path","appleName":"id"}], "response":{"mode":"opaque","sources":[{"operationId":"subscriptionLocalizationsV2_getInstance","statusCode":"200","mediaType":"application/json"}],"fields":[]}, @@ -5633,8 +5647,8 @@ { "tool":"subscriptions_get_group_version","kind":"direct","status":"partial","effect":"read","implementationState":"asBuilt", "operations":[{"operationId":"subscriptionGroupVersions_getInstance","method":"get","path":"/v1/subscriptionGroupVersions/{id}","role":"primary","condition":null,"optionalParameterClassifications":[ - {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.4.1"}, - {"location":"query","appleName":"limit[localizations]","disposition":"intentionallyOmitted","reason":"Localizations are paged through subscriptions_list_group_version_localizations.","reviewAtSpec":"4.4.1"} + {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.5"}, + {"location":"query","appleName":"limit[localizations]","disposition":"intentionallyOmitted","reason":"Localizations are paged through subscriptions_list_group_version_localizations.","reviewAtSpec":"4.5"} ]}], "fields":[{"toolField":"version_id","sourceKind":"parameter","operationId":"subscriptionGroupVersions_getInstance","location":"path","appleName":"id"}], "response":{ @@ -5657,8 +5671,8 @@ { "tool":"subscriptions_list_group_versions","kind":"direct","status":"partial","effect":"read","implementationState":"asBuilt", "operations":[{"operationId":"subscriptionGroups_versions_getToManyRelated","method":"get","path":"/v1/subscriptionGroups/{id}/versions","role":"primary","condition":null,"optionalParameterClassifications":[ - {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable paginated projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.4.1"}, - {"location":"query","appleName":"limit[localizations]","disposition":"intentionallyOmitted","reason":"Localizations have their own bounded continuation tool.","reviewAtSpec":"4.4.1"} + {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable paginated projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.5"}, + {"location":"query","appleName":"limit[localizations]","disposition":"intentionallyOmitted","reason":"Localizations have their own bounded continuation tool.","reviewAtSpec":"4.5"} ]}], "fields":[ {"toolField":"group_id","sourceKind":"parameter","operationId":"subscriptionGroups_versions_getToManyRelated","location":"path","appleName":"id"}, @@ -5689,7 +5703,7 @@ { "tool":"subscriptions_list_group_version_localizations","kind":"direct","status":"partial","effect":"read","implementationState":"asBuilt", "operations":[{"operationId":"subscriptionGroupVersions_localizations_getToManyRelated","method":"get","path":"/v1/subscriptionGroupVersions/{id}/localizations","role":"primary","condition":null,"optionalParameterClassifications":[ - {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.4.1"} + {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.5"} ]}], "fields":[ {"toolField":"version_id","sourceKind":"parameter","operationId":"subscriptionGroupVersions_localizations_getToManyRelated","location":"path","appleName":"id"}, @@ -5717,7 +5731,7 @@ { "tool":"subscriptions_get_group_version_localization","kind":"direct","status":"partial","effect":"read","implementationState":"asBuilt", "operations":[{"operationId":"subscriptionGroupLocalizationsV2_getInstance","method":"get","path":"/v2/subscriptionGroupLocalizations/{id}","role":"primary","condition":null,"optionalParameterClassifications":[ - {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.4.1"} + {"location":"query","appleName":"include","disposition":"intentionallyOmitted","reason":"The stable projection does not expose arbitrary relationship expansion.","reviewAtSpec":"4.5"} ]}], "fields":[{"toolField":"localization_id","sourceKind":"parameter","operationId":"subscriptionGroupLocalizationsV2_getInstance","location":"path","appleName":"id"}], "response":{"mode":"opaque","sources":[{"operationId":"subscriptionGroupLocalizationsV2_getInstance","statusCode":"200","mediaType":"application/json"}],"fields":[]}, diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/versions.json b/Sources/asc-mcp/Resources/OperationManifest/tools/versions.json index 362b000..6dacc4e 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/versions.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/versions.json @@ -59,8 +59,8 @@ "path": "/v1/reviewSubmissions/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/attributes/platform", "disposition": "intentionallyOmitted", "reason": "Cancellation targets an existing submission and does not change its platform.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/attributes/submitted", "disposition": "intentionallyOmitted", "reason": "Cancellation fixes canceled=true and never combines cancellation with the distinct submit transition.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/attributes/platform", "disposition": "intentionallyOmitted", "reason": "Cancellation targets an existing submission and does not change its platform.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/attributes/submitted", "disposition": "intentionallyOmitted", "reason": "Cancellation fixes canceled=true and never combines cancellation with the distinct submit transition.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -119,8 +119,8 @@ "path": "/v1/appStoreVersions", "role": "primary", "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/relationships/appStoreVersionLocalizations", "disposition": "intentionallyOmitted", "reason": "Version creation and localization creation are separate MCP operations with independent validation and recovery.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/build", "disposition": "intentionallyOmitted", "reason": "Build attachment is intentionally handled by app_versions_attach_build after version creation.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/relationships/appStoreVersionLocalizations", "disposition": "intentionallyOmitted", "reason": "Version creation and localization creation are separate MCP operations with independent validation and recovery.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/build", "disposition": "intentionallyOmitted", "reason": "Build attachment is intentionally handled by app_versions_attach_build after version creation.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -353,9 +353,9 @@ "path": "/v1/appStoreVersions/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Legacy experiments are not included by the fixed version detail projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not included by the fixed version detail projection.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included by the fixed version detail projection.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Legacy experiments are not included by the fixed version detail projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not included by the fixed version detail projection.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included by the fixed version detail projection.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -477,9 +477,9 @@ "path": "/v1/apps/{id}/appStoreVersions", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Legacy experiments are not among the fixed included relationships for the version list.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not among the fixed included relationships for the version list.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not among the fixed included relationships for the version list.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Legacy experiments are not among the fixed included relationships for the version list.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not among the fixed included relationships for the version list.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not among the fixed included relationships for the version list.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -667,10 +667,10 @@ "role": "supporting", "condition": "Always used to validate versionString and releasable state before the irreversible request.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The irreversible-action preflight reads only fixed version attributes and does not expand relationships.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Legacy experiments are not included by the release preflight.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not included by the release preflight.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included by the release preflight.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The irreversible-action preflight reads only fixed version attributes and does not expand relationships.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Legacy experiments are not included by the release preflight.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not included by the release preflight.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included by the release preflight.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -743,7 +743,7 @@ "role": "supporting", "condition": "Determines whether to create review details or update the existing resource.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appStoreReviewAttachments]", "disposition": "intentionallyOmitted", "reason": "Review attachments are managed by ReviewAttachmentsWorker and are not included in this existence lookup.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appStoreReviewAttachments]", "disposition": "intentionallyOmitted", "reason": "Review attachments are managed by ReviewAttachmentsWorker and are not included in this existence lookup.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -767,10 +767,10 @@ "role": "conditional", "condition": "Used only after a 404 from the related review-detail lookup to prove the parent version exists before creating a child resource.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The parent-existence check needs only a fixed version field and does not expand relationships.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Experiments are not included by the parent-existence check.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not included by the parent-existence check.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included by the parent-existence check.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The parent-existence check needs only a fixed version field and does not expand relationships.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Experiments are not included by the parent-existence check.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not included by the parent-existence check.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included by the parent-existence check.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -982,9 +982,9 @@ "role": "supporting", "condition": "Always validates the version's owning app before creating a review submission.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Legacy experiments are not included by the submission preflight.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not included by the submission preflight.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included by the submission preflight.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Legacy experiments are not included by the submission preflight.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not included by the submission preflight.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included by the submission preflight.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -1025,19 +1025,19 @@ "path": "/v1/reviewSubmissionItems", "role": "supporting", "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/relationships/appCustomProductPageVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; custom product page versions require a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/appEvent", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; in-app events require a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/appStoreVersionExperiment", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; product-page experiments require a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/appStoreVersionExperimentV2", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; V2 experiments require a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/backgroundAssetVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; background asset versions require a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/gameCenterAchievementVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; Game Center content requires a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/gameCenterActivityVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; Game Center content requires a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/gameCenterChallengeVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; Game Center content requires a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/gameCenterLeaderboardSetVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; Game Center content requires a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/gameCenterLeaderboardVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; Game Center content requires a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/inAppPurchaseVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; in-app purchase versions require a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/subscriptionGroupVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; subscription group versions require a separate review-item workflow.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/subscriptionVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; subscription versions require a separate review-item workflow.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/relationships/appCustomProductPageVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; custom product page versions require a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/appEvent", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; in-app events require a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/appStoreVersionExperiment", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; product-page experiments require a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/appStoreVersionExperimentV2", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; V2 experiments require a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/backgroundAssetVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; background asset versions require a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/gameCenterAchievementVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; Game Center content requires a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/gameCenterActivityVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; Game Center content requires a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/gameCenterChallengeVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; Game Center content requires a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/gameCenterLeaderboardSetVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; Game Center content requires a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/gameCenterLeaderboardVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; Game Center content requires a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/inAppPurchaseVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; in-app purchase versions require a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/subscriptionGroupVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; subscription group versions require a separate review-item workflow.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/subscriptionVersion", "disposition": "intentionallyOmitted", "reason": "This tool submits exactly one App Store version; subscription versions require a separate review-item workflow.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -1072,8 +1072,8 @@ "role": "primary", "condition": "Marks the assembled review submission as submitted.", "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/attributes/canceled", "disposition": "intentionallyOmitted", "reason": "Submission fixes submitted=true and never combines submission with the distinct cancellation transition.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/attributes/platform", "disposition": "intentionallyOmitted", "reason": "The platform is set when the review submission is created and is not changed during confirmation.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/attributes/canceled", "disposition": "intentionallyOmitted", "reason": "Submission fixes submitted=true and never combines submission with the distinct cancellation transition.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/attributes/platform", "disposition": "intentionallyOmitted", "reason": "The platform is set when the review submission is created and is not changed during confirmation.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -1161,8 +1161,8 @@ "path": "/v1/appStoreVersions/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/relationships/appClipDefaultExperience", "disposition": "intentionallyOmitted", "reason": "App Clip default-experience relationship management is outside the version-attribute update contract.", "reviewAtSpec": "4.4.1" }, - { "location": "body", "appleName": "/data/relationships/build", "disposition": "intentionallyOmitted", "reason": "Build relationship updates are handled by app_versions_attach_build.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/relationships/appClipDefaultExperience", "disposition": "intentionallyOmitted", "reason": "App Clip default-experience relationship management is outside the version-attribute update contract.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/relationships/build", "disposition": "intentionallyOmitted", "reason": "Build relationship updates are handled by app_versions_attach_build.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -1259,9 +1259,9 @@ "role": "supporting", "condition": "Used only when app_info_id is omitted; resolves the owning app and current appVersionState from legacy version_id.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Legacy experiments are not included during App Info resolution.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not included during App Info resolution.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included during App Info resolution.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appStoreVersionExperiments]", "disposition": "intentionallyOmitted", "reason": "Legacy experiments are not included during App Info resolution.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "V2 experiments are not included during App Info resolution.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionLocalizations]", "disposition": "intentionallyOmitted", "reason": "Localizations are not included during App Info resolution.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -1285,7 +1285,7 @@ "role": "supporting", "condition": "Used only for legacy version_id resolution; requires Apple's page links, strictly paginates the complete App Info collection, and selects exactly one AppInfo whose state equals the version state or an explicit documented state mapping.", "optionalParameterClassifications": [ - { "location": "query", "appleName": "limit[appInfoLocalizations]", "disposition": "intentionallyOmitted", "reason": "App Info localizations are not included during age-rating declaration resolution.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "limit[appInfoLocalizations]", "disposition": "intentionallyOmitted", "reason": "App Info localizations are not included during age-rating declaration resolution.", "reviewAtSpec": "4.5" } ], "inputs": [ { @@ -1342,7 +1342,8 @@ "path": "/v1/ageRatingDeclarations/{id}", "role": "primary", "optionalParameterClassifications": [ - { "location": "body", "appleName": "/data/attributes/ageRatingOverride", "disposition": "intentionallyOmitted", "reason": "Apple 4.4.1 exposes the current ageRatingOverrideV2 field separately; the MCP age_rating_override input targets that current field.", "reviewAtSpec": "4.4.1" } + { "location": "body", "appleName": "/data/attributes/ageRatingOverride", "disposition": "intentionallyOmitted", "reason": "Apple 4.5 exposes the current ageRatingOverrideV2 field separately; the MCP age_rating_override input targets that current field.", "reviewAtSpec": "4.5" }, + { "location": "body", "appleName": "/data/attributes/gracRatingClassificationNumber", "disposition": "intentionallyOmitted", "reason": "Added in Apple 4.5 for the Korean GRAC rating classification number and not yet exposed by the age-rating update; omission leaves the stored value unchanged.", "reviewAtSpec": "4.5" } ], "inputs": [ { diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/xcode_cloud.json b/Sources/asc-mcp/Resources/OperationManifest/tools/xcode_cloud.json index 1c60147..bcece2f 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/xcode_cloud.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/xcode_cloud.json @@ -1080,25 +1080,25 @@ "path": "/v1/ciProducts/{id}/app", "role": "primary", "optionalParameterClassifications": [ - { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "This tool is a compact product-to-app membership projection; apps_get_details, apps_get_metadata, and domain-specific app tools replace the very large transitive app include graph.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appEncryptionDeclarations]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appEncryptionDeclarations; use the existing app and export-compliance tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include betaGroups; use the existing beta group tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appStoreVersions; use apps_list_versions and version tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[preReleaseVersions]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include preReleaseVersions; use the existing pre-release tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[betaAppLocalizations]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include betaAppLocalizations; use the existing beta app tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include builds; use the existing build tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appInfos]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appInfos; use the existing app info tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appClips]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appClips; this unrelated graph is outside the membership lookup.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[inAppPurchases]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include inAppPurchases; use the existing IAP tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[subscriptionGroups]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include subscriptionGroups; use the existing subscription tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include gameCenterEnabledVersions; this unrelated graph is outside the membership lookup.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appCustomProductPages]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appCustomProductPages; use the existing custom page tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[inAppPurchasesV2]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include inAppPurchasesV2; use the existing IAP tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[promotedPurchases]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include promotedPurchases; use the existing promoted purchase tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appEvents]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appEvents; use the existing app event tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[reviewSubmissions]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include reviewSubmissions; use the existing review submission tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appStoreVersionExperimentsV2; use the existing product page optimization tools.", "reviewAtSpec": "4.4.1" }, - { "location": "query", "appleName": "limit[androidToIosAppMappingDetails]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include androidToIosAppMappingDetails; this unrelated graph is outside the membership lookup.", "reviewAtSpec": "4.4.1" } + { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "This tool is a compact product-to-app membership projection; apps_get_details, apps_get_metadata, and domain-specific app tools replace the very large transitive app include graph.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appEncryptionDeclarations]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appEncryptionDeclarations; use the existing app and export-compliance tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaGroups]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include betaGroups; use the existing beta group tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersions]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appStoreVersions; use apps_list_versions and version tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[preReleaseVersions]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include preReleaseVersions; use the existing pre-release tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[betaAppLocalizations]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include betaAppLocalizations; use the existing beta app tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include builds; use the existing build tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appInfos]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appInfos; use the existing app info tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appClips]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appClips; this unrelated graph is outside the membership lookup.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[inAppPurchases]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include inAppPurchases; use the existing IAP tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[subscriptionGroups]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include subscriptionGroups; use the existing subscription tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[gameCenterEnabledVersions]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include gameCenterEnabledVersions; this unrelated graph is outside the membership lookup.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appCustomProductPages]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appCustomProductPages; use the existing custom page tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[inAppPurchasesV2]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include inAppPurchasesV2; use the existing IAP tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[promotedPurchases]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include promotedPurchases; use the existing promoted purchase tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appEvents]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appEvents; use the existing app event tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[reviewSubmissions]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include reviewSubmissions; use the existing review submission tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[appStoreVersionExperimentsV2]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include appStoreVersionExperimentsV2; use the existing product page optimization tools.", "reviewAtSpec": "4.5" }, + { "location": "query", "appleName": "limit[androidToIosAppMappingDetails]", "disposition": "intentionallyOmitted", "reason": "The compact membership projection does not include androidToIosAppMappingDetails; this unrelated graph is outside the membership lookup.", "reviewAtSpec": "4.5" } ] } ], @@ -1219,14 +1219,14 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Deletion preflight validates only the exact product identity and current name; it inventories workflows and build runs through dedicated fully paginated supporting operations.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[primaryRepositories]", "disposition": "intentionallyOmitted", "reason": "Primary repositories are not included by the exact deletion identity preflight.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -1246,7 +1246,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The deletion receipt needs the complete direct workflow identity inventory, not expanded workflow relationships.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -1266,28 +1266,28 @@ "appleName": "filter[builds]", "disposition": "intentionallyOmitted", "reason": "Deletion impact must inventory every build run for the product rather than a caller-selected build subset.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "sort", "disposition": "intentionallyOmitted", "reason": "The confirmation digest sorts validated identities locally, so Apple response ordering cannot affect the receipt.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The deletion receipt needs the complete direct build-run identity inventory, not expanded relationships.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Build resources are not included by the deletion inventory request.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -1461,7 +1461,7 @@ "appleName": "include", "disposition": "intentionallyOmitted", "reason": "Deletion preflight validates only the exact workflow identity and current name; it inventories build runs through the dedicated fully paginated supporting operation.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, @@ -1481,28 +1481,28 @@ "appleName": "filter[builds]", "disposition": "intentionallyOmitted", "reason": "Deletion impact must inventory every build run for the workflow rather than a caller-selected build subset.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "sort", "disposition": "intentionallyOmitted", "reason": "The confirmation digest sorts validated identities locally, so Apple response ordering cannot affect the receipt.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "include", "disposition": "intentionallyOmitted", "reason": "The deletion receipt needs the complete direct build-run identity inventory, not expanded relationships.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" }, { "location": "query", "appleName": "limit[builds]", "disposition": "intentionallyOmitted", "reason": "Build resources are not included by the deletion inventory request.", - "reviewAtSpec": "4.4.1" + "reviewAtSpec": "4.5" } ] }, From 261ef52658f6135899e56e8d3f16f04629ab0298 Mon Sep 17 00:00:00 2001 From: Aleksei Zelentsov Date: Thu, 24 Sep 2026 02:08:11 +0300 Subject: [PATCH 2/4] fix(subscriptions)!: require plan_types for adjusted equalizations App Store Connect API 4.5 marks filter[planType] as required on GET /v1/subscriptionPricePoints/{id}/adjustedEqualizations; 4.4.1 left it optional. subscriptions_list_price_point_adjusted_equalizations published plan_types as optional and sent filter[planType] only when it was supplied, so every call without it produced a request that Apple's current contract rejects. The contract gate did not flag this because the input is bound and the checker does not compare Apple requiredness with the MCP schema. plan_types is now required in the input schema, and a missing or empty value fails before any network request. The sibling subscriptions_list_price_point_equalizations keeps plan_types optional because Apple 4.5 keeps that filter optional. BREAKING CHANGE: MCP clients must pass plan_types (MONTHLY, UPFRONT, or both) to subscriptions_list_price_point_adjusted_equalizations. --- CHANGELOG.md | 4 +++ .../tools/subscriptions.json | 2 +- ...tionsWorker+PlanAvailabilityHandlers.swift | 7 +++-- ...rker+PlanAvailabilityToolDefinitions.swift | 4 +-- ...riptionPlanAvailabilityContractTests.swift | 10 +++++-- .../Workers/SubscriptionsV3WorkerTests.swift | 30 +++++++++++++++++++ 6 files changed, 48 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed45166..c7d452e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Breaking Changes + +- `subscriptions_list_price_point_adjusted_equalizations` now requires `plan_types`. App Store Connect API 4.5 marks `filter[planType]` as required on `GET /v1/subscriptionPricePoints/{id}/adjustedEqualizations`, where 4.4.1 left it optional, so a call without it produced a request that Apple's current contract rejects. The input schema now lists `plan_types` as required, and a missing or empty value fails locally before any network request. Pass `MONTHLY`, `UPFRONT`, or both. `subscriptions_list_price_point_equalizations` is unchanged because Apple keeps its plan filter optional. + ## [4.1.6] - 2026-08-22 ### Fixed diff --git a/Sources/asc-mcp/Resources/OperationManifest/tools/subscriptions.json b/Sources/asc-mcp/Resources/OperationManifest/tools/subscriptions.json index 77da80d..1b5354f 100644 --- a/Sources/asc-mcp/Resources/OperationManifest/tools/subscriptions.json +++ b/Sources/asc-mcp/Resources/OperationManifest/tools/subscriptions.json @@ -3473,7 +3473,7 @@ { "outputField": "next_url", "operationId": "subscriptionPricePoints_adjustedEqualizations_getToManyRelated", "jsonPointer": "/links/next", "localRole": "Apple continuation URL or null." } ] }, - "note": "Exposes Apple 4.4.1 adjusted equalizations with all four documented filters, typed plan values, the 8000-item limit, included territory currency, total, and strict continuation scope." + "note": "Exposes Apple 4.5 adjusted equalizations with all four documented filters, typed plan values, the 8000-item limit, included territory currency, total, and strict continuation scope. Apple 4.5 requires filter[planType], so plan_types is required and a call without it fails before network access." }, { "tool": "subscriptions_list_price_point_equalizations", diff --git a/Sources/asc-mcp/Workers/SubscriptionsWorker/SubscriptionsWorker+PlanAvailabilityHandlers.swift b/Sources/asc-mcp/Workers/SubscriptionsWorker/SubscriptionsWorker+PlanAvailabilityHandlers.swift index 9600630..b920cd2 100644 --- a/Sources/asc-mcp/Workers/SubscriptionsWorker/SubscriptionsWorker+PlanAvailabilityHandlers.swift +++ b/Sources/asc-mcp/Workers/SubscriptionsWorker/SubscriptionsWorker+PlanAvailabilityHandlers.swift @@ -354,13 +354,14 @@ extension SubscriptionsWorker { try validateSubscriptionPlanQueryIdentifiers(value, field: "upfront_price_point_ids") query["filter[upfrontPricePointId]"] = value } - if let value = try subscriptionCatalogQueryValue( + guard let planTypes = try subscriptionCatalogQueryValue( arguments["plan_types"], field: "plan_types", allowedValues: Set(ASCSubscriptionPlanType.allCases.map(\.rawValue)) - ) { - query["filter[planType]"] = value + ) else { + throw ASCError.parsing("plan_types is required because App Store Connect API 4.5 requires filter[planType] for adjusted equalizations") } + query["filter[planType]"] = planTypes let response: ASCSubscriptionAdjustedPricePointsResponse if let nextURL = try paginationURL(from: arguments["next_url"]) { diff --git a/Sources/asc-mcp/Workers/SubscriptionsWorker/SubscriptionsWorker+PlanAvailabilityToolDefinitions.swift b/Sources/asc-mcp/Workers/SubscriptionsWorker/SubscriptionsWorker+PlanAvailabilityToolDefinitions.swift index 4505a8c..cb75b48 100644 --- a/Sources/asc-mcp/Workers/SubscriptionsWorker/SubscriptionsWorker+PlanAvailabilityToolDefinitions.swift +++ b/Sources/asc-mcp/Workers/SubscriptionsWorker/SubscriptionsWorker+PlanAvailabilityToolDefinitions.swift @@ -104,13 +104,13 @@ extension SubscriptionsWorker { "subscription_ids": subscriptionPlanIdentifierListSchema("Filter by one or more subscription IDs"), "upfront_price_point_ids": subscriptionPlanIdentifierListSchema("Filter by one or more upfront price point IDs"), "plan_types": subscriptionEnumListSchema( - "Filter by one or more Apple subscription plan types", + "Filter by one or more Apple subscription plan types; App Store Connect API 4.5 requires this filter", values: ASCSubscriptionPlanType.allCases.map(\.rawValue) ), "limit": subscriptionPlanLimitSchema(maximum: 8000), "next_url": subscriptionPlanNextURLSchema() ]), - "required": .array([.string("price_point_id")]) + "required": .array([.string("price_point_id"), .string("plan_types")]) ]) ) } diff --git a/Tests/ASCMCPTests/Workers/SubscriptionPlanAvailabilityContractTests.swift b/Tests/ASCMCPTests/Workers/SubscriptionPlanAvailabilityContractTests.swift index 2c33a50..294f76e 100644 --- a/Tests/ASCMCPTests/Workers/SubscriptionPlanAvailabilityContractTests.swift +++ b/Tests/ASCMCPTests/Workers/SubscriptionPlanAvailabilityContractTests.swift @@ -57,6 +57,8 @@ struct SubscriptionPlanAvailabilityContractTests { #expect(try planObject(adjusted["limit"])["maximum"] == .int(8000)) #expect(try planObject(adjusted["limit"])["default"] == .int(25)) #expect(try planObject(adjusted["next_url"])["format"] == .string("uri-reference")) + let adjustedSchema = try planSchema(try #require(tools["subscriptions_list_price_point_adjusted_equalizations"])) + #expect(Set(try planArray(adjustedSchema["required"]).compactMap(\.stringValue)) == ["price_point_id", "plan_types"]) for field in ["territory_ids", "subscription_ids", "upfront_price_point_ids", "plan_types"] { #expect(try planArray(try planObject(adjusted[field])["oneOf"]).count == 2) } @@ -434,10 +436,12 @@ struct SubscriptionPlanAvailabilityContractTests { ("subscriptions_update_plan_availability", ["plan_availability_id": .string("availability-1"), "available_in_new_territories": .string("true")]), ("subscriptions_list_plan_availabilities", ["subscription_id": .string("sub-1"), "limit": .int(0)]), ("subscriptions_list_plan_availability_territories", ["plan_availability_id": .string("availability-1"), "limit": .int(201)]), - ("subscriptions_list_price_point_adjusted_equalizations", ["price_point_id": .string("price-point-1"), "limit": .int(8001)]), - ("subscriptions_list_price_point_adjusted_equalizations", ["price_point_id": .string("price-point-1"), "territory_ids": .array([.string("USA"), .string("USA")])]), - ("subscriptions_list_price_point_adjusted_equalizations", ["price_point_id": .string("price-point-1"), "subscription_ids": .array([.string("sub-1,sub-2")])]), + ("subscriptions_list_price_point_adjusted_equalizations", ["price_point_id": .string("price-point-1"), "plan_types": .string("MONTHLY"), "limit": .int(8001)]), + ("subscriptions_list_price_point_adjusted_equalizations", ["price_point_id": .string("price-point-1"), "plan_types": .string("MONTHLY"), "territory_ids": .array([.string("USA"), .string("USA")])]), + ("subscriptions_list_price_point_adjusted_equalizations", ["price_point_id": .string("price-point-1"), "plan_types": .string("MONTHLY"), "subscription_ids": .array([.string("sub-1,sub-2")])]), ("subscriptions_list_price_point_adjusted_equalizations", ["price_point_id": .string("price-point-1"), "plan_types": .array([.string("ANNUAL")])]), + ("subscriptions_list_price_point_adjusted_equalizations", ["price_point_id": .string("price-point-1")]), + ("subscriptions_list_price_point_adjusted_equalizations", ["price_point_id": .string("price-point-1"), "plan_types": .array([])]), ("subscriptions_list_plan_availabilities", ["subscription_id": .string("sub-1"), "unexpected": .bool(true)]) ] diff --git a/Tests/ASCMCPTests/Workers/SubscriptionsV3WorkerTests.swift b/Tests/ASCMCPTests/Workers/SubscriptionsV3WorkerTests.swift index 73f12ae..48f1ab7 100644 --- a/Tests/ASCMCPTests/Workers/SubscriptionsV3WorkerTests.swift +++ b/Tests/ASCMCPTests/Workers/SubscriptionsV3WorkerTests.swift @@ -241,6 +241,32 @@ struct SubscriptionsV3WorkerTests { #expect(await transport.requestCount() == 0) } + @Test("adjusted equalizations require plan types while equalizations keep them optional") + func adjustedEqualizationsRequirePlanTypes() async throws { + let transport = TestHTTPTransport(responses: [ + .init(statusCode: 200, body: #"{"data":[]}"#) + ]) + let worker = try await makeWorker(transport: transport) + + let equalizations = try await worker.handleTool(CallTool.Parameters( + name: "subscriptions_list_price_point_equalizations", + arguments: ["price_point_id": .string("pp-1")] + )) + let adjusted = try await worker.handleTool(CallTool.Parameters( + name: "subscriptions_list_price_point_adjusted_equalizations", + arguments: ["price_point_id": .string("pp-1")] + )) + + #expect(equalizations.isError != true) + #expect(adjusted.isError == true) + #expect(text(adjusted).contains("plan_types is required")) + let requests = await transport.recordedRequests() + #expect(requests.count == 1) + let request = try #require(requests.first) + #expect(request.url?.path == "/v1/subscriptionPricePoints/pp-1/equalizations") + #expect(queryItems(request)["filter[planType]"] == nil) + } + @Test("subscription pricing manifest binds Apple plan-aware filters") func pricingManifestBindsPlanAwareFilters() throws { let manifest = try ASCOperationManifestBundle.loadBundled() @@ -253,6 +279,10 @@ struct SubscriptionsV3WorkerTests { "subscriptions_list_price_point_equalizations": [ "upfront_price_point_ids": "filter[upfrontPricePointId]", "plan_types": "filter[planType]" + ], + "subscriptions_list_price_point_adjusted_equalizations": [ + "upfront_price_point_ids": "filter[upfrontPricePointId]", + "plan_types": "filter[planType]" ] ] From 7972e38c529761a96370e001de06ca5edebeee7e Mon Sep 17 00:00:00 2001 From: Aleksei Zelentsov Date: Thu, 24 Sep 2026 02:09:54 +0300 Subject: [PATCH 3/4] test(contract): move Apple 4.4.1 pins in tests and docs to 4.5 - Tests that assert manifest pins now expect specPin 4.5 (SHA-256 1e8ef250..., 1,270 operations), 425 waivers and 369 scope-rule operations, the optional-input pin 2,907 / 1,121 / 40 / 1,746 / 0 with identity 0ce3ff14..., and reviewAtSpec 4.5. The two export-compliance waiver reason checks follow the verified 4.5 wording. - ASCCoverageInventory moves to appleAPIVersionBaseline 4.5 and snapshot date 2026-09-24. The baseline is not independent of the contract pin: it was set to 4.4.1 together with the 4.4.1 contract hardening (4ae6293), the inventory drives ASC-OPENAPI-COVERAGE-GENERATED.md, which CI compares with the live Apple specification, and its rules classify all 973 Apple 4.5 paths. - ASC-OPENAPI-COVERAGE-GENERATED.md is regenerated from Apple 4.5: 973 paths, 1,270 operations, 0 unclassified. - README and CHANGELOG record the 4.5 pin and counts, the coverage matrix points at the 4.5 generated matrix, and the README promoted-image rows cite pinned OpenAPI 4.5, where promotedPurchaseImages is still absent. - Historical statements stay unchanged: deprecations since 4.4.1, features introduced in 4.4.1, earlier CHANGELOG entries, and test titles that describe 4.4.1 fixtures. --- ASC-COVERAGE-MATRIX-2026-05-05.md | 2 +- ASC-OPENAPI-COVERAGE-GENERATED.md | 18 +++++++++--------- CHANGELOG.md | 11 +++++++++++ README.md | 12 ++++++------ .../asc-mcp/Core/ASCCoverageInventory.swift | 4 ++-- .../Docs/ASCCoverageInventoryTests.swift | 4 ++-- .../BuildUploadsManifestContractTests.swift | 14 +++++++------- .../TestFlightManifestContractTests.swift | 12 ++++++------ .../XcodeCloudManifestContractTests.swift | 12 ++++++------ .../Workers/AppSearchKeywordsV319Tests.swift | 2 +- .../Workers/AppsSearchContractTests.swift | 2 +- ...ppsVersionsOptionalInputContractTests.swift | 2 +- .../Workers/BetaAppWorkerContractTests.swift | 6 +++--- .../CommerceCatalogOptionalInputTests.swift | 2 +- .../CommercePaginationHardeningTests.swift | 2 +- ...CustomProductPagesWorkerContractTests.swift | 2 +- .../ExportComplianceWorkerContractTests.swift | 4 ++-- .../MarketingOptionalInputContractTests.swift | 2 +- ...bscriptionPricingSummaryContractTests.swift | 2 +- ...iptionWriteOptionalInputContractTests.swift | 2 +- 20 files changed, 64 insertions(+), 53 deletions(-) diff --git a/ASC-COVERAGE-MATRIX-2026-05-05.md b/ASC-COVERAGE-MATRIX-2026-05-05.md index 267d1ac..cc7ae43 100644 --- a/ASC-COVERAGE-MATRIX-2026-05-05.md +++ b/ASC-COVERAGE-MATRIX-2026-05-05.md @@ -7,7 +7,7 @@ Source baseline: - Apple API 4.0 release notes: https://developer.apple.com/documentation/appstoreconnectapi/app-store-connect-api-4-0-release-notes - Apple Webhook notifications: https://developer.apple.com/documentation/appstoreconnectapi/webhook-notifications -Update 2026-05-07: automated OpenAPI coverage tooling is now available. See `ASC-OPENAPI-COVERAGE-GENERATED.md` for the generated Apple 4.4.1 path/operation matrix. +Update 2026-05-07: automated OpenAPI coverage tooling is now available. See `ASC-OPENAPI-COVERAGE-GENERATED.md` for the generated Apple 4.5 path/operation matrix. Update 2026-05-08: accessibility declaration management is covered by `accessibility_*` tools. Update 2026-05-08: local webhook receiver helpers are available for signature verification, payload parsing, and event/delivery triage. Update 2026-07-20: Apple 4.4.1 versioned commerce metadata, plan-type-aware subscription availability, adjusted equalizations, and generic review submissions are covered. diff --git a/ASC-OPENAPI-COVERAGE-GENERATED.md b/ASC-OPENAPI-COVERAGE-GENERATED.md index 4707462..9f7ebdb 100644 --- a/ASC-OPENAPI-COVERAGE-GENERATED.md +++ b/ASC-OPENAPI-COVERAGE-GENERATED.md @@ -1,21 +1,21 @@ # App Store Connect OpenAPI Coverage -Generated: 2026-07-21 +Generated: 2026-09-24 Sources: - Apple App Store Connect API overview: https://developer.apple.com/app-store-connect/api/ - Apple App Store Connect API documentation: https://developer.apple.com/documentation/appstoreconnectapi - Apple OpenAPI specification download: https://developer.apple.com/sample-code/app-store-connect/app-store-connect-openapi-specification.zip -Spec: App Store Connect API 4.4.1 (OpenAPI 3.0.1) -Apple paths: 966 -Apple operations: 1263 -Classified paths: 966 +Spec: App Store Connect API 4.5 (OpenAPI 3.0.1) +Apple paths: 973 +Apple operations: 1270 +Classified paths: 973 Unclassified paths: 0 ## Priority Gaps -- P0 App Store app metadata and release operations: Partial, 303 Apple paths, 380 operations. +- P0 App Store app metadata and release operations: Partial, 304 Apple paths, 381 operations. - P0 TestFlight builds, testers, groups, and beta app review: Partial, 115 Apple paths, 154 operations. - P1 Provisioning and identifiers: Partial, 32 Apple paths, 49 operations. - P1 Reporting, analytics, metrics, and diagnostics: Partial, 47 Apple paths, 56 operations. @@ -25,7 +25,7 @@ Unclassified paths: 0 | Domain | Status | Priority | Apple paths | Operations | Workers | Notes | |---|---|---:|---:|---:|---|---| -| App Store app metadata and release operations | Partial | P0 | 303 | 380 | `apps`, `accessibility`, `versions`, `app_info`, `pricing`, `app_events`, `screenshots`, `custom_pages`, `ppo`, `promoted`, `review_attachments`, `review_submissions`, `reviews`, `export_compliance` | The common release workflow includes strict version filtering and paging, safe phased-release controls, generic review submissions, App Info-owned age-rating inspection, app search keywords, expanded Custom Product Page and PPO workflows, promoted ordering, and verified screenshot and preview ordering. Remaining app-surface operations stay explicitly phased. | +| App Store app metadata and release operations | Partial | P0 | 304 | 381 | `apps`, `accessibility`, `versions`, `app_info`, `pricing`, `app_events`, `screenshots`, `custom_pages`, `ppo`, `promoted`, `review_attachments`, `review_submissions`, `reviews`, `export_compliance` | The common release workflow includes strict version filtering and paging, safe phased-release controls, generic review submissions, App Info-owned age-rating inspection, app search keywords, expanded Custom Product Page and PPO workflows, promoted ordering, and verified screenshot and preview ordering. Remaining app-surface operations stay explicitly phased. | | TestFlight builds, testers, groups, and beta app review | Partial | P0 | 115 | 154 | `builds`, `build_uploads`, `build_processing`, `export_compliance`, `build_beta`, `beta_groups`, `beta_feedback`, `beta_testers`, `beta_app`, `pre_release`, `beta_license`, `metrics` | Core TestFlight administration, resumable build uploads, and dedicated beta feedback retrieval are covered. Six recruitment tools and five usage-metric tools map twelve additional Apple operations; beta App Clip APIs remain the main gap. | | Essentials: auth, errors, paging, uploads, rate limits | Partial | P1 | 0 | 0 | `auth` | Core runtime behavior is covered; OpenAPI drift is now generated from Apple's official specification. | | Provisioning and identifiers | Partial | P1 | 32 | 49 | `provisioning` | Core signing automation exists; Wallet and Apple Pay identifiers are useful next additions. | @@ -33,7 +33,7 @@ Unclassified paths: 0 | Webhook notification receiver resources | Partial | P1 | 0 | 0 | `webhooks` | Local receiver helpers are now available and remain read-only; future work can add deployable receiver templates and reusable playbooks. | | Xcode Cloud workflows and builds | Partial | P1 | 56 | 59 | `xcode_cloud` | Covers read-heavy CI dashboards plus start/rebuild build runs; destructive workflow/product management remains intentionally deferred. | | Alternative distribution | Missing | P2 | 21 | 28 | none | Region- and entitlement-sensitive APIs should be opt-in and strongly documented. | -| Game Center | Missing | P2 | 238 | 337 | none | Large domain; should be added only after OpenAPI-driven scaffolding is in place. | +| Game Center | Missing | P2 | 244 | 343 | none | Large domain; should be added only after OpenAPI-driven scaffolding is in place. | | In-app purchases, subscriptions, and offers | Partial | P2 | 172 | 218 | `iap`, `subscriptions` | Apple 4.4.1 versioned metadata, generic review submission handoff, plan-type-aware subscription availability, and adjusted equalizations are covered. Legacy product-scoped tools remain explicit compatibility paths; an authoritative fully paginated subscription inventory is still pending. | | Users, access, and sandbox testers | Partial | P2 | 13 | 20 | `users`, `sandbox` | User management is serviceable; API key operations should remain carefully annotated as high-risk. | | Webhook notifications | Covered | P2 | 6 | 8 | `webhooks` | Covers app webhooks, individual webhook reads, create/update/delete, delivery listing, redelivery, ping testing, and local receiver diagnostics. | @@ -41,7 +41,7 @@ Unclassified paths: 0 ## Missing Apple Domains - Alternative distribution: 21 paths, 28 operations. -- Game Center: 238 paths, 337 operations. +- Game Center: 244 paths, 343 operations. ## Unclassified Apple Paths diff --git a/CHANGELOG.md b/CHANGELOG.md index c7d452e..86f539e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `subscriptions_list_price_point_adjusted_equalizations` now requires `plan_types`. App Store Connect API 4.5 marks `filter[planType]` as required on `GET /v1/subscriptionPricePoints/{id}/adjustedEqualizations`, where 4.4.1 left it optional, so a call without it produced a request that Apple's current contract rejects. The input schema now lists `plan_types` as required, and a missing or empty value fails locally before any network request. Pass `MONTHLY`, `UPFRONT`, or both. `subscriptions_list_price_point_equalizations` is unchanged because Apple keeps its plan filter optional. +### Changed + +- Re-baselined the operation contract from App Store Connect API 4.4.1 to 4.5 after a spec-level review. Each expired decision was re-stamped only where its Apple item is unchanged, or re-decided where 4.5 changed it. The new `apps_performanceOverviews_getToManyRelated` operation is deferred, the six new Game Center operations stay under the Game Center scope rules, and the new optional inputs `gracRatingClassificationNumber` on `app_versions_update_age_rating` and `marketSettings` and `multiSeatStatus` on `subscriptions_update` are intentionally omitted for now. +- The operation manifest maps 476 Apple operations, explicitly defers 425, and scopes out 369; all 1,270 pinned Apple 4.5 operations remain accounted for without overlap. +- The optional-input pin is fully classified at 2,907 total: 1,121 bound, 40 internally controlled, 1,746 intentionally omitted, and 0 unclassified; its identity SHA-256 is `0ce3ff14568f841643559c359bc91827290535925c3665172fda81d499f81ce1`. +- The generated OpenAPI coverage report and the coverage inventory baseline now track Apple 4.5: 973 paths and 1,270 operations, all classified. + +### Compatibility + +- The public catalog remains at 502 tools with no renamed inputs or removed response fields. Apart from the now-required `plan_types` above, existing calls are unchanged. + ## [4.1.6] - 2026-08-22 ### Fixed diff --git a/README.md b/README.md index 484ee52..6a9841f 100644 --- a/README.md +++ b/README.md @@ -531,9 +531,9 @@ swift run asc-mcp openapi-contract-check \ --strict ``` -The manifest is pinned to Apple API 4.4.1 by version, SHA-256, path count, and operation count. It currently maps 476 Apple operations, explicitly defers 424, and scopes out 363, covering all 1,263 operations without overlap. CI fails when the Apple document changes, a mapped operation moves or disappears, a public tool or worker drifts from the manifest, an input field loses its binding, response lineage becomes invalid, or a deferred decision expires. Unexposed optional Apple parameters are warnings so they remain visible in the generated backlog. +The manifest is pinned to Apple API 4.5 by version, SHA-256, path count, and operation count. It currently maps 476 Apple operations, explicitly defers 425, and scopes out 369, covering all 1,270 operations without overlap. CI fails when the Apple document changes, a mapped operation moves or disappears, a public tool or worker drifts from the manifest, an input field loses its binding, response lineage becomes invalid, or a deferred decision expires. Unexposed optional Apple parameters are warnings so they remain visible in the generated backlog. -Manifest schema v2 also accounts for every optional Apple query and request-body input as publicly bound, internally controlled, intentionally omitted with a reviewed reason, or still unclassified. The checked-in `optionalInputCoveragePin` records the exact current totals and a SHA-256 digest of the sorted input identities and dispositions; `--strict` rejects a missing pin or any count- or identity-level drift. The pin makes phased remediation auditable and regression-safe, but it is not a claim that every optional Apple input is already public. The v4.1.3 pin is 2,905 total: 1,122 bound, 40 internally controlled, 1,743 intentionally omitted, and 0 unclassified. Its identity SHA-256 is `c975f4e4eebb62ec87864a73fbf72bb8841f644108e54e6ffb25168bcf2a2766`. +Manifest schema v2 also accounts for every optional Apple query and request-body input as publicly bound, internally controlled, intentionally omitted with a reviewed reason, or still unclassified. The checked-in `optionalInputCoveragePin` records the exact current totals and a SHA-256 digest of the sorted input identities and dispositions; `--strict` rejects a missing pin or any count- or identity-level drift. The pin makes phased remediation auditable and regression-safe, but it is not a claim that every optional Apple input is already public. The Apple 4.5 pin is 2,907 total: 1,121 bound, 40 internally controlled, 1,746 intentionally omitted, and 0 unclassified. Its identity SHA-256 is `0ce3ff14568f841643559c359bc91827290535925c3665172fda81d499f81ce1`. `--strict` is the merge- and tag-time release gate. Every declared `target` or `broken` tool remains an error in reports, and a regression test pins their exact state. The current baseline has no `target` or `broken` implementations and no implementation drift, so any implementation that leaves `asBuilt`, any structural contract error, or any optional-input coverage drift blocks both merges and releases. `--structural-strict` remains available only for local phased remediation work. @@ -1175,10 +1175,10 @@ Includes sales, financial, app summary, analytics report request, report, instan | `promoted_update` | Update promotion visibility or enabled state | | `promoted_delete` | Delete a promotion | | `promoted_reorder` | Replace and verify the complete promoted-purchase order for an app | -| `promoted_upload_image` | Deprecated: returns migration guidance; the endpoint is absent from pinned Apple OpenAPI 4.4.1 | -| `promoted_get_image` | Deprecated: returns migration guidance; the endpoint is absent from pinned Apple OpenAPI 4.4.1 | -| `promoted_delete_image` | Deprecated: returns migration guidance; the endpoint is absent from pinned Apple OpenAPI 4.4.1 | -| `promoted_get_image_for_purchase` | Deprecated: returns migration guidance; the relationship is absent from pinned Apple OpenAPI 4.4.1 | +| `promoted_upload_image` | Deprecated: returns migration guidance; the endpoint is absent from pinned Apple OpenAPI 4.5 | +| `promoted_get_image` | Deprecated: returns migration guidance; the endpoint is absent from pinned Apple OpenAPI 4.5 | +| `promoted_delete_image` | Deprecated: returns migration guidance; the endpoint is absent from pinned Apple OpenAPI 4.5 | +| `promoted_get_image_for_purchase` | Deprecated: returns migration guidance; the relationship is absent from pinned Apple OpenAPI 4.5 | diff --git a/Sources/asc-mcp/Core/ASCCoverageInventory.swift b/Sources/asc-mcp/Core/ASCCoverageInventory.swift index 0e8ed53..a2c7939 100644 --- a/Sources/asc-mcp/Core/ASCCoverageInventory.swift +++ b/Sources/asc-mcp/Core/ASCCoverageInventory.swift @@ -38,8 +38,8 @@ struct ASCCoverageArea: Sendable { } enum ASCCoverageInventory { - static let snapshotDate = "2026-07-21" - static let appleAPIVersionBaseline = "4.4.1" + static let snapshotDate = "2026-09-24" + static let appleAPIVersionBaseline = "4.5" static let areas: [ASCCoverageArea] = [ ASCCoverageArea( diff --git a/Tests/ASCMCPTests/Docs/ASCCoverageInventoryTests.swift b/Tests/ASCMCPTests/Docs/ASCCoverageInventoryTests.swift index e1ac681..ab61257 100644 --- a/Tests/ASCMCPTests/Docs/ASCCoverageInventoryTests.swift +++ b/Tests/ASCMCPTests/Docs/ASCCoverageInventoryTests.swift @@ -9,8 +9,8 @@ struct ASCCoverageInventoryTests { let areas = ASCCoverageInventory.areas let names = Set(areas.map(\.name)) - #expect(ASCCoverageInventory.snapshotDate == "2026-07-21") - #expect(ASCCoverageInventory.appleAPIVersionBaseline == "4.4.1") + #expect(ASCCoverageInventory.snapshotDate == "2026-09-24") + #expect(ASCCoverageInventory.appleAPIVersionBaseline == "4.5") #expect(areas.count == names.count) #expect(areas.count >= 10) diff --git a/Tests/ASCMCPTests/Tooling/BuildUploadsManifestContractTests.swift b/Tests/ASCMCPTests/Tooling/BuildUploadsManifestContractTests.swift index 115c6c8..9b92988 100644 --- a/Tests/ASCMCPTests/Tooling/BuildUploadsManifestContractTests.swift +++ b/Tests/ASCMCPTests/Tooling/BuildUploadsManifestContractTests.swift @@ -58,9 +58,9 @@ struct BuildUploadsManifestContractTests { let uniqueBuildUploadOperations = Set(worker.tools.flatMap(\.operations).map(\.operationID)) #expect(uniqueBuildUploadOperations.count == 8) #expect(Set(manifest.tools.flatMap(\.operations).map(\.operationID)).count == 476) - #expect(manifest.index.waivers.count == 424) - #expect(manifest.index.specPin.operationCount == 1_263) - #expect(476 + 424 + 363 == manifest.index.specPin.operationCount) + #expect(manifest.index.waivers.count == 425) + #expect(manifest.index.specPin.operationCount == 1_270) + #expect(476 + 425 + 369 == manifest.index.specPin.operationCount) let buildUploadWaivers = Set( manifest.index.waivers.compactMap(\.operationID).filter { @@ -76,12 +76,12 @@ struct BuildUploadsManifestContractTests { }) let pin = try #require(manifest.index.optionalInputCoveragePin) - #expect(pin.total == 2_905) - #expect(pin.bound == 1_122) + #expect(pin.total == 2_907) + #expect(pin.bound == 1_121) #expect(pin.internalControl == 40) - #expect(pin.intentionallyOmitted == 1_743) + #expect(pin.intentionallyOmitted == 1_746) #expect(pin.unclassified == 0) - #expect(pin.identitySHA256 == "c975f4e4eebb62ec87864a73fbf72bb8841f644108e54e6ffb25168bcf2a2766") + #expect(pin.identitySHA256 == "0ce3ff14568f841643559c359bc91827290535925c3665172fda81d499f81ce1") } @Test("operation methods paths statuses and effects are exact") diff --git a/Tests/ASCMCPTests/Tooling/TestFlightManifestContractTests.swift b/Tests/ASCMCPTests/Tooling/TestFlightManifestContractTests.swift index d5c1964..3b6cb84 100644 --- a/Tests/ASCMCPTests/Tooling/TestFlightManifestContractTests.swift +++ b/Tests/ASCMCPTests/Tooling/TestFlightManifestContractTests.swift @@ -52,8 +52,8 @@ struct TestFlightManifestContractTests { #expect(testFlightOperations.count == 12) #expect(testFlightOperations.isSubset(of: mapped)) #expect(mapped.count == 476) - #expect(manifest.index.waivers.count == 424) - #expect(476 + 424 + 363 == manifest.index.specPin.operationCount) + #expect(manifest.index.waivers.count == 425) + #expect(476 + 425 + 369 == manifest.index.specPin.operationCount) let recruitmentWaivers = Set( manifest.index.waivers.compactMap(\.operationID).filter { @@ -69,12 +69,12 @@ struct TestFlightManifestContractTests { }) let pin = try #require(manifest.index.optionalInputCoveragePin) - #expect(pin.total == 2_905) - #expect(pin.bound == 1_122) + #expect(pin.total == 2_907) + #expect(pin.bound == 1_121) #expect(pin.internalControl == 40) - #expect(pin.intentionallyOmitted == 1_743) + #expect(pin.intentionallyOmitted == 1_746) #expect(pin.unclassified == 0) - #expect(pin.identitySHA256 == "c975f4e4eebb62ec87864a73fbf72bb8841f644108e54e6ffb25168bcf2a2766") + #expect(pin.identitySHA256 == "0ce3ff14568f841643559c359bc91827290535925c3665172fda81d499f81ce1") } @Test("TestFlight operation methods paths and success statuses are exact") diff --git a/Tests/ASCMCPTests/Tooling/XcodeCloudManifestContractTests.swift b/Tests/ASCMCPTests/Tooling/XcodeCloudManifestContractTests.swift index b776201..9a5740b 100644 --- a/Tests/ASCMCPTests/Tooling/XcodeCloudManifestContractTests.swift +++ b/Tests/ASCMCPTests/Tooling/XcodeCloudManifestContractTests.swift @@ -113,8 +113,8 @@ struct XcodeCloudManifestContractTests { } #expect(Set(manifest.tools.flatMap(\.operations).map(\.operationID)).count == 476) - #expect(manifest.index.waivers.count == 424) - #expect(476 + 424 + 363 == manifest.index.specPin.operationCount) + #expect(manifest.index.waivers.count == 425) + #expect(476 + 425 + 369 == manifest.index.specPin.operationCount) } @Test("19 linkage-only waivers name their typed functional supersets") @@ -315,12 +315,12 @@ struct XcodeCloudManifestContractTests { } let pin = try #require(manifest.index.optionalInputCoveragePin) - #expect(pin.total == 2_905) - #expect(pin.bound == 1_122) + #expect(pin.total == 2_907) + #expect(pin.bound == 1_121) #expect(pin.internalControl == 40) - #expect(pin.intentionallyOmitted == 1_743) + #expect(pin.intentionallyOmitted == 1_746) #expect(pin.unclassified == 0) - #expect(pin.identitySHA256 == "c975f4e4eebb62ec87864a73fbf72bb8841f644108e54e6ffb25168bcf2a2766") + #expect(pin.identitySHA256 == "0ce3ff14568f841643559c359bc91827290535925c3665172fda81d499f81ce1") } @Test("selected projections distinguish relationship self from related URLs") diff --git a/Tests/ASCMCPTests/Workers/AppSearchKeywordsV319Tests.swift b/Tests/ASCMCPTests/Workers/AppSearchKeywordsV319Tests.swift index 9d82acf..80bb3df 100644 --- a/Tests/ASCMCPTests/Workers/AppSearchKeywordsV319Tests.swift +++ b/Tests/ASCMCPTests/Workers/AppSearchKeywordsV319Tests.swift @@ -40,7 +40,7 @@ struct AppSearchKeywordsV319Tests { #expect(manifest.index.optionalParameterFamilyRules?.contains { $0.family == .sparseFields && $0.disposition == .intentionallyOmitted && - $0.reviewAtSpec == "4.4.1" + $0.reviewAtSpec == "4.5" } == true) } diff --git a/Tests/ASCMCPTests/Workers/AppsSearchContractTests.swift b/Tests/ASCMCPTests/Workers/AppsSearchContractTests.swift index 59ec75a..b39b422 100644 --- a/Tests/ASCMCPTests/Workers/AppsSearchContractTests.swift +++ b/Tests/ASCMCPTests/Workers/AppsSearchContractTests.swift @@ -182,7 +182,7 @@ struct AppsSearchContractTests { #expect(Set(classifications.map(\.appleName)) == nonSparseOptionalInputs.subtracting(Set([boundFilter, "sort", "limit"]))) #expect(classifications.allSatisfy { classification in classification.disposition == .intentionallyOmitted && - classification.reviewAtSpec == "4.4.1" && + classification.reviewAtSpec == "4.5" && !classification.reason.isEmpty }) } diff --git a/Tests/ASCMCPTests/Workers/AppsVersionsOptionalInputContractTests.swift b/Tests/ASCMCPTests/Workers/AppsVersionsOptionalInputContractTests.swift index b44501c..8fe2be7 100644 --- a/Tests/ASCMCPTests/Workers/AppsVersionsOptionalInputContractTests.swift +++ b/Tests/ASCMCPTests/Workers/AppsVersionsOptionalInputContractTests.swift @@ -299,7 +299,7 @@ struct AppsVersionsOptionalInputContractTests { #expect(classifications.count == 119) #expect(classifications.filter { $0.disposition == .internalControl }.count == 1) #expect(classifications.filter { $0.disposition == .intentionallyOmitted }.count == 118) - #expect(classifications.allSatisfy { $0.reviewAtSpec == "4.4.1" && !$0.reason.isEmpty }) + #expect(classifications.allSatisfy { $0.reviewAtSpec == "4.5" && !$0.reason.isEmpty }) let expectedBindings: [(String, String, String?, String?)] = [ ("apps_list", "app_ids", "filter[id]", nil), diff --git a/Tests/ASCMCPTests/Workers/BetaAppWorkerContractTests.swift b/Tests/ASCMCPTests/Workers/BetaAppWorkerContractTests.swift index 2c58654..3695425 100644 --- a/Tests/ASCMCPTests/Workers/BetaAppWorkerContractTests.swift +++ b/Tests/ASCMCPTests/Workers/BetaAppWorkerContractTests.swift @@ -1513,7 +1513,7 @@ struct BetaAppWorkerContractTests { $0.location == "query" && $0.appleName == "include" }) #expect(localizationInclude.disposition == .intentionallyOmitted) - #expect(localizationInclude.reviewAtSpec == "4.4.1") + #expect(localizationInclude.reviewAtSpec == "4.5") for mapping in [getSubmission, listSubmissions] { #expect(mapping.kind == .compound) @@ -1553,8 +1553,8 @@ struct BetaAppWorkerContractTests { "inspection.tool", "inspection.arguments.build_id" ])) - #expect(manifest.index.specPin.version == "4.4.1") - #expect(manifest.index.specPin.sha256 == "ed0202ef37155b9334772482d2ea0be688c3046b284c895bcbea5455fbe54fd8") + #expect(manifest.index.specPin.version == "4.5") + #expect(manifest.index.specPin.sha256 == "1e8ef250d6a41bab0f5670b669abf3f06298ef129c8455ba258149fda86927b2") } } diff --git a/Tests/ASCMCPTests/Workers/CommerceCatalogOptionalInputTests.swift b/Tests/ASCMCPTests/Workers/CommerceCatalogOptionalInputTests.swift index 5d6f42f..95ee772 100644 --- a/Tests/ASCMCPTests/Workers/CommerceCatalogOptionalInputTests.swift +++ b/Tests/ASCMCPTests/Workers/CommerceCatalogOptionalInputTests.swift @@ -383,7 +383,7 @@ struct CommerceCatalogOptionalInputTests { #expect(classifications.count == 169) #expect(classifications.filter { $0.disposition == .internalControl }.count == 31) #expect(classifications.filter { $0.disposition == .intentionallyOmitted }.count == 138) - #expect(classifications.allSatisfy { $0.reviewAtSpec == "4.4.1" && !$0.reason.isEmpty }) + #expect(classifications.allSatisfy { $0.reviewAtSpec == "4.5" && !$0.reason.isEmpty }) } } diff --git a/Tests/ASCMCPTests/Workers/CommercePaginationHardeningTests.swift b/Tests/ASCMCPTests/Workers/CommercePaginationHardeningTests.swift index 6add45e..23de896 100644 --- a/Tests/ASCMCPTests/Workers/CommercePaginationHardeningTests.swift +++ b/Tests/ASCMCPTests/Workers/CommercePaginationHardeningTests.swift @@ -174,7 +174,7 @@ struct CommercePaginationHardeningTests { $0.disposition == .internalControl } #expect(!internalControls.isEmpty) - #expect(internalControls.allSatisfy { $0.reason == reason && $0.reviewAtSpec == "4.4.1" }) + #expect(internalControls.allSatisfy { $0.reason == reason && $0.reviewAtSpec == "4.5" }) let continuation = try #require(mapping.fields.first { $0.toolField == "next_url" }) #expect(continuation.sourceKind == .local) #expect(continuation.localRole == localRole) diff --git a/Tests/ASCMCPTests/Workers/CustomProductPagesWorkerContractTests.swift b/Tests/ASCMCPTests/Workers/CustomProductPagesWorkerContractTests.swift index 699f3fe..1592f72 100644 --- a/Tests/ASCMCPTests/Workers/CustomProductPagesWorkerContractTests.swift +++ b/Tests/ASCMCPTests/Workers/CustomProductPagesWorkerContractTests.swift @@ -182,7 +182,7 @@ struct CustomProductPagesWorkerContractTests { ] #expect(classifications == expectedClassifications) #expect(mappings.flatMap(\.operations).flatMap { $0.optionalParameterClassifications ?? [] }.allSatisfy { - $0.reviewAtSpec == "4.4.1" && !$0.reason.isEmpty + $0.reviewAtSpec == "4.5" && !$0.reason.isEmpty }) let expectedBindings: Set = [ diff --git a/Tests/ASCMCPTests/Workers/ExportComplianceWorkerContractTests.swift b/Tests/ASCMCPTests/Workers/ExportComplianceWorkerContractTests.swift index 57b4951..58a1dfe 100644 --- a/Tests/ASCMCPTests/Workers/ExportComplianceWorkerContractTests.swift +++ b/Tests/ASCMCPTests/Workers/ExportComplianceWorkerContractTests.swift @@ -1573,13 +1573,13 @@ struct ExportComplianceWorkerContractTests { let directPatchWaiver = try #require(manifest.index.waivers.first { $0.operationID == "builds_appEncryptionDeclaration_updateToOneRelationship" }) - #expect(directPatchWaiver.reason.contains("Pinned Apple OpenAPI 4.4.1 omits a deprecated flag")) + #expect(directPatchWaiver.reason.contains("Pinned Apple OpenAPI 4.5 omits a deprecated flag")) #expect(directPatchWaiver.reason.contains("current Apple DocC marks")) #expect(directPatchWaiver.reason.contains("builds_updateInstance")) let declarationBuildsWaiver = try #require(manifest.index.waivers.first { $0.operationID == "appEncryptionDeclarations_builds_createToManyRelationship" }) - #expect(declarationBuildsWaiver.reason.contains("OpenAPI 4.4.1 marks")) + #expect(declarationBuildsWaiver.reason.contains("OpenAPI 4.5 marks")) #expect(declarationBuildsWaiver.reason.contains("deprecated")) #expect(declarationBuildsWaiver.reason.contains("builds_updateInstance")) } diff --git a/Tests/ASCMCPTests/Workers/MarketingOptionalInputContractTests.swift b/Tests/ASCMCPTests/Workers/MarketingOptionalInputContractTests.swift index b6b5629..25c6085 100644 --- a/Tests/ASCMCPTests/Workers/MarketingOptionalInputContractTests.swift +++ b/Tests/ASCMCPTests/Workers/MarketingOptionalInputContractTests.swift @@ -252,7 +252,7 @@ struct MarketingOptionalInputContractTests { }) #expect(classifications == identities) #expect(allClassifications.allSatisfy { - $0.reviewAtSpec == "4.4.1" + $0.reviewAtSpec == "4.5" && !$0.reason.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty }) } diff --git a/Tests/ASCMCPTests/Workers/SubscriptionPricingSummaryContractTests.swift b/Tests/ASCMCPTests/Workers/SubscriptionPricingSummaryContractTests.swift index 6a615a6..a2451a7 100644 --- a/Tests/ASCMCPTests/Workers/SubscriptionPricingSummaryContractTests.swift +++ b/Tests/ASCMCPTests/Workers/SubscriptionPricingSummaryContractTests.swift @@ -29,7 +29,7 @@ struct SubscriptionPricingSummaryContractTests { }) #expect(classification.appleName == "filter[subscriptionPricePoint]") #expect(classification.disposition == .intentionallyOmitted) - #expect(classification.reviewAtSpec == "4.4.1") + #expect(classification.reviewAtSpec == "4.5") } @Test("schema exposes plan-aware bounded traversal controls") diff --git a/Tests/ASCMCPTests/Workers/SubscriptionWriteOptionalInputContractTests.swift b/Tests/ASCMCPTests/Workers/SubscriptionWriteOptionalInputContractTests.swift index 363f7be..c86c2b0 100644 --- a/Tests/ASCMCPTests/Workers/SubscriptionWriteOptionalInputContractTests.swift +++ b/Tests/ASCMCPTests/Workers/SubscriptionWriteOptionalInputContractTests.swift @@ -534,7 +534,7 @@ struct SubscriptionWriteOptionalInputContractTests { } omittedNames.insert(classification.appleName) omittedReviewsAreCurrent = omittedReviewsAreCurrent - && classification.reviewAtSpec == "4.4.1" + && classification.reviewAtSpec == "4.5" && !classification.reason.isEmpty } } From 44ec237b1fe0e28cee97675a3c2f75dac7bb8897 Mon Sep 17 00:00:00 2001 From: Aleksei Zelentsov Date: Thu, 24 Sep 2026 02:12:37 +0300 Subject: [PATCH 4/4] test(contract): count the three Apple 4.5 inputs in classification inventories The Apps and AppLifecycle and the commerce inventory tests pin the exact number of optional-input classifications, and the subscription write test pins the omitted body inputs of subscriptions_update. They now include gracRatingClassificationNumber, marketSettings, and multiSeatStatus, which the 4.5 re-baseline classifies as intentionally omitted: 120 Apps and AppLifecycle classifications (119 omitted) and 171 commerce classifications (140 omitted). --- .../Workers/AppsVersionsOptionalInputContractTests.swift | 4 ++-- .../Workers/CommerceCatalogOptionalInputTests.swift | 4 ++-- .../Workers/SubscriptionWriteOptionalInputContractTests.swift | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Tests/ASCMCPTests/Workers/AppsVersionsOptionalInputContractTests.swift b/Tests/ASCMCPTests/Workers/AppsVersionsOptionalInputContractTests.swift index 8fe2be7..0275920 100644 --- a/Tests/ASCMCPTests/Workers/AppsVersionsOptionalInputContractTests.swift +++ b/Tests/ASCMCPTests/Workers/AppsVersionsOptionalInputContractTests.swift @@ -296,9 +296,9 @@ struct AppsVersionsOptionalInputContractTests { mapping.operations.flatMap { $0.optionalParameterClassifications ?? [] } } - #expect(classifications.count == 119) + #expect(classifications.count == 120) #expect(classifications.filter { $0.disposition == .internalControl }.count == 1) - #expect(classifications.filter { $0.disposition == .intentionallyOmitted }.count == 118) + #expect(classifications.filter { $0.disposition == .intentionallyOmitted }.count == 119) #expect(classifications.allSatisfy { $0.reviewAtSpec == "4.5" && !$0.reason.isEmpty }) let expectedBindings: [(String, String, String?, String?)] = [ diff --git a/Tests/ASCMCPTests/Workers/CommerceCatalogOptionalInputTests.swift b/Tests/ASCMCPTests/Workers/CommerceCatalogOptionalInputTests.swift index 95ee772..daadae6 100644 --- a/Tests/ASCMCPTests/Workers/CommerceCatalogOptionalInputTests.swift +++ b/Tests/ASCMCPTests/Workers/CommerceCatalogOptionalInputTests.swift @@ -380,9 +380,9 @@ struct CommerceCatalogOptionalInputTests { .filter { $0.tool != "subscriptions_pricing_summary" } .flatMap(\.operations) .flatMap { $0.optionalParameterClassifications ?? [] } - #expect(classifications.count == 169) + #expect(classifications.count == 171) #expect(classifications.filter { $0.disposition == .internalControl }.count == 31) - #expect(classifications.filter { $0.disposition == .intentionallyOmitted }.count == 138) + #expect(classifications.filter { $0.disposition == .intentionallyOmitted }.count == 140) #expect(classifications.allSatisfy { $0.reviewAtSpec == "4.5" && !$0.reason.isEmpty }) } } diff --git a/Tests/ASCMCPTests/Workers/SubscriptionWriteOptionalInputContractTests.swift b/Tests/ASCMCPTests/Workers/SubscriptionWriteOptionalInputContractTests.swift index c86c2b0..952a311 100644 --- a/Tests/ASCMCPTests/Workers/SubscriptionWriteOptionalInputContractTests.swift +++ b/Tests/ASCMCPTests/Workers/SubscriptionWriteOptionalInputContractTests.swift @@ -499,6 +499,8 @@ struct SubscriptionWriteOptionalInputContractTests { "/data/attributes/subscriptionPeriod" ], [ + "/data/attributes/marketSettings", + "/data/attributes/multiSeatStatus", "/data/relationships/introductoryOffers", "/data/relationships/prices", "/data/relationships/promotionalOffers",