[GH-ISSUE #198] Investigate & add App Privacy Details CLI support (public API only) #60

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

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

Overview

Add CLI support for App Privacy Details (App Store privacy label: data types collected, tracking, linked/not linked, purposes). This must use public API only; if no public API exists, document the limitation and close.

Docs (App Privacy concept)

These describe the data you must manage, but are not API references:

Discovery (Required)

The App Store Connect API docs (sosumi mirror) do not currently expose an obvious App Privacy endpoint. We must confirm availability via the OpenAPI spec:

Search the spec for terms such as:

  • appPrivacy
  • privacyDetails
  • dataCategories, dataTypes, privacyChoices

If no public endpoints exist, document that in README or a FAQ and close this issue.

Proposed CLI (if API exists)

Top‑level group: asc privacy <subcommand> [flags]

Subcommands (example shape):

  • privacy get --app APP_ID (fetch current privacy details)
  • privacy set --app APP_ID --input ./privacy.json (update full privacy model from JSON)

Because privacy payloads are large/structured, prefer --input JSON file to avoid dozens of flags.

Output

  • JSON (minified) by default
  • --pretty for JSON

Acceptance Criteria

  • Confirm public API support via OpenAPI spec
  • If supported, implement get/set CLI using documented endpoints
  • If not supported, document limitation (no undocumented endpoints)
  • JSON output works for get

Tests

  • CLI validation tests (--app, --input required)
  • HTTP client tests for get/set endpoints (if they exist)

Manual Test Plan (using real apps)

If API exists:

  1. asc apps --paginate → get APP_ID
  2. asc privacy get --app APP_ID → verify JSON
  3. asc privacy set --app APP_ID --input ./privacy.json
  4. Confirm changes in App Store Connect UI (App Privacy section)

Notes

  • Do not use undocumented/private endpoints.
  • If Apple exposes endpoints later, update this issue with exact paths and fields.
Originally created by @rudrankriyam on GitHub (Jan 26, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/198 # Overview Add CLI support for **App Privacy Details** (App Store privacy label: data types collected, tracking, linked/not linked, purposes). This must use **public API only**; if no public API exists, document the limitation and close. # Docs (App Privacy concept) These describe the data you must manage, but are **not** API references: - Manage app privacy: https://developer.apple.com/help/app-store-connect/manage-app-information/manage-app-privacy/ - App privacy reference: https://developer.apple.com/help/app-store-connect/reference/app-privacy/ # Discovery (Required) The App Store Connect API docs (sosumi mirror) do **not** currently expose an obvious App Privacy endpoint. We must confirm availability via the OpenAPI spec: - OpenAPI spec (latest): https://raw.githubusercontent.com/EvanBacon/App-Store-Connect-OpenAPI-Spec/main/specs/latest.json Search the spec for terms such as: - `appPrivacy` - `privacyDetails` - `dataCategories`, `dataTypes`, `privacyChoices` If **no public endpoints** exist, document that in README or a FAQ and close this issue. # Proposed CLI (if API exists) Top‑level group: `asc privacy <subcommand> [flags]` Subcommands (example shape): - `privacy get --app APP_ID` (fetch current privacy details) - `privacy set --app APP_ID --input ./privacy.json` (update full privacy model from JSON) Because privacy payloads are large/structured, prefer `--input` JSON file to avoid dozens of flags. # Output - JSON (minified) by default - `--pretty` for JSON # Acceptance Criteria - [ ] Confirm public API support via OpenAPI spec - [ ] If supported, implement get/set CLI using documented endpoints - [ ] If **not supported**, document limitation (no undocumented endpoints) - [ ] JSON output works for get # Tests - CLI validation tests (`--app`, `--input` required) - HTTP client tests for get/set endpoints (if they exist) # Manual Test Plan (using real apps) If API exists: 1) `asc apps --paginate` → get `APP_ID` 2) `asc privacy get --app APP_ID` → verify JSON 3) `asc privacy set --app APP_ID --input ./privacy.json` 4) Confirm changes in App Store Connect UI (App Privacy section) # Notes - Do **not** use undocumented/private endpoints. - If Apple exposes endpoints later, update this issue with exact paths and fields.
kerem closed this issue 2026-02-26 21:33:05 +03:00
Author
Owner

@rudrankriyam commented on GitHub (Jan 27, 2026):

Checked the offline OpenAPI spec and a web search: there are no public App Store Connect API endpoints for App Privacy Details (privacy labels). Only related fields are privacy policy/choices URLs. Fastlane does this via internal "iris" endpoints with Apple ID (Spaceship), which we won’t use here. Limitation documented in README; use App Store Connect UI for privacy labels.

<!-- gh-comment-id:3806704184 --> @rudrankriyam commented on GitHub (Jan 27, 2026): Checked the offline OpenAPI spec and a web search: there are no public App Store Connect API endpoints for App Privacy Details (privacy labels). Only related fields are privacy policy/choices URLs. Fastlane does this via internal "iris" endpoints with Apple ID (Spaceship), which we won’t use here. Limitation documented in README; use App Store Connect UI for privacy labels.
Author
Owner

@rudrankriyam commented on GitHub (Jan 27, 2026):

Closing: App Privacy Details are not available in the public ASC API.

<!-- gh-comment-id:3806704384 --> @rudrankriyam commented on GitHub (Jan 27, 2026): Closing: App Privacy Details are not available in the public ASC API.
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#60
No description provided.