409 This resource cannot be reviewed, please check associated errors to see why" on the appStoreVersion has, in my case, nothing to do with metadata. It means the version is still inside an existing review submission. After a rejection the version stays a member of the rejected reviewSubmission (state UNRESOLVED_ISSUES), and every path out of it answers 409:
- POST /v1/reviewSubmissionItems with that version into a new submission: 409, "This resource cannot be reviewed".
- POST /v1/reviewSubmissionItems into the old submission: 409, "reviewSubmission state does not allow adding more items".
- PATCH /v1/reviewSubmissions/{old} with submitted=true: the same 409.
- PATCH /v1/reviewSubmissions/{new} with canceled=true: 409, "Resource is not in cancellable state". Only a submitted submission can be cancelled, so an empty container you create while experimenting cannot be deleted at all — there is no DELETE for it either. Mine are still sitting there.
What actually clears it is attaching a new build to the version. That flips the version out of REJECTED back to PREPARE_FOR_SUBMISSION, and then the web UI grows an "Update Review" button on the version page. Pressing it resubmits the same submission with the new build. That is why a new build "fixed" it for davidm230 — the build is not the fix in itself, it is what unlocks the version.
As far as I can tell that last step is web-only. I could not find any API path that performs it, and all four calls above fail. Happy to be corrected if someone knows the endpoint.
One thing worth checking while you are there: attaching a build does not happen by uploading it. The version keeps whatever build was attached last — mine sat on an old build for three weeks while six newer ones uploaded "successfully". The relationship is PATCH /v1/appStoreVersions/{id}/relationships/build, and it answers 204 whether or not it took, so read it back with GET /v1/appStoreVersions/{id}/build.
I wrapped that read-back into a small MIT-licensed script if it saves anyone the typing: https://github.com/vskromny/appstore-release-kit — Node, no dependencies, ASC API key only.