Apps
List apps
Find apps by bundle ID, name, or SKU. Get plain app objects with a cursor for the next page.
/appsImplemented · First release · Operator configuration and deployment required
Request
Routes are relative to your connection. Use a facade API key; the service manages Apple authentication.
BASE='https://asc.example.com/v1/connections/conn_example'
curl --fail-with-body "$BASE/apps?bundleId=com.example.notes" \
-H "Authorization: Bearer $ASC_FACADE_KEY"const base = "https://asc.example.com/v1/connections/conn_example";
const response = await fetch(`${base}/apps?bundleId=com.example.notes`, {
headers: { Authorization: `Bearer ${process.env.ASC_FACADE_KEY}` }
});
const body = await response.json();
if (!response.ok) {
throw new Error(body.error?.message ?? `HTTP ${response.status}`);
}
console.log(body);import json
import os
from urllib.request import Request, urlopen
from urllib.error import HTTPError
base = "https://asc.example.com/v1/connections/conn_example"
request = Request(
f"{base}/apps?bundleId=com.example.notes",
headers={"Authorization": f"Bearer {os.environ['ASC_FACADE_KEY']}"},
)
try:
with urlopen(request) as response:
print(json.load(response))
except HTTPError as error:
detail = json.load(error)
raise RuntimeError(detail["error"]["message"]) from errorasc.example.com is a placeholder for your deployment. Examples use fictional IDs.
Query parameters
| Name | Type | Description |
|---|---|---|
| name | string | Filter by the resource’s name using Apple’s matching behavior. Multiple values are comma-separated. |
| bundleId | string | Match a bundle identifier, such as com.example.notes. Multiple values are comma-separated. |
| sku | string | Filter by the app’s SKU. Multiple values are comma-separated. |
| versionPlatform | string | Require related App Store versions to match these platforms. Multiple values are comma-separated.ValuesIOS, MAC_OS, TV_OS, VISION_OS |
| versionState | string | Require related App Store versions to match these current distribution states. Multiple values are comma-separated.ValuesACCEPTED, DEVELOPER_REJECTED, IN_REVIEW, INVALID_BINARY, METADATA_REJECTED, PENDING_APPLE_RELEASE, PENDING_DEVELOPER_RELEASE, PREPARE_FOR_SUBMISSION, PROCESSING_FOR_DISTRIBUTION, READY_FOR_DISTRIBUTION, READY_FOR_REVIEW, REJECTED, REPLACED_WITH_NEW_VERSION, WAITING_FOR_EXPORT_COMPLIANCE, WAITING_FOR_REVIEW |
| reviewState | string | Filter by review state. Multiple values are comma-separated.ValuesREADY_FOR_REVIEW, WAITING_FOR_REVIEW, IN_REVIEW, UNRESOLVED_ISSUES, CANCELING, COMPLETING, COMPLETE |
| reviewPlatform | string | Filter by review platform. Multiple values are comma-separated.ValuesIOS, MAC_OS, TV_OS, VISION_OS |
| versionId | string | Filter by version id. Multiple values are comma-separated. |
| id | string | Restrict results to the specified resource IDs. Multiple values are comma-separated. |
| sort | string | Comma-separated sort keys. Prefix a key with - for descending order. Only the values below are supported. Multiple values are comma-separated.Valuesname, -name, bundleId, -bundleId, sku, -sku |
| fields | string | Comma-separated attribute names to return. This selects read fields and does not expand relationships. Multiple values are comma-separated.ValuesaccessibilityUrl, name, bundleId, sku, primaryLocale, isOrEverWasMadeForKids, subscriptionStatusUrl, subscriptionStatusUrlVersion, subscriptionStatusUrlForSandbox, subscriptionStatusUrlVersionForSandbox, contentRightsDeclaration, streamlinedPurchasingEnabled |
| limit | integer | Number of items per page, from 1 to 200. |
| cursor | string | Opaque nextCursor from a previous response. Keep the route, connection, filters, and ordering unchanged. |
Response
A page of flat objects, with an opaque continuation cursor.
{
"items": [
{
"id": "1234567890",
"name": "Example Notes",
"bundleId": "com.example.notes",
"sku": "example-ios",
"primaryLocale": "en-US",
"contentRightsDeclaration": "DOES_NOT_USE_THIRD_PARTY_CONTENT"
}
],
"nextCursor": null
}Illustrative response. Optional read fields may be absent or null; unknown enum values are preserved.
Response fields
| Name | Type | Description |
|---|---|---|
| items | object[] | The current page of plain resource objects. An empty collection returns []. |
| nextCursor | string | null | Opaque continuation token, or null when the collection is complete. Pass it back as cursor. |
Each item
| Name | Type | Description |
|---|---|---|
| id | string | Apple’s resource ID. Keep this string unchanged when addressing a resource. |
| accessibilityUrl | string · uri | null | The app’s accessibility-information website. |
| name | string | null | The resource’s name. An app’s localized name is read from its app-info localization. |
| bundleId | string | null | The app’s bundle identifier, such as com.example.notes. |
| sku | string | null | The identifier you assigned to the app in App Store Connect. |
| primaryLocale | string | null | The app’s primary locale. It does not cause automatic locale fallback. |
| isOrEverWasMadeForKids | boolean | null | Whether Apple records this app as having been made for kids. |
| subscriptionStatusUrl | string · uri | null | The production server-notification URL configured for subscriptions. |
| subscriptionStatusUrlVersion | string | null | The notification payload version configured for production.ValuesV1, V2 |
| subscriptionStatusUrlForSandbox | string · uri | null | The sandbox server-notification URL configured for subscriptions. |
| subscriptionStatusUrlVersionForSandbox | string | null | The notification payload version configured for the sandbox.ValuesV1, V2 |
| contentRightsDeclaration | string | null | Whether the app uses third-party content.ValuesDOES_NOT_USE_THIRD_PARTY_CONTENT, USES_THIRD_PARTY_CONTENT |
| streamlinedPurchasingEnabled | boolean | null | Whether the app has streamlined purchasing enabled. |
| appStoreIconId | string | null | ID of the related app store icon. Present only when Apple supplies linkage; related objects are not loaded automatically. |
| ciProductId | string | null | ID of the related ci product. Present only when Apple supplies linkage; related objects are not loaded automatically. |
| betaLicenseAgreementId | string | null | ID of the related beta license agreement. Present only when Apple supplies linkage; related objects are not loaded automatically. |
| betaAppReviewDetailId | string | null | ID of the related beta app review detail. Present only when Apple supplies linkage; related objects are not loaded automatically. |
| endUserLicenseAgreementId | string | null | ID of the related end user license agreement. Present only when Apple supplies linkage; related objects are not loaded automatically. |
| subscriptionGracePeriodId | string | null | ID of the related subscription grace period. Present only when Apple supplies linkage; related objects are not loaded automatically. |
| gameCenterDetailId | string | null | ID of the related game center detail. Present only when Apple supplies linkage; related objects are not loaded automatically. |
Behavior
- Use bundleId for an exact bundle-identifier match. Name and SKU filters use Apple’s supported matching behavior.
- Versions, builds, and localizations have their own GET routes. This request does not silently load an app’s resource graph.
Pagination
Pass nextCursor back as cursor with the same filters and ordering. Stop when it is null. Each request returns one bounded page; the service never reports a capped or incomplete traversal as a complete collection.
Errors
| HTTP | Type | Description |
|---|---|---|
| 400 | invalid_query | Unsupported filter, sort, limit, or cursor. |
| 401 | unauthorized | Missing or invalid facade API key. |
| 403 | forbidden / upstream_forbidden | The caller or configured Apple key cannot read this resource. |
| 404 | resource_not_found | The requested resource, parent, or exact locale is absent or outside the caller’s scope. |
| 429 | rate_limited | A facade or Apple rate limit was reached. Respect Retry-After when returned. |
| 502–504 | upstream error | Apple authentication, response parsing, availability, or timeout failure; this is not an empty result. |
Apple mapping
Upstream route and translation
The adapter calls GET /v1/apps. Read Apple’s original endpoint ↗
Flatten Apple’s attributes into each resource object. Expose supplied singleton linkage as IDs, with no automatic relationship traversal. Read access does not make these fields writable.
| Facade parameter | Type | Description |
|---|---|---|
| name | query | filter[name] |
| bundleId | query | filter[bundleId] |
| sku | query | filter[sku] |
| versionPlatform | query | filter[appStoreVersions.platform] |
| versionState | query | filter[appStoreVersions.appVersionState] |
| reviewState | query | filter[reviewSubmissions.state] |
| reviewPlatform | query | filter[reviewSubmissions.platform] |
| versionId | query | filter[appStoreVersions] |
| id | query | filter[id] |
| sort | query | sort |
| fields | query | fields[apps] |
| limit | query | limit |
| cursor | query | Facade-owned pagination |
Reviewed 2026-10-14 · OpenAPI 4.5.1