[GH-ISSUE #615] coverage: Add missing apps relationship endpoints (OpenAPI) #171

Closed
opened 2026-02-26 21:33:53 +03:00 by kerem · 3 comments
Owner

Originally created by @rudrankriyam on GitHub (Feb 18, 2026).
Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/615

Context

These endpoints exist in the offline OpenAPI snapshot (docs/openapi/latest.json, indexed by docs/openapi/paths.txt) but are currently missing from internal/asc client coverage.

Goal

Add ASC client methods for the endpoints below (method + path).

Missing endpoints

  • GET /v1/apps/{id}/relationships/accessibilityDeclarations
  • GET /v1/apps/{id}/relationships/analyticsReportRequests
  • GET /v1/apps/{id}/relationships/androidToIosAppMappingDetails
  • GET /v1/apps/{id}/relationships/appAvailabilityV2
  • GET /v1/apps/{id}/relationships/appClips
  • GET /v1/apps/{id}/relationships/appCustomProductPages
  • GET /v1/apps/{id}/relationships/appEncryptionDeclarations
  • GET /v1/apps/{id}/relationships/appEvents
  • GET /v1/apps/{id}/relationships/appInfos
  • GET /v1/apps/{id}/relationships/appPricePoints
  • GET /v1/apps/{id}/relationships/appPriceSchedule
  • GET /v1/apps/{id}/relationships/appStoreVersionExperimentsV2
  • GET /v1/apps/{id}/relationships/appStoreVersions
  • GET /v1/apps/{id}/relationships/backgroundAssets
  • GET /v1/apps/{id}/relationships/betaAppLocalizations
  • GET /v1/apps/{id}/relationships/betaAppReviewDetail
  • GET /v1/apps/{id}/relationships/betaFeedbackCrashSubmissions
  • GET /v1/apps/{id}/relationships/betaFeedbackScreenshotSubmissions
  • GET /v1/apps/{id}/relationships/betaGroups
  • GET /v1/apps/{id}/relationships/buildUploads
  • GET /v1/apps/{id}/relationships/builds
  • GET /v1/apps/{id}/relationships/ciProduct
  • GET /v1/apps/{id}/relationships/customerReviews
  • GET /v1/apps/{id}/relationships/endUserLicenseAgreement
  • GET /v1/apps/{id}/relationships/gameCenterDetail
  • GET /v1/apps/{id}/relationships/gameCenterEnabledVersions
  • GET /v1/apps/{id}/relationships/inAppPurchases
  • GET /v1/apps/{id}/relationships/inAppPurchasesV2
  • GET /v1/apps/{id}/relationships/marketplaceSearchDetail
  • GET /v1/apps/{id}/relationships/preReleaseVersions
  • GET /v1/apps/{id}/relationships/reviewSubmissions
  • GET /v1/apps/{id}/relationships/searchKeywords
  • GET /v1/apps/{id}/relationships/subscriptionGracePeriod
  • GET /v1/apps/{id}/relationships/subscriptionGroups
  • GET /v1/apps/{id}/relationships/webhooks

Where/what to add

  • Add client methods in internal/asc/ (suggest new file internal/asc/client_apps_relationships.go).
  • Follow patterns from internal/asc/client_testflight_relationships.go and internal/asc/client_build_relationships.go.
  • Tests: add request-shaping tests in internal/asc/client_http_relationships_test.go (or a new focused *_test.go).

Test plan

  • Add request-shaping tests using newTestClient (assert method + path + query).
  • For mutation endpoints (POST/PATCH/DELETE), assert request method + path and (when applicable) JSON relationship payload shape.

Acceptance criteria

  • All endpoints listed are implemented in internal/asc with tests.
  • ASC_BYPASS_KEYCHAIN=1 make test passes.
Originally created by @rudrankriyam on GitHub (Feb 18, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/615 ## Context These endpoints exist in the offline OpenAPI snapshot (`docs/openapi/latest.json`, indexed by `docs/openapi/paths.txt`) but are currently missing from `internal/asc` client coverage. ## Goal Add ASC client methods for the endpoints below (method + path). ## Missing endpoints - [ ] GET /v1/apps/{id}/relationships/accessibilityDeclarations - [ ] GET /v1/apps/{id}/relationships/analyticsReportRequests - [ ] GET /v1/apps/{id}/relationships/androidToIosAppMappingDetails - [ ] GET /v1/apps/{id}/relationships/appAvailabilityV2 - [ ] GET /v1/apps/{id}/relationships/appClips - [ ] GET /v1/apps/{id}/relationships/appCustomProductPages - [ ] GET /v1/apps/{id}/relationships/appEncryptionDeclarations - [ ] GET /v1/apps/{id}/relationships/appEvents - [ ] GET /v1/apps/{id}/relationships/appInfos - [ ] GET /v1/apps/{id}/relationships/appPricePoints - [ ] GET /v1/apps/{id}/relationships/appPriceSchedule - [ ] GET /v1/apps/{id}/relationships/appStoreVersionExperimentsV2 - [ ] GET /v1/apps/{id}/relationships/appStoreVersions - [ ] GET /v1/apps/{id}/relationships/backgroundAssets - [ ] GET /v1/apps/{id}/relationships/betaAppLocalizations - [ ] GET /v1/apps/{id}/relationships/betaAppReviewDetail - [ ] GET /v1/apps/{id}/relationships/betaFeedbackCrashSubmissions - [ ] GET /v1/apps/{id}/relationships/betaFeedbackScreenshotSubmissions - [ ] GET /v1/apps/{id}/relationships/betaGroups - [ ] GET /v1/apps/{id}/relationships/buildUploads - [ ] GET /v1/apps/{id}/relationships/builds - [ ] GET /v1/apps/{id}/relationships/ciProduct - [ ] GET /v1/apps/{id}/relationships/customerReviews - [ ] GET /v1/apps/{id}/relationships/endUserLicenseAgreement - [ ] GET /v1/apps/{id}/relationships/gameCenterDetail - [ ] GET /v1/apps/{id}/relationships/gameCenterEnabledVersions - [ ] GET /v1/apps/{id}/relationships/inAppPurchases - [ ] GET /v1/apps/{id}/relationships/inAppPurchasesV2 - [ ] GET /v1/apps/{id}/relationships/marketplaceSearchDetail - [ ] GET /v1/apps/{id}/relationships/preReleaseVersions - [ ] GET /v1/apps/{id}/relationships/reviewSubmissions - [ ] GET /v1/apps/{id}/relationships/searchKeywords - [ ] GET /v1/apps/{id}/relationships/subscriptionGracePeriod - [ ] GET /v1/apps/{id}/relationships/subscriptionGroups - [ ] GET /v1/apps/{id}/relationships/webhooks ## Where/what to add - Add client methods in `internal/asc/` (suggest new file `internal/asc/client_apps_relationships.go`). - Follow patterns from `internal/asc/client_testflight_relationships.go` and `internal/asc/client_build_relationships.go`. - Tests: add request-shaping tests in `internal/asc/client_http_relationships_test.go` (or a new focused *_test.go). ## Test plan - Add request-shaping tests using `newTestClient` (assert method + path + query). - For mutation endpoints (POST/PATCH/DELETE), assert request method + path and (when applicable) JSON relationship payload shape. ## Acceptance criteria - All endpoints listed are implemented in `internal/asc` with tests. - `ASC_BYPASS_KEYCHAIN=1 make test` passes.
kerem 2026-02-26 21:33:53 +03:00
Author
Owner

@rudrankriyam commented on GitHub (Feb 18, 2026):

@cursor please implement this issue (#615).

Scope: 35 missing apps relationship endpoints (GET-only): /v1/apps/{id}/relationships/<name>.

Implementation notes:

  • Consider adding a small helper (similar to getBuildLinkages / getBetaGroupLinkages) to reduce repetition, plus thin wrapper methods per relationship name required by the checklist.
  • Many app relationships are to-one (single linkage) vs to-many (linkages list). Use the correct response shape per endpoint.
  • Add request-shaping tests for each relationship endpoint.

Acceptance:

  • All endpoints in the issue checklist are implemented in internal/asc/ with tests.
  • ASC_BYPASS_KEYCHAIN=1 make test passes.
<!-- gh-comment-id:3918647395 --> @rudrankriyam commented on GitHub (Feb 18, 2026): @cursor please implement this issue (#615). Scope: 35 missing apps relationship endpoints (GET-only): `/v1/apps/{id}/relationships/<name>`. Implementation notes: - Consider adding a small helper (similar to `getBuildLinkages` / `getBetaGroupLinkages`) to reduce repetition, plus thin wrapper methods per relationship name required by the checklist. - Many app relationships are to-one (single linkage) vs to-many (linkages list). Use the correct response shape per endpoint. - Add request-shaping tests for each relationship endpoint. Acceptance: - All endpoints in the issue checklist are implemented in `internal/asc/` with tests. - `ASC_BYPASS_KEYCHAIN=1 make test` passes.
Author
Owner

@cursor[bot] commented on GitHub (Feb 18, 2026):

Implemented issue #615 (35 missing apps relationship GET endpoints).

  • Added internal/asc/client_apps_relationships.go with client methods for all /v1/apps/{id}/relationships/<name> endpoints:
    • to-many endpoints return *LinkagesResponse via a shared getAppLinkages helper
    • to-one endpoints return proper single-linkage response structs (Data + Links)
    • appStoreVersionExperimentsV2 uses GetAppAppStoreVersionExperimentsV2Relationships to avoid colliding with the existing version-scoped method name
  • Added request-shaping coverage for each endpoint in internal/asc/client_http_apps_relationships_test.go (asserts method + path + query; uses limit=5 for to-many, asserts no query for to-one).

Verification:

  • ASC_BYPASS_KEYCHAIN=1 make test
  • make format
  • make lint

Pushed: coverage: add apps relationship linkages endpoints (commit 7eba9c3) to cursor/missing-apps-relationship-endpoints-0866.

View PR

Open in Cursor Open in Web

<!-- gh-comment-id:3918647989 --> @cursor[bot] commented on GitHub (Feb 18, 2026): Implemented issue **#615** (35 missing apps relationship GET endpoints). - Added `internal/asc/client_apps_relationships.go` with client methods for all `/v1/apps/{id}/relationships/<name>` endpoints: - to-many endpoints return `*LinkagesResponse` via a shared `getAppLinkages` helper - to-one endpoints return proper single-linkage response structs (`Data` + `Links`) - `appStoreVersionExperimentsV2` uses `GetAppAppStoreVersionExperimentsV2Relationships` to avoid colliding with the existing version-scoped method name - Added request-shaping coverage for **each endpoint** in `internal/asc/client_http_apps_relationships_test.go` (asserts method + path + query; uses `limit=5` for to-many, asserts no query for to-one). Verification: - ✅ `ASC_BYPASS_KEYCHAIN=1 make test` - ✅ `make format` - ✅ `make lint` Pushed: `coverage: add apps relationship linkages endpoints` (commit `7eba9c3`) to `cursor/missing-apps-relationship-endpoints-0866`. <p><a href="https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/628"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-pr-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-pr-light.png"><img alt="View PR" width="86" height="28" src="https://cursor.com/assets/images/view-pr-light.png"></picture></a></p> <p><a href="https://cursor.com/background-agent?bcId=bc-004fcc84-9b49-4715-9ba2-bd1b682a6bc1"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/agents?id=bc-004fcc84-9b49-4715-9ba2-bd1b682a6bc1"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a></p>
Author
Owner

@rudrankriyam commented on GitHub (Feb 18, 2026):

Closed by PR #628 (merged). Note: some OpenAPI-listed app relationships were removed because production reports they don't exist / returns unexpected error.

<!-- gh-comment-id:3919363402 --> @rudrankriyam commented on GitHub (Feb 18, 2026): Closed by PR #628 (merged). Note: some OpenAPI-listed app relationships were removed because production reports they don't exist / returns unexpected error.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/App-Store-Connect-CLI#171
No description provided.