---
title: "Product"
permalink: "/docs/api-v2/product"
original_source: "openapi-spec/api-v2.yaml"
---

> **AI agents:** This is the Markdown version of a RevenueCat documentation page. For the complete documentation index, see [llms.txt](https://www.revenuecat.com/docs/llms.txt).

# Product

## Product

Operations about products.

### Get a product

`GET /projects/{project_id}/products/{product_id}`

Operation ID: `get-product`

This endpoint requires the following permission(s): <code>project_configuration:products:read</code>. This endpoint belongs to the <strong>Project Configuration</strong> domain, which has a default rate limit of <strong>60 requests per minute</strong>.

**Parameters**

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `project_id` | path | yes | ID of the project |
| `product_id` | path | yes | ID of the product |
| `expand` | query | no | Specifies which fields in the response should be expanded. Accepted values are: `app` (requires `project_configuration:apps:read` permission), `indicative_price` (requires `project_configuration:products:read` permission). |

**Responses**

- `200` — Success
- `400` — Bad request
- `401` — Unauthorized
- `403` — Access denied
- `404` — Not found
- `423` — Locked
- `429` — The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.
- `500` — Internal server error
- `503` — Internal server error

**Response `200` body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `state` | string | yes | Whether the product is active or inactive (archived). One of: `active`, `inactive` |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. Always has the value `list`. One of: `product` |
| `id` | string | yes | The id of the product |
| `store_identifier` | string | yes | The store product identifier |
| `type` | ProductType | yes | One of: `subscription`, `one_time`, `consumable`, `non_consumable`, `non_renewing_subscription` |
| `subscription` | SubscriptionProduct | no |  |
| `one_time` | OneTimeProduct | no |  |
| `created_at` | integer | yes | The date when the product was created in ms since epoch |
| `app_id` | string | yes | The id of the app |
| `app` | App | no |  |
| `indicative_price` | IndicativePrice | no | An indicative price for a product, in the default currency/country (USD / US). Uses the same price source as the get-offering-prices endpoint. |
| `display_name` | string | yes | The display name of the product |

<details><summary><code>subscription</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duration` | string | yes | The duration of the subscription in ISO-8601 standard |
| `grace_period_duration` | string | yes | The duration of the subscription's grace period in ISO-8601 standard |
| `trial_duration` | string | yes | The duration of the subscription's trial period in ISO-8601 standard |

</details>

<details><summary><code>one_time</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `is_consumable` | boolean | yes | Indicates whether the product is consumable or not. |

</details>

<details><summary><code>app</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `amazon` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `amazon` | object | yes | Amazon type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `app_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `app_store` | object | yes | App Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `mac_app_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `mac_app_store` | object | yes | Legacy Mac App Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `play_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `play_store` | object | yes | Play Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `stripe` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `stripe` | object | yes | Stripe type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `rc_billing` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `rc_billing` | object | yes | Revenue Cat Billing Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `roku` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `roku` | object | yes | Roku Channel Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `paddle` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `paddle` | object | yes | Paddle Billing type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `test_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |

</details>

<details><summary><code>indicative_price</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `indicative_price` |
| `currency` | Currency | yes | ISO 4217 currency code One of: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL` |
| `country` | Country | yes | The country that the object is associated with, in ISO alpha 2 code One of: `null`, `AF`, `AL`, `DZ`, `AS`, `AD`, `AO`, `AI`, `AQ`, `AG`, `AR`, `AM`, `AW`, `AU`, `AT`, `AZ`, `BS`, `BH`, `BD`, `BB`, `BY`, `BE`, `BZ`, `BJ`, `BM`, `BT`, `BO`, `BQ`, `BA`, `BW`, `BV`, `BR`, `IO`, `BN`, `BG`, `BF`, `BI`, `CV`, `KH`, `CM`, `CA`, `KY`, `CF`, `TD`, `CL`, `CN`, `CX`, `CC`, `CO`, `KM`, `CD`, `CG`, `CK`, `CR`, `HR`, `CU`, `CW`, `CY`, `CZ`, `CI`, `DK`, `DJ`, `DM`, `DO`, `EC`, `EG`, `SV`, `GQ`, `ER`, `EE`, `SZ`, `ET`, `FK`, `FO`, `FJ`, `FI`, `FR`, `GF`, `PF`, `TF`, `GA`, `GM`, `GE`, `DE`, `GH`, `GI`, `GR`, `GL`, `GD`, `GP`, `GU`, `GT`, `GG`, `GN`, `GW`, `GY`, `HT`, `HM`, `VA`, `HN`, `HK`, `HU`, `IS`, `IN`, `ID`, `IR`, `IQ`, `IE`, `IM`, `IL`, `IT`, `JM`, `JP`, `JE`, `JO`, `KZ`, `KE`, `KI`, `KP`, `KR`, `KW`, `KG`, `LA`, `LV`, `LB`, `LS`, `LR`, `LY`, `LI`, `LT`, `LU`, `MO`, `MG`, `MW`, `MY`, `MV`, `ML`, `MT`, `MH`, `MQ`, `MR`, `MU`, `YT`, `MX`, `FM`, `MD`, `MC`, `MN`, `ME`, `MS`, `MA`, `MZ`, `MM`, `NA`, `NR`, `NP`, `NL`, `NC`, `NZ`, `NI`, `NE`, `NG`, `NU`, `NF`, `MP`, `NO`, `OM`, `PK`, `PW`, `PS`, `PA`, `PG`, `PY`, `PE`, `PH`, `PN`, `PL`, `PT`, `PR`, `QA`, `MK`, `RO`, `RU`, `RW`, `RE`, `BL`, `SH`, `KN`, `LC`, `MF`, `PM`, `VC`, `WS`, `SM`, `ST`, `SA`, `SN`, `RS`, `SC`, `SL`, `SG`, `SX`, `SK`, `SI`, `SB`, `SO`, `ZA`, `GS`, `SS`, `ES`, `LK`, `SD`, `SR`, `SJ`, `SE`, `CH`, `SY`, `TW`, `TJ`, `TZ`, `TH`, `TL`, `TG`, `TK`, `TO`, `TT`, `TN`, `TR`, `TM`, `TC`, `TV`, `UG`, `UA`, `AE`, `GB`, `UM`, `US`, `UY`, `UZ`, `VU`, `VE`, `VN`, `VG`, `VI`, `WF`, `EH`, `YE`, `ZM`, `ZW`, `AX` |
| `amount_micros` | AmountMicros | yes | The price in micros. For example, USD 1 would be represented as 1000000 |

</details>
### Update a product

`POST /projects/{project_id}/products/{product_id}`

Operation ID: `update-product`

Update a product in the project's catalog.
Changing the `type` only affects how RevenueCat treats the product, it does not update the store.
Make sure the new type matches how the product is configured in the store, otherwise RevenueCat will handle purchases in a way the store does not expect.
 This endpoint requires the following permission(s): <code>project_configuration:products:read_write</code>. This endpoint belongs to the <strong>Project Configuration</strong> domain, which has a default rate limit of <strong>60 requests per minute</strong>.

**Parameters**

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `project_id` | path | yes | ID of the project |
| `product_id` | path | yes | ID of the product |
| `expand` | query | no | Specifies which fields in the response should be expanded. Accepted values are: `app` (requires `project_configuration:apps:read` permission), `indicative_price` (requires `project_configuration:products:read` permission). |

**Request body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `display_name` | string | no | The display name of the product |
| `type` | ProductType | no | One of: `subscription`, `one_time`, `consumable`, `non_consumable`, `non_renewing_subscription` |

**Responses**

- `200` — Success. The product was updated
- `400` — Bad request
- `401` — Unauthorized
- `403` — Access denied
- `404` — Not found
- `409` — Conflict
- `422` — Unprocessable entity
- `423` — Locked
- `429` — The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.
- `500` — Internal server error
- `503` — Internal server error

**Response `200` body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `state` | string | yes | Whether the product is active or inactive (archived). One of: `active`, `inactive` |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. Always has the value `list`. One of: `product` |
| `id` | string | yes | The id of the product |
| `store_identifier` | string | yes | The store product identifier |
| `type` | ProductType | yes | One of: `subscription`, `one_time`, `consumable`, `non_consumable`, `non_renewing_subscription` |
| `subscription` | SubscriptionProduct | no |  |
| `one_time` | OneTimeProduct | no |  |
| `created_at` | integer | yes | The date when the product was created in ms since epoch |
| `app_id` | string | yes | The id of the app |
| `app` | App | no |  |
| `indicative_price` | IndicativePrice | no | An indicative price for a product, in the default currency/country (USD / US). Uses the same price source as the get-offering-prices endpoint. |
| `display_name` | string | yes | The display name of the product |

<details><summary><code>subscription</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duration` | string | yes | The duration of the subscription in ISO-8601 standard |
| `grace_period_duration` | string | yes | The duration of the subscription's grace period in ISO-8601 standard |
| `trial_duration` | string | yes | The duration of the subscription's trial period in ISO-8601 standard |

</details>

<details><summary><code>one_time</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `is_consumable` | boolean | yes | Indicates whether the product is consumable or not. |

</details>

<details><summary><code>app</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `amazon` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `amazon` | object | yes | Amazon type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `app_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `app_store` | object | yes | App Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `mac_app_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `mac_app_store` | object | yes | Legacy Mac App Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `play_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `play_store` | object | yes | Play Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `stripe` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `stripe` | object | yes | Stripe type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `rc_billing` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `rc_billing` | object | yes | Revenue Cat Billing Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `roku` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `roku` | object | yes | Roku Channel Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `paddle` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `paddle` | object | yes | Paddle Billing type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `test_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |

</details>

<details><summary><code>indicative_price</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `indicative_price` |
| `currency` | Currency | yes | ISO 4217 currency code One of: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL` |
| `country` | Country | yes | The country that the object is associated with, in ISO alpha 2 code One of: `null`, `AF`, `AL`, `DZ`, `AS`, `AD`, `AO`, `AI`, `AQ`, `AG`, `AR`, `AM`, `AW`, `AU`, `AT`, `AZ`, `BS`, `BH`, `BD`, `BB`, `BY`, `BE`, `BZ`, `BJ`, `BM`, `BT`, `BO`, `BQ`, `BA`, `BW`, `BV`, `BR`, `IO`, `BN`, `BG`, `BF`, `BI`, `CV`, `KH`, `CM`, `CA`, `KY`, `CF`, `TD`, `CL`, `CN`, `CX`, `CC`, `CO`, `KM`, `CD`, `CG`, `CK`, `CR`, `HR`, `CU`, `CW`, `CY`, `CZ`, `CI`, `DK`, `DJ`, `DM`, `DO`, `EC`, `EG`, `SV`, `GQ`, `ER`, `EE`, `SZ`, `ET`, `FK`, `FO`, `FJ`, `FI`, `FR`, `GF`, `PF`, `TF`, `GA`, `GM`, `GE`, `DE`, `GH`, `GI`, `GR`, `GL`, `GD`, `GP`, `GU`, `GT`, `GG`, `GN`, `GW`, `GY`, `HT`, `HM`, `VA`, `HN`, `HK`, `HU`, `IS`, `IN`, `ID`, `IR`, `IQ`, `IE`, `IM`, `IL`, `IT`, `JM`, `JP`, `JE`, `JO`, `KZ`, `KE`, `KI`, `KP`, `KR`, `KW`, `KG`, `LA`, `LV`, `LB`, `LS`, `LR`, `LY`, `LI`, `LT`, `LU`, `MO`, `MG`, `MW`, `MY`, `MV`, `ML`, `MT`, `MH`, `MQ`, `MR`, `MU`, `YT`, `MX`, `FM`, `MD`, `MC`, `MN`, `ME`, `MS`, `MA`, `MZ`, `MM`, `NA`, `NR`, `NP`, `NL`, `NC`, `NZ`, `NI`, `NE`, `NG`, `NU`, `NF`, `MP`, `NO`, `OM`, `PK`, `PW`, `PS`, `PA`, `PG`, `PY`, `PE`, `PH`, `PN`, `PL`, `PT`, `PR`, `QA`, `MK`, `RO`, `RU`, `RW`, `RE`, `BL`, `SH`, `KN`, `LC`, `MF`, `PM`, `VC`, `WS`, `SM`, `ST`, `SA`, `SN`, `RS`, `SC`, `SL`, `SG`, `SX`, `SK`, `SI`, `SB`, `SO`, `ZA`, `GS`, `SS`, `ES`, `LK`, `SD`, `SR`, `SJ`, `SE`, `CH`, `SY`, `TW`, `TJ`, `TZ`, `TH`, `TL`, `TG`, `TK`, `TO`, `TT`, `TN`, `TR`, `TM`, `TC`, `TV`, `UG`, `UA`, `AE`, `GB`, `UM`, `US`, `UY`, `UZ`, `VU`, `VE`, `VN`, `VG`, `VI`, `WF`, `EH`, `YE`, `ZM`, `ZW`, `AX` |
| `amount_micros` | AmountMicros | yes | The price in micros. For example, USD 1 would be represented as 1000000 |

</details>
### Delete a product

`DELETE /projects/{project_id}/products/{product_id}`

Operation ID: `delete-product`

This endpoint requires the following permission(s): <code>project_configuration:products:read_write</code>. This endpoint belongs to the <strong>Project Configuration</strong> domain, which has a default rate limit of <strong>60 requests per minute</strong>.

**Parameters**

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `project_id` | path | yes | ID of the project |
| `product_id` | path | yes | ID of the product |

**Responses**

- `200` — Success
- `400` — Bad request
- `401` — Unauthorized
- `403` — Access denied
- `404` — Not found
- `409` — Conflict
- `422` — Unprocessable entity
- `423` — Locked
- `429` — The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.
- `500` — Internal server error
- `503` — Internal server error

**Response `200` body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | The type of the deleted object One of: `app`, `chart_annotation`, `customer`, `discount`, `entitlement`, `experiment`, `offering`, `package`, `paywall`, `product`, `virtual_currency`, `webhook_integration` |
| `id` | string | yes | The ID of the deleted object |
| `deleted_at` | integer | yes | The date when the object was deleted in ms since epoch |

### Archive a product

`POST /projects/{project_id}/products/{product_id}/actions/archive`

Operation ID: `archive-product`

Archives a product (makes it inactive).
 This endpoint requires the following permission(s): <code>project_configuration:products:read_write</code>. This endpoint belongs to the <strong>Project Configuration</strong> domain, which has a default rate limit of <strong>60 requests per minute</strong>.

**Parameters**

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `project_id` | path | yes | ID of the project |
| `product_id` | path | yes | ID of the product |

**Responses**

- `200` — Success. The product was archived
- `400` — Bad request
- `401` — Unauthorized
- `403` — Access denied
- `404` — Not found
- `409` — Conflict
- `422` — Unprocessable entity
- `423` — Locked
- `429` — The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.
- `500` — Internal server error
- `503` — Internal server error

**Response `200` body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `state` | string | yes | Whether the product is active or inactive (archived). One of: `active`, `inactive` |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. Always has the value `list`. One of: `product` |
| `id` | string | yes | The id of the product |
| `store_identifier` | string | yes | The store product identifier |
| `type` | ProductType | yes | One of: `subscription`, `one_time`, `consumable`, `non_consumable`, `non_renewing_subscription` |
| `subscription` | SubscriptionProduct | no |  |
| `one_time` | OneTimeProduct | no |  |
| `created_at` | integer | yes | The date when the product was created in ms since epoch |
| `app_id` | string | yes | The id of the app |
| `app` | App | no |  |
| `indicative_price` | IndicativePrice | no | An indicative price for a product, in the default currency/country (USD / US). Uses the same price source as the get-offering-prices endpoint. |
| `display_name` | string | yes | The display name of the product |

<details><summary><code>subscription</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duration` | string | yes | The duration of the subscription in ISO-8601 standard |
| `grace_period_duration` | string | yes | The duration of the subscription's grace period in ISO-8601 standard |
| `trial_duration` | string | yes | The duration of the subscription's trial period in ISO-8601 standard |

</details>

<details><summary><code>one_time</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `is_consumable` | boolean | yes | Indicates whether the product is consumable or not. |

</details>

<details><summary><code>app</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `amazon` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `amazon` | object | yes | Amazon type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `app_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `app_store` | object | yes | App Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `mac_app_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `mac_app_store` | object | yes | Legacy Mac App Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `play_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `play_store` | object | yes | Play Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `stripe` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `stripe` | object | yes | Stripe type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `rc_billing` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `rc_billing` | object | yes | Revenue Cat Billing Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `roku` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `roku` | object | yes | Roku Channel Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `paddle` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `paddle` | object | yes | Paddle Billing type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `test_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |

</details>

<details><summary><code>indicative_price</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `indicative_price` |
| `currency` | Currency | yes | ISO 4217 currency code One of: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL` |
| `country` | Country | yes | The country that the object is associated with, in ISO alpha 2 code One of: `null`, `AF`, `AL`, `DZ`, `AS`, `AD`, `AO`, `AI`, `AQ`, `AG`, `AR`, `AM`, `AW`, `AU`, `AT`, `AZ`, `BS`, `BH`, `BD`, `BB`, `BY`, `BE`, `BZ`, `BJ`, `BM`, `BT`, `BO`, `BQ`, `BA`, `BW`, `BV`, `BR`, `IO`, `BN`, `BG`, `BF`, `BI`, `CV`, `KH`, `CM`, `CA`, `KY`, `CF`, `TD`, `CL`, `CN`, `CX`, `CC`, `CO`, `KM`, `CD`, `CG`, `CK`, `CR`, `HR`, `CU`, `CW`, `CY`, `CZ`, `CI`, `DK`, `DJ`, `DM`, `DO`, `EC`, `EG`, `SV`, `GQ`, `ER`, `EE`, `SZ`, `ET`, `FK`, `FO`, `FJ`, `FI`, `FR`, `GF`, `PF`, `TF`, `GA`, `GM`, `GE`, `DE`, `GH`, `GI`, `GR`, `GL`, `GD`, `GP`, `GU`, `GT`, `GG`, `GN`, `GW`, `GY`, `HT`, `HM`, `VA`, `HN`, `HK`, `HU`, `IS`, `IN`, `ID`, `IR`, `IQ`, `IE`, `IM`, `IL`, `IT`, `JM`, `JP`, `JE`, `JO`, `KZ`, `KE`, `KI`, `KP`, `KR`, `KW`, `KG`, `LA`, `LV`, `LB`, `LS`, `LR`, `LY`, `LI`, `LT`, `LU`, `MO`, `MG`, `MW`, `MY`, `MV`, `ML`, `MT`, `MH`, `MQ`, `MR`, `MU`, `YT`, `MX`, `FM`, `MD`, `MC`, `MN`, `ME`, `MS`, `MA`, `MZ`, `MM`, `NA`, `NR`, `NP`, `NL`, `NC`, `NZ`, `NI`, `NE`, `NG`, `NU`, `NF`, `MP`, `NO`, `OM`, `PK`, `PW`, `PS`, `PA`, `PG`, `PY`, `PE`, `PH`, `PN`, `PL`, `PT`, `PR`, `QA`, `MK`, `RO`, `RU`, `RW`, `RE`, `BL`, `SH`, `KN`, `LC`, `MF`, `PM`, `VC`, `WS`, `SM`, `ST`, `SA`, `SN`, `RS`, `SC`, `SL`, `SG`, `SX`, `SK`, `SI`, `SB`, `SO`, `ZA`, `GS`, `SS`, `ES`, `LK`, `SD`, `SR`, `SJ`, `SE`, `CH`, `SY`, `TW`, `TJ`, `TZ`, `TH`, `TL`, `TG`, `TK`, `TO`, `TT`, `TN`, `TR`, `TM`, `TC`, `TV`, `UG`, `UA`, `AE`, `GB`, `UM`, `US`, `UY`, `UZ`, `VU`, `VE`, `VN`, `VG`, `VI`, `WF`, `EH`, `YE`, `ZM`, `ZW`, `AX` |
| `amount_micros` | AmountMicros | yes | The price in micros. For example, USD 1 would be represented as 1000000 |

</details>
### Unarchive a product

`POST /projects/{project_id}/products/{product_id}/actions/unarchive`

Operation ID: `unarchive-product`

Unarchives a product (makes it active).
 This endpoint requires the following permission(s): <code>project_configuration:products:read_write</code>. This endpoint belongs to the <strong>Project Configuration</strong> domain, which has a default rate limit of <strong>60 requests per minute</strong>.

**Parameters**

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `project_id` | path | yes | ID of the project |
| `product_id` | path | yes | ID of the product |

**Responses**

- `200` — Success. The product was unarchived
- `400` — Bad request
- `401` — Unauthorized
- `403` — Access denied
- `404` — Not found
- `409` — Conflict
- `422` — Unprocessable entity
- `423` — Locked
- `429` — The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.
- `500` — Internal server error
- `503` — Internal server error

**Response `200` body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `state` | string | yes | Whether the product is active or inactive (archived). One of: `active`, `inactive` |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. Always has the value `list`. One of: `product` |
| `id` | string | yes | The id of the product |
| `store_identifier` | string | yes | The store product identifier |
| `type` | ProductType | yes | One of: `subscription`, `one_time`, `consumable`, `non_consumable`, `non_renewing_subscription` |
| `subscription` | SubscriptionProduct | no |  |
| `one_time` | OneTimeProduct | no |  |
| `created_at` | integer | yes | The date when the product was created in ms since epoch |
| `app_id` | string | yes | The id of the app |
| `app` | App | no |  |
| `indicative_price` | IndicativePrice | no | An indicative price for a product, in the default currency/country (USD / US). Uses the same price source as the get-offering-prices endpoint. |
| `display_name` | string | yes | The display name of the product |

<details><summary><code>subscription</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duration` | string | yes | The duration of the subscription in ISO-8601 standard |
| `grace_period_duration` | string | yes | The duration of the subscription's grace period in ISO-8601 standard |
| `trial_duration` | string | yes | The duration of the subscription's trial period in ISO-8601 standard |

</details>

<details><summary><code>one_time</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `is_consumable` | boolean | yes | Indicates whether the product is consumable or not. |

</details>

<details><summary><code>app</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `amazon` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `amazon` | object | yes | Amazon type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `app_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `app_store` | object | yes | App Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `mac_app_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `mac_app_store` | object | yes | Legacy Mac App Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `play_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `play_store` | object | yes | Play Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `stripe` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `stripe` | object | yes | Stripe type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `rc_billing` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `rc_billing` | object | yes | Revenue Cat Billing Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `roku` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `roku` | object | yes | Roku Channel Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `paddle` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `paddle` | object | yes | Paddle Billing type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `test_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |

</details>

<details><summary><code>indicative_price</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `indicative_price` |
| `currency` | Currency | yes | ISO 4217 currency code One of: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL` |
| `country` | Country | yes | The country that the object is associated with, in ISO alpha 2 code One of: `null`, `AF`, `AL`, `DZ`, `AS`, `AD`, `AO`, `AI`, `AQ`, `AG`, `AR`, `AM`, `AW`, `AU`, `AT`, `AZ`, `BS`, `BH`, `BD`, `BB`, `BY`, `BE`, `BZ`, `BJ`, `BM`, `BT`, `BO`, `BQ`, `BA`, `BW`, `BV`, `BR`, `IO`, `BN`, `BG`, `BF`, `BI`, `CV`, `KH`, `CM`, `CA`, `KY`, `CF`, `TD`, `CL`, `CN`, `CX`, `CC`, `CO`, `KM`, `CD`, `CG`, `CK`, `CR`, `HR`, `CU`, `CW`, `CY`, `CZ`, `CI`, `DK`, `DJ`, `DM`, `DO`, `EC`, `EG`, `SV`, `GQ`, `ER`, `EE`, `SZ`, `ET`, `FK`, `FO`, `FJ`, `FI`, `FR`, `GF`, `PF`, `TF`, `GA`, `GM`, `GE`, `DE`, `GH`, `GI`, `GR`, `GL`, `GD`, `GP`, `GU`, `GT`, `GG`, `GN`, `GW`, `GY`, `HT`, `HM`, `VA`, `HN`, `HK`, `HU`, `IS`, `IN`, `ID`, `IR`, `IQ`, `IE`, `IM`, `IL`, `IT`, `JM`, `JP`, `JE`, `JO`, `KZ`, `KE`, `KI`, `KP`, `KR`, `KW`, `KG`, `LA`, `LV`, `LB`, `LS`, `LR`, `LY`, `LI`, `LT`, `LU`, `MO`, `MG`, `MW`, `MY`, `MV`, `ML`, `MT`, `MH`, `MQ`, `MR`, `MU`, `YT`, `MX`, `FM`, `MD`, `MC`, `MN`, `ME`, `MS`, `MA`, `MZ`, `MM`, `NA`, `NR`, `NP`, `NL`, `NC`, `NZ`, `NI`, `NE`, `NG`, `NU`, `NF`, `MP`, `NO`, `OM`, `PK`, `PW`, `PS`, `PA`, `PG`, `PY`, `PE`, `PH`, `PN`, `PL`, `PT`, `PR`, `QA`, `MK`, `RO`, `RU`, `RW`, `RE`, `BL`, `SH`, `KN`, `LC`, `MF`, `PM`, `VC`, `WS`, `SM`, `ST`, `SA`, `SN`, `RS`, `SC`, `SL`, `SG`, `SX`, `SK`, `SI`, `SB`, `SO`, `ZA`, `GS`, `SS`, `ES`, `LK`, `SD`, `SR`, `SJ`, `SE`, `CH`, `SY`, `TW`, `TJ`, `TZ`, `TH`, `TL`, `TG`, `TK`, `TO`, `TT`, `TN`, `TR`, `TM`, `TC`, `TV`, `UG`, `UA`, `AE`, `GB`, `UM`, `US`, `UY`, `UZ`, `VU`, `VE`, `VN`, `VG`, `VI`, `WF`, `EH`, `YE`, `ZM`, `ZW`, `AX` |
| `amount_micros` | AmountMicros | yes | The price in micros. For example, USD 1 would be represented as 1000000 |

</details>
### Push a product to the store

`POST /projects/{project_id}/products/{product_id}/create_in_store`

Operation ID: `create-product-in-store`

Push a product to the App Store. 

**For subscription products**: You must provide store information including duration and subscription group details.

**For in-app purchase products** (consumable, non-consumable, non-renewing subscription): No request body is required.
 This endpoint requires the following permission(s): <code>project_configuration:products:read_write</code>. This endpoint belongs to the <strong>Project Configuration</strong> domain, which has a default rate limit of <strong>60 requests per minute</strong>.

**Parameters**

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `project_id` | path | yes | ID of the project |
| `product_id` | path | yes | ID of the product |

**Request body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `store_information` | oneOf | no | Store-specific information for creating the product in the store |

<details><summary><code>store_information</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duration` | string | yes | The subscription duration period One of: `ONE_WEEK`, `ONE_MONTH`, `TWO_MONTHS`, `THREE_MONTHS`, `SIX_MONTHS`, `ONE_YEAR` |
| `subscription_group_name` | string | yes | The name of the subscription group |
| `subscription_group_id` | string | no | The ID of the subscription group (optional) |

</details>
**Responses**

- `201` — Success. The product was pushed to the store
- `400` — Bad request
- `401` — Unauthorized
- `403` — Access denied
- `404` — Not found
- `409` — Conflict
- `422` — Unprocessable entity
- `423` — Locked
- `429` — The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.
- `500` — Internal server error
- `503` — Internal server error

**Response `201` body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `created_product` | StoreProduct | yes |  |

<details><summary><code>created_product</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `store_product` |
| `id` | string | yes | The unique identifier of the product in the store (e.g., App Store Connect product ID) |
| `name` | string | no | The name of the store product |
| `product_identifier` | string | yes | The product identifier used in the store |

</details>
### Get a list of products

`GET /projects/{project_id}/products`

Operation ID: `list-products`

This endpoint requires the following permission(s): <code>project_configuration:products:read</code>. This endpoint belongs to the <strong>Project Configuration</strong> domain, which has a default rate limit of <strong>60 requests per minute</strong>.

**Parameters**

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `project_id` | path | yes | ID of the project |
| `app_id` | query | no | This is an optional query parameter to get a list of products of a given entitlement associated with a particular app |
| `starting_after` | query | no | Pagination cursor. Pass the id of the last item from the previous page to fetch the next page; omit for the first page. |
| `limit` | query | no | Maximum number of items to return per page. Values below 1 or above 100 are clamped to that range rather than rejected. |
| `expand` | query | no | Specifies which fields in the response should be expanded. Accepted values are: `items.app` (requires `project_configuration:apps:read` permission), `items.indicative_price` (requires `project_configuration:products:read` permission). |

**Responses**

- `200` — Success
- `400` — Bad request
- `401` — Unauthorized
- `403` — Access denied
- `404` — Not found
- `423` — Locked
- `429` — The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.
- `500` — Internal server error
- `503` — Internal server error

**Response `200` body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. Always has the value `list`. One of: `list` |
| `items` | array of Product | yes | Details about each object. |
| `next_page` | string | yes | URL to access the next page of the project's products. If not present / null, there is no next page |
| `url` | string | yes | The URL where this list can be accessed. |

<details><summary><code>items</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `state` | string | yes | Whether the product is active or inactive (archived). One of: `active`, `inactive` |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. Always has the value `list`. One of: `product` |
| `id` | string | yes | The id of the product |
| `store_identifier` | string | yes | The store product identifier |
| `type` | ProductType | yes | One of: `subscription`, `one_time`, `consumable`, `non_consumable`, `non_renewing_subscription` |
| `subscription` | SubscriptionProduct | no |  |
| `one_time` | OneTimeProduct | no |  |
| `created_at` | integer | yes | The date when the product was created in ms since epoch |
| `app_id` | string | yes | The id of the app |
| `app` | App | no |  |
| `indicative_price` | IndicativePrice | no | An indicative price for a product, in the default currency/country (USD / US). Uses the same price source as the get-offering-prices endpoint. |
| `display_name` | string | yes | The display name of the product |

<details><summary><code>subscription</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duration` | string | yes | The duration of the subscription in ISO-8601 standard |
| `grace_period_duration` | string | yes | The duration of the subscription's grace period in ISO-8601 standard |
| `trial_duration` | string | yes | The duration of the subscription's trial period in ISO-8601 standard |

</details>

<details><summary><code>one_time</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `is_consumable` | boolean | yes | Indicates whether the product is consumable or not. |

</details>

<details><summary><code>indicative_price</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `indicative_price` |
| `currency` | Currency | yes | ISO 4217 currency code One of: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL` |
| `country` | Country | yes | The country that the object is associated with, in ISO alpha 2 code One of: `null`, `AF`, `AL`, `DZ`, `AS`, `AD`, `AO`, `AI`, `AQ`, `AG`, `AR`, `AM`, `AW`, `AU`, `AT`, `AZ`, `BS`, `BH`, `BD`, `BB`, `BY`, `BE`, `BZ`, `BJ`, `BM`, `BT`, `BO`, `BQ`, `BA`, `BW`, `BV`, `BR`, `IO`, `BN`, `BG`, `BF`, `BI`, `CV`, `KH`, `CM`, `CA`, `KY`, `CF`, `TD`, `CL`, `CN`, `CX`, `CC`, `CO`, `KM`, `CD`, `CG`, `CK`, `CR`, `HR`, `CU`, `CW`, `CY`, `CZ`, `CI`, `DK`, `DJ`, `DM`, `DO`, `EC`, `EG`, `SV`, `GQ`, `ER`, `EE`, `SZ`, `ET`, `FK`, `FO`, `FJ`, `FI`, `FR`, `GF`, `PF`, `TF`, `GA`, `GM`, `GE`, `DE`, `GH`, `GI`, `GR`, `GL`, `GD`, `GP`, `GU`, `GT`, `GG`, `GN`, `GW`, `GY`, `HT`, `HM`, `VA`, `HN`, `HK`, `HU`, `IS`, `IN`, `ID`, `IR`, `IQ`, `IE`, `IM`, `IL`, `IT`, `JM`, `JP`, `JE`, `JO`, `KZ`, `KE`, `KI`, `KP`, `KR`, `KW`, `KG`, `LA`, `LV`, `LB`, `LS`, `LR`, `LY`, `LI`, `LT`, `LU`, `MO`, `MG`, `MW`, `MY`, `MV`, `ML`, `MT`, `MH`, `MQ`, `MR`, `MU`, `YT`, `MX`, `FM`, `MD`, `MC`, `MN`, `ME`, `MS`, `MA`, `MZ`, `MM`, `NA`, `NR`, `NP`, `NL`, `NC`, `NZ`, `NI`, `NE`, `NG`, `NU`, `NF`, `MP`, `NO`, `OM`, `PK`, `PW`, `PS`, `PA`, `PG`, `PY`, `PE`, `PH`, `PN`, `PL`, `PT`, `PR`, `QA`, `MK`, `RO`, `RU`, `RW`, `RE`, `BL`, `SH`, `KN`, `LC`, `MF`, `PM`, `VC`, `WS`, `SM`, `ST`, `SA`, `SN`, `RS`, `SC`, `SL`, `SG`, `SX`, `SK`, `SI`, `SB`, `SO`, `ZA`, `GS`, `SS`, `ES`, `LK`, `SD`, `SR`, `SJ`, `SE`, `CH`, `SY`, `TW`, `TJ`, `TZ`, `TH`, `TL`, `TG`, `TK`, `TO`, `TT`, `TN`, `TR`, `TM`, `TC`, `TV`, `UG`, `UA`, `AE`, `GB`, `UM`, `US`, `UY`, `UZ`, `VU`, `VE`, `VN`, `VG`, `VI`, `WF`, `EH`, `YE`, `ZM`, `ZW`, `AX` |
| `amount_micros` | AmountMicros | yes | The price in micros. For example, USD 1 would be represented as 1000000 |

</details>
</details>
### Create a product

`POST /projects/{project_id}/products`

Operation ID: `create-product`

Create a product in the project's catalog.
<div class="theme-admonition theme-admonition-info alert alert--warning">
  <div class="heading">Warning</div>
  <div>This endpoint does not allow to create Web Billing products.</div>
</div>
This endpoint requires the following permission(s): <code>project_configuration:products:read_write</code>. This endpoint belongs to the <strong>Project Configuration</strong> domain, which has a default rate limit of <strong>60 requests per minute</strong>.

**Parameters**

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `project_id` | path | yes | ID of the project |

**Request body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `store_identifier` | string | yes | The store identifier of the product. - For Apple App Store products this is the product ID of the subscription or in-app product. - For Google's Play Store, it should follow the format 'productId:basePlanId' for subscription products and SKU for one-time purchase products. - For Stripe, the product identifier that always starts with "prod_". RevenueCat selects the active, supported default price when available, or the only active, supported price otherwise. If no price can be selected, the product is created without a web price. For projects that model Stripe products per price, the `store_identifier` in the response is the Stripe price ID when a price is selected. - For Amazon, if it's a subscription, the term SKU of the subscription. If it's a one-time purchase, the SKU of the product. - For Roku, this is the product identifier of the subscription or one-time purchase product. |
| `price_identifier` | string | no | The Stripe price identifier to import. When provided, the price must exist, belong to the Stripe product, and be active and supported. Only supported for Stripe products. |
| `app_id` | string | yes | The ID of the app |
| `type` | ProductType | yes | One of: `subscription`, `one_time`, `consumable`, `non_consumable`, `non_renewing_subscription` |
| `display_name` | string | no | The display name of the product |
| `subscription` | ProductSubscriptionInput | no | Subscription parameters for product creation. Only supported for simulated store products. |
| `title` | string | no | The user-facing title of the product. This field is required for Test Store products. |

<details><summary><code>subscription</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duration` | Duration | yes | The duration of the product subscription. This field is only supported for the test store and it is ignored for other stores. One of: `P1W`, `P1M`, `P2M`, `P3M`, `P6M`, `P1Y` |

</details>
**Responses**

- `201` — Success. The product was created
- `400` — Bad request
- `401` — Unauthorized
- `403` — Access denied
- `404` — Not found
- `409` — Conflict
- `422` — Unprocessable entity
- `423` — Locked
- `429` — The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.
- `500` — Internal server error
- `503` — Internal server error

**Response `201` body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `state` | string | yes | Whether the product is active or inactive (archived). One of: `active`, `inactive` |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. Always has the value `list`. One of: `product` |
| `id` | string | yes | The id of the product |
| `store_identifier` | string | yes | The store product identifier |
| `type` | ProductType | yes | One of: `subscription`, `one_time`, `consumable`, `non_consumable`, `non_renewing_subscription` |
| `subscription` | SubscriptionProduct | no |  |
| `one_time` | OneTimeProduct | no |  |
| `created_at` | integer | yes | The date when the product was created in ms since epoch |
| `app_id` | string | yes | The id of the app |
| `app` | App | no |  |
| `indicative_price` | IndicativePrice | no | An indicative price for a product, in the default currency/country (USD / US). Uses the same price source as the get-offering-prices endpoint. |
| `display_name` | string | yes | The display name of the product |

<details><summary><code>subscription</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `duration` | string | yes | The duration of the subscription in ISO-8601 standard |
| `grace_period_duration` | string | yes | The duration of the subscription's grace period in ISO-8601 standard |
| `trial_duration` | string | yes | The duration of the subscription's trial period in ISO-8601 standard |

</details>

<details><summary><code>one_time</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `is_consumable` | boolean | yes | Indicates whether the product is consumable or not. |

</details>

<details><summary><code>app</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `amazon` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `amazon` | object | yes | Amazon type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `app_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `app_store` | object | yes | App Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `mac_app_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `mac_app_store` | object | yes | Legacy Mac App Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `play_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `play_store` | object | yes | Play Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `stripe` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `stripe` | object | yes | Stripe type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `rc_billing` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `rc_billing` | object | yes | Revenue Cat Billing Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `roku` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `roku` | object | yes | Roku Channel Store type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `paddle` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |
| `paddle` | object | yes | Paddle Billing type details |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `app` |
| `id` | string | yes | The id of the app |
| `name` | string | yes | The name of the app |
| `created_at` | integer | yes | The date when the app was created in ms since epoch |
| `type` | string | yes | The platform of the app One of: `test_store` |
| `project_id` | string | yes | The id of the project |
| `custom_url_scheme` | string | yes | The custom URL scheme for the app, derived from the app's public ID. |

</details>

<details><summary><code>indicative_price</code></summary>

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | String representing the object's type. Objects of the same type share the same value. One of: `indicative_price` |
| `currency` | Currency | yes | ISO 4217 currency code One of: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL` |
| `country` | Country | yes | The country that the object is associated with, in ISO alpha 2 code One of: `null`, `AF`, `AL`, `DZ`, `AS`, `AD`, `AO`, `AI`, `AQ`, `AG`, `AR`, `AM`, `AW`, `AU`, `AT`, `AZ`, `BS`, `BH`, `BD`, `BB`, `BY`, `BE`, `BZ`, `BJ`, `BM`, `BT`, `BO`, `BQ`, `BA`, `BW`, `BV`, `BR`, `IO`, `BN`, `BG`, `BF`, `BI`, `CV`, `KH`, `CM`, `CA`, `KY`, `CF`, `TD`, `CL`, `CN`, `CX`, `CC`, `CO`, `KM`, `CD`, `CG`, `CK`, `CR`, `HR`, `CU`, `CW`, `CY`, `CZ`, `CI`, `DK`, `DJ`, `DM`, `DO`, `EC`, `EG`, `SV`, `GQ`, `ER`, `EE`, `SZ`, `ET`, `FK`, `FO`, `FJ`, `FI`, `FR`, `GF`, `PF`, `TF`, `GA`, `GM`, `GE`, `DE`, `GH`, `GI`, `GR`, `GL`, `GD`, `GP`, `GU`, `GT`, `GG`, `GN`, `GW`, `GY`, `HT`, `HM`, `VA`, `HN`, `HK`, `HU`, `IS`, `IN`, `ID`, `IR`, `IQ`, `IE`, `IM`, `IL`, `IT`, `JM`, `JP`, `JE`, `JO`, `KZ`, `KE`, `KI`, `KP`, `KR`, `KW`, `KG`, `LA`, `LV`, `LB`, `LS`, `LR`, `LY`, `LI`, `LT`, `LU`, `MO`, `MG`, `MW`, `MY`, `MV`, `ML`, `MT`, `MH`, `MQ`, `MR`, `MU`, `YT`, `MX`, `FM`, `MD`, `MC`, `MN`, `ME`, `MS`, `MA`, `MZ`, `MM`, `NA`, `NR`, `NP`, `NL`, `NC`, `NZ`, `NI`, `NE`, `NG`, `NU`, `NF`, `MP`, `NO`, `OM`, `PK`, `PW`, `PS`, `PA`, `PG`, `PY`, `PE`, `PH`, `PN`, `PL`, `PT`, `PR`, `QA`, `MK`, `RO`, `RU`, `RW`, `RE`, `BL`, `SH`, `KN`, `LC`, `MF`, `PM`, `VC`, `WS`, `SM`, `ST`, `SA`, `SN`, `RS`, `SC`, `SL`, `SG`, `SX`, `SK`, `SI`, `SB`, `SO`, `ZA`, `GS`, `SS`, `ES`, `LK`, `SD`, `SR`, `SJ`, `SE`, `CH`, `SY`, `TW`, `TJ`, `TZ`, `TH`, `TL`, `TG`, `TK`, `TO`, `TT`, `TN`, `TR`, `TM`, `TC`, `TV`, `UG`, `UA`, `AE`, `GB`, `UM`, `US`, `UY`, `UZ`, `VU`, `VE`, `VN`, `VG`, `VI`, `WF`, `EH`, `YE`, `ZM`, `ZW`, `AX` |
| `amount_micros` | AmountMicros | yes | The price in micros. For example, USD 1 would be represented as 1000000 |

</details>
