mirror of
https://github.com/rudrankriyam/App-Store-Connect-CLI.git
synced 2026-04-25 07:35:48 +03:00
[GH-ISSUE #24] Phase 6: Submission workflows #1
Labels
No labels
bug
bug
documentation
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/App-Store-Connect-CLI#1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @rudrankriyam on GitHub (Jan 20, 2026).
Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/24
PRD: Submission Workflows in ASC CLI
Overview
This PRD outlines the implementation of submission workflows for App Store Connect CLI, covering the complete submission lifecycle from finding app store versions to submitting builds for review, checking status, and canceling submissions.
Goals
API Endpoints
Core Submission Endpoints
/v1/appStoreVersionSubmissions/v1/appStoreVersionSubmissions/{id}/v1/appStoreVersionSubmissions/{id}/v1/appStoreVersions/{id}/appStoreVersionSubmissionSupporting Endpoints
/v1/apps/{id}/appStoreVersionsfilter[versionString],filter[platform])/v1/appStoreVersions/{id}/v1/appStoreVersions/{id}/relationships/build/v1/appStoreVersions/{id}/buildCLI Commands
1. Submit Command (Enhanced)
Command:
asc submitSubcommands:
asc submit create- Create a new submissionasc submit status- Check submission statusasc submit cancel- Cancel a submissionasc submit createSubmit a build for App Store review.
Flags:
--app(required) - App Store Connect app ID (orASC_APP_IDenv)--version(optional) - Version string (e.g., "1.0.0") to find/create version--version-id(optional) - Direct app store version ID (alternative to--version)--build(required) - Build ID to attach and submit--platform(optional) - Platform filter:IOS,MAC_OS,TV_OS,VISION_OS(default:IOS)--confirm(required) - Confirmation flag to prevent accidental submissions--output(optional) - Output format:json(default),table,markdown--pretty(optional) - Pretty-print JSON outputWorkflow:
--version-idprovided, use it directly--versionprovided, find app store version:GET /v1/apps/{app}/appStoreVersions?filter[versionString]={version}&filter[platform]={platform}PATCH /v1/appStoreVersions/{versionId}/relationships/buildwith{"data": {"type": "builds", "id": "{buildId}"}}POST /v1/appStoreVersionSubmissionswith{"data": {"type": "appStoreVersionSubmissions", "relationships": {"appStoreVersion": {"data": {"type": "appStoreVersions", "id": "{versionId}"}}}}}Examples:
JSON Output:
asc submit statusCheck the status of a submission.
Flags:
--id(required) - Submission ID--version-id(optional) - App store version ID (alternative to--id)--output(optional) - Output format:json(default),table,markdown--pretty(optional) - Pretty-print JSON outputWorkflow:
--idprovided, fetch directly:GET /v1/appStoreVersionSubmissions/{id}--version-idprovided, fetch via version:GET /v1/appStoreVersions/{versionId}/appStoreVersionSubmissionExamples:
JSON Output:
asc submit cancelCancel a submission (Developer Reject).
Flags:
--id(required) - Submission ID--version-id(optional) - App store version ID (alternative to--id)--confirm(required) - Confirmation flag--output(optional) - Output format:json(default),table,markdown--pretty(optional) - Pretty-print JSON outputWorkflow:
statuscommand)DELETE /v1/appStoreVersionSubmissions/{id}Examples:
JSON Output:
2. Versions Command (New)
Command:
asc versionsSubcommands:
asc versions list- List app store versionsasc versions get- Get version detailsasc versions attach-build- Attach build to versionasc versions listList app store versions for an app.
Flags:
--app(required) - App Store Connect app ID (orASC_APP_IDenv)--version(optional) - Filter by version string--platform(optional) - Filter by platform:IOS,MAC_OS,TV_OS,VISION_OS--state(optional) - Filter by state:PREPARE_FOR_SUBMISSION,READY_FOR_REVIEW,WAITING_FOR_REVIEW,IN_REVIEW,REJECTED,APPROVED,DEVELOPER_REJECTED,DEVELOPER_REMOVED_FROM_SALE,METADATA_REJECTED--limit(optional) - Maximum results per page (1-200)--next(optional) - Fetch next page usinglinks.nextURL--output(optional) - Output format:json(default),table,markdown--pretty(optional) - Pretty-print JSON outputExamples:
JSON Output:
asc versions getGet details for a specific app store version.
Flags:
--version-id(required) - App store version ID--include-build(optional) - Include attached build information--include-submission(optional) - Include submission information--output(optional) - Output format:json(default),table,markdown--pretty(optional) - Pretty-print JSON outputExamples:
asc versions attach-buildAttach a build to an app store version.
Flags:
--version-id(required) - App store version ID--build(required) - Build ID to attach--output(optional) - Output format:json(default),table,markdown--pretty(optional) - Pretty-print JSON outputExamples:
JSON Output Expectations
Submission Create Response
Submission Status Response
Version List Response
Version Detail Response (with includes)
Validation
Input Validation
App ID
submit createandversions list--appflag orASC_APP_IDenvironment variableVersion ID
submit status,submit cancel,versions get,versions attach-buildBuild ID
submit createandversions attach-buildVersion String
submit createandversions listPlatform
IOS,MAC_OS,TV_OS,VISION_OSIOSConfirmation Flags
--confirmrequired forsubmit createandsubmit cancelLimit
State Validation
Build State
PROCESSINGorPROCESSING_COMPLETEstate before attachingFAILEDorINVALIDVersion State
PREPARE_FOR_SUBMISSIONorREADY_FOR_REVIEWstate for submissionIN_REVIEWorAPPROVEDSubmission State
WAITING_FOR_REVIEWorDEVELOPER_REJECTEDstatesIN_REVIEWorAPPROVEDError Handling
Common Errors
Version Not Found
Build Already Attached
Version Not Ready
Submission Not Found
Missing Confirmation
Build Not Ready
Metadata Not Complete
Error Response Format
All errors follow the existing pattern:
Testing Requirements
Unit Tests
Client Layer (
internal/asc/client.go)GetAppStoreVersions
filter[versionString],filter[platform],filter[appStoreState])GetAppStoreVersion
build,appStoreVersionSubmission)AttachBuildToVersion
CreateAppStoreVersionSubmission (already exists, enhance tests)
GetAppStoreVersionSubmission (already exists, enhance tests)
DeleteAppStoreVersionSubmission (already exists, enhance tests)
CLI Layer (
cmd/commands.go)SubmitCreateCommand
--app,--build,--confirm)--versionvs--version-id)SubmitStatusCommand
--idor--version-id)SubmitCancelCommand
--confirm)VersionsListCommand
--next)VersionsGetCommand
--include-build,--include-submission)VersionsAttachBuildCommand
Integration Tests (Opt-in)
Environment Variables:
ASC_SUBMIT_APP_ID- App ID for testingASC_SUBMIT_VERSION_ID- Existing version ID (optional)ASC_SUBMIT_BUILD_ID- Build ID to submitASC_CONFIRM_SUBMIT=true- Required for actual submissionsTest Scenarios:
ASC_CONFIRM_SUBMIT=true)ASC_CONFIRM_SUBMIT=true)Skip Conditions:
ASC_SUBMIT_APP_IDnot setASC_CONFIRM_SUBMITnot set totrueImplementation Checklist
Phase 1: Client Methods
GetAppStoreVersions(ctx, appID, opts...)- List versions with filtersGetAppStoreVersion(ctx, versionID, opts...)- Get version with includesAttachBuildToVersion(ctx, versionID, buildID)- Attach buildCreateAppStoreVersionSubmissionerror handlingGetAppStoreVersionSubmissionByVersion(ctx, versionID)- Get via version relationshipDeleteAppStoreVersionSubmissionerror handlingPhase 2: CLI Commands
SubmitCreateCommand- Enhanced with version finding and build attachmentSubmitStatusCommand- New commandSubmitCancelCommand- New commandVersionsListCommand- New commandVersionsGetCommand- New commandVersionsAttachBuildCommand- New commandSubmitCommandparent to include new subcommandsPhase 3: Output Formatting
Phase 4: Error Handling
Phase 5: Tests
API Reference URLs
Official Documentation
App Store Version Submissions
App Store Versions
Read Submission Information
Delete Submission
API Overview
OpenAPI Specification
Related Documentation
Design Decisions
--app,--version-id,--build) following project conventions--confirmrequired for destructive operations (submit, cancel)--version(string) and--version-id(UUID) for flexibilityFuture Enhancements
--waitflag to poll submission status until completionNotes
SubmitCommandincmd/commands.goprovides a basic implementation that needs enhancementCreateAppStoreVersionSubmission,GetAppStoreVersionSubmission, andDeleteAppStoreVersionSubmissionalready exist ininternal/asc/client.goBuildsCommandandBetaGroupsCommandfor subcommand structure@rudrankriyam commented on GitHub (Jan 21, 2026):
Implemented in #30 (submission workflows) and merged.