[GH-ISSUE #505] API associatedErrors not displayed to user, making submission errors opaque #140

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

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

Originally assigned to: @rudrankriyam on GitHub.

Summary

When the App Store Connect API returns error responses containing meta.associatedErrors, asc only displays the top-level error message and discards the associated errors — which often contain the actual actionable information.

Reproduction

  1. Have a version in PREPARE_FOR_SUBMISSION state that's missing some of the newer required age rating fields (e.g. parentalControls, advertising, healthOrWellnessTopics, etc.)
  2. Attempt to submit:
asc review items-add --submission <ID> --item-type appStoreVersions --item-id <VERSION_ID>
  1. asc displays:
Error: review items-add: appStoreVersions with id '...' is not in valid state.: This resource cannot be reviewed, please check associated errors to see why.

The error message literally says "check associated errors" but asc doesn't show them.

What the API actually returns

The 409 response body (3471 bytes) contains a meta.associatedErrors object with the full details:

{
  "errors": [{
    "status": "409",
    "code": "STATE_ERROR.ENTITY_STATE_INVALID",
    "title": "appStoreVersions with id '...' is not in valid state.",
    "detail": "This resource cannot be reviewed, please check associated errors to see why.",
    "meta": {
      "associatedErrors": {
        "/v1/ageRatingDeclarations/...": [
          {
            "code": "ENTITY_ERROR.ATTRIBUTE.REQUIRED",
            "detail": "You must provide a value for the attribute 'parentalControls' with this request"
          },
          {
            "code": "ENTITY_ERROR.ATTRIBUTE.REQUIRED",
            "detail": "You must provide a value for the attribute 'healthOrWellnessTopics' with this request"
          },
          {
            "code": "ENTITY_ERROR.ATTRIBUTE.REQUIRED",
            "detail": "You must provide a value for the attribute 'advertising' with this request"
          }
          // ... 4 more missing fields
        ]
      }
    }
  }]
}

Expected behavior

asc should display the associated errors, e.g.:

Error: review items-add: appStoreVersions with id '...' is not in valid state.
  This resource cannot be reviewed, please check associated errors to see why.

  Associated errors for /v1/ageRatingDeclarations/...:
    - You must provide a value for the attribute 'parentalControls' with this request
    - You must provide a value for the attribute 'healthOrWellnessTopics' with this request
    - You must provide a value for the attribute 'advertising' with this request
    - You must provide a value for the attribute 'userGeneratedContent' with this request
    - You must provide a value for the attribute 'messagingAndChat' with this request
    - You must provide a value for the attribute 'ageAssurance' with this request
    - You must provide a value for the attribute 'gunsOrOtherWeapons' with this request

Impact

This turned a 30-second fix (asc age-rating set with the missing fields) into a 20+ minute debugging session that required writing a custom JWT-signing script to call the raw API. The --api-debug flag only shows headers and status codes, not response bodies, so there's no workaround within asc itself.

Environment

  • asc version: 0.26.3
  • Platform: macOS (Darwin 25.2.0, arm64)
Originally created by @yspreen on GitHub (Feb 11, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/505 Originally assigned to: @rudrankriyam on GitHub. ## Summary When the App Store Connect API returns error responses containing `meta.associatedErrors`, `asc` only displays the top-level error message and discards the associated errors — which often contain the actual actionable information. ## Reproduction 1. Have a version in `PREPARE_FOR_SUBMISSION` state that's missing some of the newer required age rating fields (e.g. `parentalControls`, `advertising`, `healthOrWellnessTopics`, etc.) 2. Attempt to submit: ```bash asc review items-add --submission <ID> --item-type appStoreVersions --item-id <VERSION_ID> ``` 3. `asc` displays: ``` Error: review items-add: appStoreVersions with id '...' is not in valid state.: This resource cannot be reviewed, please check associated errors to see why. ``` The error message literally says "check associated errors" but `asc` doesn't show them. ## What the API actually returns The 409 response body (3471 bytes) contains a `meta.associatedErrors` object with the full details: ```json { "errors": [{ "status": "409", "code": "STATE_ERROR.ENTITY_STATE_INVALID", "title": "appStoreVersions with id '...' is not in valid state.", "detail": "This resource cannot be reviewed, please check associated errors to see why.", "meta": { "associatedErrors": { "/v1/ageRatingDeclarations/...": [ { "code": "ENTITY_ERROR.ATTRIBUTE.REQUIRED", "detail": "You must provide a value for the attribute 'parentalControls' with this request" }, { "code": "ENTITY_ERROR.ATTRIBUTE.REQUIRED", "detail": "You must provide a value for the attribute 'healthOrWellnessTopics' with this request" }, { "code": "ENTITY_ERROR.ATTRIBUTE.REQUIRED", "detail": "You must provide a value for the attribute 'advertising' with this request" } // ... 4 more missing fields ] } } }] } ``` ## Expected behavior `asc` should display the associated errors, e.g.: ``` Error: review items-add: appStoreVersions with id '...' is not in valid state. This resource cannot be reviewed, please check associated errors to see why. Associated errors for /v1/ageRatingDeclarations/...: - You must provide a value for the attribute 'parentalControls' with this request - You must provide a value for the attribute 'healthOrWellnessTopics' with this request - You must provide a value for the attribute 'advertising' with this request - You must provide a value for the attribute 'userGeneratedContent' with this request - You must provide a value for the attribute 'messagingAndChat' with this request - You must provide a value for the attribute 'ageAssurance' with this request - You must provide a value for the attribute 'gunsOrOtherWeapons' with this request ``` ## Impact This turned a 30-second fix (`asc age-rating set` with the missing fields) into a 20+ minute debugging session that required writing a custom JWT-signing script to call the raw API. The `--api-debug` flag only shows headers and status codes, not response bodies, so there's no workaround within `asc` itself. ## Environment - `asc` version: 0.26.3 - Platform: macOS (Darwin 25.2.0, arm64)
kerem 2026-02-26 21:33:44 +03:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

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

I am sorry; I faced this as well but did not do anything about it. Fixing asap

<!-- gh-comment-id:3887214312 --> @rudrankriyam commented on GitHub (Feb 11, 2026): I am sorry; I faced this as well but did not do anything about it. Fixing asap
Author
Owner

@yspreen commented on GitHub (Feb 11, 2026):

no worries at all this issue was submitted by claude. no human time lost. I told claude to open an issue with the gh command, it found a workaround by using the p8 files itself to call the api that's how the bug was surfaced. thanks for building a great tool!

btw I installed the skill by manually copying the skills from the repo into my .claude folder. is there a better way? maybe one that auto-updates if the repo changes? a claude plugin or something? I'm kinda new to skills

<!-- gh-comment-id:3887223619 --> @yspreen commented on GitHub (Feb 11, 2026): no worries at all this issue was submitted by claude. no human time lost. I told claude to open an issue with the `gh` command, it found a workaround by using the p8 files itself to call the api that's how the bug was surfaced. thanks for building a great tool! btw I installed the skill by manually copying the skills from the repo into my .claude folder. is there a better way? maybe one that auto-updates if the repo changes? a claude plugin or something? I'm kinda new to skills
Author
Owner

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

btw I installed the skill by manually copying the skills from the repo into my .claude folder. is there a better way? maybe one that auto-updates if the repo changes? a claude plugin or something? I'm kinda new to skills

The CLI itself has command for it, check it out!

<!-- gh-comment-id:3887227317 --> @rudrankriyam commented on GitHub (Feb 11, 2026): > btw I installed the skill by manually copying the skills from the repo into my .claude folder. is there a better way? maybe one that auto-updates if the repo changes? a claude plugin or something? I'm kinda new to skills The CLI itself has command for it, check it out!
Author
Owner

@yspreen commented on GitHub (Feb 11, 2026):

nice! is there a command to update it? and/or auto-add any new skills that might be added to the repo?

<!-- gh-comment-id:3887248977 --> @yspreen commented on GitHub (Feb 11, 2026): nice! is there a command to update it? and/or auto-add any new skills that might be added to the repo?
Author
Owner

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

#506 fixes this

<!-- gh-comment-id:3887358766 --> @rudrankriyam commented on GitHub (Feb 11, 2026): #506 fixes this
Author
Owner

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

asc install skills works as both install + update (re-run it anytime)

<!-- gh-comment-id:3887383208 --> @rudrankriyam commented on GitHub (Feb 11, 2026): `asc install skills` works as both install + update (re-run it anytime)
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#140
No description provided.