mirror of
https://github.com/rudrankriyam/App-Store-Connect-CLI.git
synced 2026-04-25 15:45:48 +03:00
[GH-ISSUE #560] TestFlight beta testers: add CSV export/import commands #153
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#153
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 (Feb 16, 2026).
Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/560
Summary
Add first-class, non-interactive CSV workflows for TestFlight beta testers:
asc testflight beta-testers export(write testers to a CSV file)asc testflight beta-testers import(read testers from a CSV file and apply changes)These commands should be designed for automation (JSON-first, deterministic, no prompts) while still producing a human-editable CSV artifact.
Why this matters
Managing testers is one of the most common operational workflows for TestFlight:
Today, users can script this via
asc testflight beta-testers listJSON output, but there is no stable, file-based interchange format.Current state (verified)
asc testflight beta-testers list/get/add/remove/invite/...exists.internal/cli/testflight/beta_testers.go.json/table/markdown) are good for stdout, but not for a file artifact that can be reviewed/edited and re-applied.Proposed UX
Export
Flags (proposal):
--app(required; respectsASC_APP_IDlike other commands)--output(required; path to write CSV)--group,--build,--email(reuse the same filter semantics aslist)--format json|table|markdown(summary output only; default json)--pretty(when--format json)--include-groups(optional; adds agroupscolumn, requires additional API calls)Behavior:
Import
Flags (proposal):
--app(required)--input(required; CSV file path)--dry-run(no network mutations; prints plan + validation results)--invite(send invites for newly added testers; default false)--group "..."(optional; apply a group to all imported testers)--skip-existing(optional; if tester email already exists, don’t modify group membership)--continue-on-error(optional; default true; aggregate row errors and return non-zero at end)--format json|table|markdownand--pretty(summary output)Behavior:
CSV schema
Minimal schema (phase 1)
Header required:
emailOptional columns:
first_namelast_namegroups(comma-separated group names/IDs)Notes:
emailis the stable identity key.groupsvalues are names, resolve them deterministically (same semantics as existing--groupflags).Output model
JSON (default)
Return a structured summary object that includes:
output_file/input_filefailures[]: row index, email, error messageThis allows an agent/CI pipeline to reliably drive remediation.
Detailed implementation plan (TDD-first)
internal/cli/testflight/beta_testers.go:exportimportinternal/cli/shared/(or a smallinternal/csvutil/package if preferred).--group)Acceptance criteria
asc testflight beta-testers export --helpandimport --helpexist and are self-documenting.--dry-runand produces structured results.make testpasses with new cmdtest coverage.