Skip to content

docs(CSM-357): document app-level API key scoping for App Store Connect - #21

Open
arcappcircle wants to merge 3 commits into
developfrom
feature/CSM-357
Open

docs(CSM-357): document app-level API key scoping for App Store Connect#21
arcappcircle wants to merge 3 commits into
developfrom
feature/CSM-357

Conversation

@arcappcircle

@arcappcircle arcappcircle commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Based on the CSM-357 analysis: an App Store Connect team key (Users and Access > Integrations) can never be limited to specific apps, its role only defines what it can do. An individual key inherits the generating user's role and their app-level restrictions, so it is the only way to get an app-scoped key.

Adds a dedicated section "Restricting the API Key to Specific Apps" to the App Store Connect API Key doc, recommending that customers who want app-level permission create a dedicated service account user in App Store Connect, grant it access to selected apps only, and generate the API key from that user.

Changes

  • New section covering the team key vs individual key distinction, the service account user setup (invite, per-app capable role, Selected Apps), and generating the individual key as that user.
  • Caution: Account Holder, Admin and Finance always have all-app access and cannot be scoped per app.
  • Info: an app-scoped key uses a non-Admin role, so it cannot access Certificates, Identifiers & Profiles, automatic signing will not work with it.
  • Replaced the vague one-liner under "Using a lower-privilege role" with a link to the new section.

Linear: https://linear.app/appcircle/issue/CSM-357/asc-api-permission-app-level-api-key-permission-analysis


Created on behalf of burako@appcircle.io via Arc.

Summary by CodeRabbit

  • Documentation
    • Added detailed guidance for restricting App Store Connect API keys to specific apps.
    • Clarified the differences between team keys and individual keys.
    • Documented how to create a restricted service-account user and generate an individual key.
    • Listed eligible and non-restrictable roles.
    • Explained limitations for signing and reporting endpoints.

Team API keys always span every app in the account. Add a dedicated
section explaining that an app-scoped key requires an individual key
generated by a service account user restricted to selected apps, and
note the signing limitation that comes with a non-Admin role.
@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: eceba1a9-3c8f-496d-bebb-a467e9634984

📥 Commits

Reviewing files that changed from the base of the PR and between 144101f and 23a1889.

📒 Files selected for processing (1)
  • docs/account/my-organization/security/credentials/adding-an-app-store-connect-api-key.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/account/my-organization/security/credentials/adding-an-app-store-connect-api-key.md

📝 Walkthrough

Walkthrough

The App Store Connect API key guide now explains app-scoped individual keys, restricted service accounts, eligible roles, key generation, and endpoint limitations.

Changes

App Store Connect API key guidance

Layer / File(s) Summary
App-scoped individual key instructions
docs/account/my-organization/security/credentials/adding-an-app-store-connect-api-key.md
The guide explains how to create a restricted service account, select apps, generate an individual key, apply eligible roles, and account for all-app roles, signing limitations, and report endpoint restrictions.

Poem

I’m a rabbit with a key,
I scope each app selectively.
Restricted roles keep access tight,
Signing and reports follow their rights.
Hop safely through the docs tonight!

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the documentation change for app-level App Store Connect API key scoping.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/CSM-357
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch feature/CSM-357

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 2, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
appcircle-docs 23a1889 Commit Preview URL

Branch Preview URL
Aug 02 2026, 05:55 PM

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 2, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
appcircle-docs 23a1889 Commit Preview URL

Branch Preview URL
Aug 02 2026, 05:55 PM

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@docs/account/my-organization/security/credentials/adding-an-app-store-connect-api-key.md`:
- Line 105: Update the compound modifier in the sentence about individual keys
so “app scoped” becomes “app-scoped,” leaving the surrounding documentation
unchanged.
- Around line 97-101: Update the “Generating the API Key as That User” section
to instruct users to generate the individual key from the service account
profile via username > Edit Profile > Individual API Key > Generate Key. Remove
the incorrect Users and Access > Integrations navigation while preserving the
instructions to download the .p8 file and link it to Appcircle.
- Around line 93-94: Update the role guidance in the app store API key setup
instructions to clarify that Sales supports Selected Apps only when Access to
Reports is disabled. Retain Sales in the supported-role list, and state that
individual API keys cannot access Sales or Finance report endpoints because
those require a team key.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1aac5651-096d-4919-9157-011b033c7f53

📥 Commits

Reviewing files that changed from the base of the PR and between fd65965 and 6a33bb3.

📒 Files selected for processing (1)
  • docs/account/my-organization/security/credentials/adding-an-app-store-connect-api-key.md

- Generate the individual key from the user profile (Edit Profile >
  Individual API Key), not Users and Access > Integrations.
- Note that Sales only supports Selected Apps while Access to Reports is
  disabled, and that Certificates, Identifiers & Profiles access also
  forces all-app scope.
- Note that individual keys cannot reach Sales and Finance endpoints.
- Hyphenate 'app-scoped'.
Sales can be restricted to selected apps, but Apple does not allow the
Sales role to generate an individual API key (eligible roles: Account
Holder, Admin, App Manager, Customer Support, Developer, Marketing), so
a Sales service account cannot produce an app-scoped key at all.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants