App Store Version Localizations
List related placements
Read a page of app asset library placement resources as flat JSON objects. Address an exact locale; the service resolves its localization ID.
/apps/{appId}/versions/{versionId}/localizations/{locale}/placementsProposed · Extended read design · Adapter not implemented
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/1234567890/versions/version_123/localizations/en-US/placements" \
-H "Authorization: Bearer $ASC_FACADE_KEY"const base = "https://asc.example.com/v1/connections/conn_example";
const response = await fetch(`${base}/apps/1234567890/versions/version_123/localizations/en-US/placements`, {
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/1234567890/versions/version_123/localizations/en-US/placements",
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.
Path parameters
| Name | Type | Description |
|---|---|---|
| appId | string | Apple’s app ID. Returned by List apps. |
| versionId | string | An explicit version ID belonging to this app. Select it from the version list. |
| locale | string | The exact locale to read. No fallback to a different locale. |
Query parameters
| Name | Type | Description |
|---|---|---|
| placementType | string | Filter by placement type. Multiple values are comma-separated.ValuesAPP_SCREENSHOT, IMESSAGE_APP_SCREENSHOT, APP_PREVIEW, PRODUCT_PAGE_HEADER_ASSET, APP_STORE_SEARCH_RESULTS_ASSET, SEARCH_RESULTS_ADS_ASSET, TODAY_TAB_ADS_ASSET, EVENT_CARD_ASSET, EVENT_DETAILS_PAGE_ASSET, RETENTION_MESSAGE_ASSET |
| placementGroup | string | Filter by placement group. Multiple values are comma-separated. |
| state | string | Filter by the current resource state. Version requests map this to Apple’s appVersionState. Multiple values are comma-separated.ValuesASSET_PROCESSING, FAILED, PARENT_PREPARE_FOR_SUBMISSION, PARENT_READY_FOR_REVIEW, PARENT_WAITING_FOR_REVIEW, PARENT_IN_REVIEW, PARENT_APPROVED |
| image | string | Filter by image. Multiple values are comma-separated. |
| video | string | Filter by video. Multiple values are comma-separated. |
| appEventLocalization | string | Filter by app event localization. Multiple values are comma-separated. |
| appCustomProductPageLocalization | string | Filter by app custom product page localization. Multiple values are comma-separated. |
| appStoreVersionExperimentTreatmentLocalization | string | Filter by app store version experiment treatment localization. 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.ValuescreatedDate, -createdDate, lastModifiedDate, -lastModifiedDate, placementGroupPosition, -placementGroupPosition |
| fields | string | Comma-separated attribute names to return. This selects read fields and does not expand relationships. Multiple values are comma-separated.ValuesmediaType, placementType, placementGroup, createdDate, lastModifiedDate, state, stateDetails |
| 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": "app_asset_library_placement_123",
"appId": "1234567890",
"versionId": "version_123",
"mediaType": "IMAGE",
"placementType": "APP_SCREENSHOT",
"placementGroup": "placement_group_example"
}
],
"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. |
| appId | string | The app that owns this resource. |
| versionId | string | The selected App Store version. |
| mediaType | string | The media type value reported by Apple for this resource.ValuesIMAGE, VIDEO |
| placementType | string | The placement type value reported by Apple for this resource.ValuesAPP_SCREENSHOT, IMESSAGE_APP_SCREENSHOT, APP_PREVIEW, PRODUCT_PAGE_HEADER_ASSET, APP_STORE_SEARCH_RESULTS_ASSET, SEARCH_RESULTS_ADS_ASSET, TODAY_TAB_ADS_ASSET, EVENT_CARD_ASSET, EVENT_DETAILS_PAGE_ASSET, RETENTION_MESSAGE_ASSET |
| placementGroup | string | The placement group value reported by Apple for this resource. |
| createdDate | string · date-time | When Apple created this resource, as an RFC 3339 timestamp. |
| lastModifiedDate | string · date-time | When this resource was last changed, as an RFC 3339 timestamp. |
| state | string | The current state reported by Apple for this resource.ValuesASSET_PROCESSING, FAILED, PARENT_PREPARE_FOR_SUBMISSION, PARENT_READY_FOR_REVIEW, PARENT_WAITING_FOR_REVIEW, PARENT_IN_REVIEW, PARENT_APPROVED |
| stateDetails | object[] | The state details value reported by Apple for this resource. |
stateDetails fields
| Name | Type | Description |
|---|---|---|
| code | string | The code value reported by Apple for this resource. |
| description | string | The localized store description. |
Behavior
- Resolve the exact locale within the selected parent, validate ownership, and read the resolved localization. No match returns localization_not_found; multiple matches return ambiguous_selection. GET does not create a locale or substitute another language.
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 | localization_not_found | The requested resource, parent, or exact locale is absent or outside the caller’s scope. |
| 409 | ambiguous_selection | More than one localization matches the selected parent and locale. |
| 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/appStoreVersionLocalizations/{id}/placements. Read Apple’s original endpoint ↗
Resolve the parent’s localization collection using the exact locale, validate ownership, and then supply the resolved ID to this Apple 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 |
|---|---|---|
| placementType | query | filter[placementType] |
| placementGroup | query | filter[placementGroup] |
| state | query | filter[state] |
| image | query | filter[image] |
| video | query | filter[video] |
| appEventLocalization | query | filter[appEventLocalization] |
| appCustomProductPageLocalization | query | filter[appCustomProductPageLocalization] |
| appStoreVersionExperimentTreatmentLocalization | query | filter[appStoreVersionExperimentTreatmentLocalization] |
| id | query | filter[id] |
| sort | query | sort |
| fields | query | fields[appAssetLibraryPlacements] |
| limit | query | limit |
| cursor | query | Facade-owned pagination |
Reviewed 2026-10-14 · OpenAPI 4.5.1