---
title: "Update store configuration"
method: POST
path: "/project-settings/stores/{platform}"
tags: ["Project Settings"]
---

# Update store configuration

`POST /project-settings/stores/{platform}`

Updates the store configuration for the specified platform.
For Apple: if private keys are not provided, existing values are preserved.
For Google: if service account key is not provided, existing value is preserved.

## Path parameters

- `platform` 'apple' | 'google', required

## Headers

- `Idempotency-Key` string

## Request body

- union
  - V4AppleStoreConfigUpdate
    - `shared_secret` string — App-Specific Shared Secret.
    - `app_id` string — App Store app ID.
    - `bundle_id` string — iOS bundle identifier.
    - `connect_key_identifier` string — App Store Connect API key identifier.
    - `connect_private_key` string — ASC private key (PEM format). Omit to preserve existing value.
    - `connect_issuer_id` string — App Store Connect API issuer ID.
    - `iap_key_identifier` string — In-App Purchase API key identifier.
    - `iap_private_key` string — IAP private key (PEM format). Omit to preserve existing value.
    - `iap_issuer_id` string — In-App Purchase API issuer ID.
  - V4GoogleStoreConfigUpdate
    - `package_name` string — Google Play package name.
    - `service_account_key` string — Google service account key JSON. Omit to preserve existing value.
    - `bundle_id` string — Android bundle identifier.

## Response `200`

Updated store configuration (with sensitive fields masked).

- union
  - V4AppleStoreConfig
    - `object` 'store_config', required
    - `url` string, required
    - `platform` 'apple', required
    - `has_shared_secret` boolean, required — Whether the App-Specific Shared Secret is set. The value itself is never returned.
    - `app_id` string, nullable — App Store app ID.
    - `bundle_id` string, nullable — iOS bundle identifier.
    - `connect_key_identifier` string, nullable — App Store Connect API key identifier.
    - `has_connect_private_key` boolean, required — Whether the ASC private key is set.
    - `connect_issuer_id` string, nullable — App Store Connect API issuer ID.
    - `iap_key_identifier` string, nullable — In-App Purchase API key identifier.
    - `has_iap_private_key` boolean, required — Whether the IAP private key is set.
    - `iap_issuer_id` string, nullable — In-App Purchase API issuer ID.
  - V4GoogleStoreConfig
    - `object` 'store_config', required
    - `url` string, required
    - `platform` 'google', required
    - `package_name` string, nullable — Google Play package name.
    - `has_service_account_key` boolean, required — Whether the Google service account key is set.
    - `bundle_id` string, nullable — Android bundle identifier.
    - `rtdn_topic` string, nullable — RTDN subscription topic.
    - `is_rtdn_validated` boolean, required — Whether RTDN is validated.
    - `rtdn_last_message_at` string, nullable — ISO 8601 timestamp of last RTDN message. Null if never received.

## Other responses

- `400` — Validation error or invalid platform
- `401` — Unauthorized
- `403` — Insufficient permissions
- `404` — Store config not found
- `415` — Unsupported Content-Type
- `429` — Rate limit exceeded.
- `500` — Internal error
- `502` — Upstream service failure
- `504` — Upstream timeout

---

[API](https://skmtc.net/qonversion/apis/qonversion-rest-api-v4.md) · [All operations](https://skmtc.net/qonversion/apis/qonversion-rest-api-v4/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/qonversion/qonversion-rest-api-v4/versions/e3f72cf8951c/schema)
