# Models

## The ActorDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"ActorDto":{"required":["type"],"type":"object","properties":{"type":{"$ref":"#/components/schemas/PayNowActorType"},"id":{"$ref":"#/components/schemas/FlakeId"}},"additionalProperties":false},"PayNowActorType":{"enum":["anonymous","user","api_key","customer","game_server","internal","admin","platform","global_customer"],"type":"string"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The AlipayDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"AlipayDetailsDto":{"type":"object","properties":{"buyer_id":{"type":["null","string"],"description":"The Alipay buyer identifier"},"fingerprint":{"type":["null","string"],"description":"A unique fingerprint for this Alipay account"}},"additionalProperties":false,"description":"Alipay payment method details"}}}}
```

## The AuthenticateStorefrontCustomerRequestDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"AuthenticateStorefrontCustomerRequestDto":{"required":["id","platform"],"type":"object","properties":{"platform":{"$ref":"#/components/schemas/CustomerProfilePlatform"},"id":{"type":"string","description":"The account ID on the platform"}},"additionalProperties":false},"CustomerProfilePlatform":{"enum":["invalid","steam","minecraft","paynow_name","paynow","minecraft_java_name","minecraft_bedrock_name","xbox_xuid","minecraft_uuid"],"type":"string"}}}}
```

## The AuthenticateStorefrontCustomerResponseDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"AuthenticateStorefrontCustomerResponseDto":{"required":["customer_token"],"type":"object","properties":{"customer_token":{"type":"string","description":"The token for the Customer"}},"additionalProperties":false}}}}
```

## The BancontactDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"BancontactDetailsDto":{"type":"object","properties":{"bank":{"type":["null","string"],"description":"The bank identifier"},"bank_name":{"type":["null","string"],"description":"The bank name"},"bic":{"type":["null","string"],"description":"The Bank Identifier Code"},"iban_last4":{"type":["null","string"],"description":"The last 4 digits of the IBAN"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Bancontact payment method details"}}}}
```

## The CardDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CardDetailsDto":{"required":["brand","country","exp_month","exp_year","fingerprint","funding","last4"],"type":"object","properties":{"brand":{"type":"string","description":"The card brand"},"country":{"type":"string","description":"The country code where the card was issued"},"exp_month":{"type":"integer","description":"The card expiration month","format":"int32"},"exp_year":{"type":"integer","description":"The card expiration year","format":"int32"},"fingerprint":{"type":"string","description":"A unique fingerprint for this card"},"funding":{"type":"string","description":"The card funding type"},"last4":{"type":"string","description":"The last 4 digits of the card number"},"bin":{"type":["null","string"],"description":"The Bank Identification Number (first 6/8 digits of card).\nOnly available internally."},"issuer":{"type":["null","string"],"description":"The card issuer/bank name.\nOnly available internally."},"description":{"type":["null","string"],"description":"The card description.\nOnly available internally."},"wallet":{"$ref":"#/components/schemas/CardWalletDto"}},"additionalProperties":false,"description":"Card payment method details"},"CardWalletDto":{"required":["type"],"type":"object","properties":{"type":{"type":"string","description":"The type of digital wallet"}},"additionalProperties":false,"description":"Digital wallet details for a card"}}}}
```

## The CardWalletDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CardWalletDto":{"required":["type"],"type":"object","properties":{"type":{"type":"string","description":"The type of digital wallet"}},"additionalProperties":false,"description":"Digital wallet details for a card"}}}}
```

## The CartDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CartDto":{"required":["currency","customer_id","lines","store_id","total"],"type":"object","properties":{"store_id":{"$ref":"#/components/schemas/FlakeId"},"customer_id":{"$ref":"#/components/schemas/FlakeId"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/CartLineDto"},"description":"The line items in the cart"},"total":{"type":"integer","description":"The total price of all items in the cart in the smallest currency unit (e.g., cents)","format":"int64"},"currency":{"type":"string","description":"The currency code (e.g., usd, eur, gbp)"}},"additionalProperties":false,"description":"Represents a customer's shopping cart"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"CartLineDto":{"required":["custom_variables","line_key","name","price","pricing","product_id","quantity","slug","subscription","trial"],"type":"object","properties":{"line_key":{"type":"string","description":"The unique key for this line item"},"product_id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the product"},"slug":{"type":"string","description":"The slug of the product"},"price":{"type":"integer","description":"The price of the product in the smallest currency unit (e.g., cents)","format":"int64"},"quantity":{"type":"integer","description":"The quantity of this product in the cart","format":"int32"},"subscription":{"type":"boolean","description":"Indicates whether this line item should be a subscription"},"trial":{"type":"boolean","description":"Indicates whether this line will be trialied by the customer."},"image_url":{"type":["null","string"],"description":"The URL to the product image"},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"selected_gameserver":{"$ref":"#/components/schemas/StorefrontGameServerDto"},"pricing":{"$ref":"#/components/schemas/StorefrontProductPricingDetailsDto"},"custom_variables":{"type":"array","items":{"$ref":"#/components/schemas/CartLineCustomVariableDto"},"description":"Selected custom variables for this cart line."},"gift_to_customer":{"$ref":"#/components/schemas/CustomerDto"},"gift_to_customer_id":{"$ref":"#/components/schemas/FlakeId"}},"additionalProperties":false,"description":"Represents a line item in a cart"},"StorefrontGameServerDto":{"required":["enabled","id","name","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The display name of the game server."},"enabled":{"type":"boolean","description":"Indicates whether the game server is currently enabled."}},"additionalProperties":false,"description":"Represents a simplified view of a game server for storefront display purposes."},"StorefrontProductPricingDetailsDto":{"required":["price_final","price_original","upsell_discount_amount"],"type":"object","properties":{"active_sale":{"$ref":"#/components/schemas/StorefrontSaleDto"},"sale_value":{"type":["null","integer"],"description":"The amount of the sale discount in the lowest denominator (e.g. cents).","format":"int64"},"upsell_offer_id":{"$ref":"#/components/schemas/FlakeId"},"upsell_discount_amount":{"type":"integer","format":"int64"},"vat_rate":{"$ref":"#/components/schemas/VatRateDto"},"regional_pricing":{"$ref":"#/components/schemas/StorefrontProductPricingDetailsRegionalPricingDto"},"price_original":{"type":"integer","description":"The original price of the product before any discounts, in the lowest denominator (e.g. cents).","format":"int64"},"price_final":{"type":"integer","description":"The final price of the product after all discounts, in the lowest denominator (e.g. cents).","format":"int64"}},"additionalProperties":false,"description":"The pricing details for the product in the storefront."},"StorefrontSaleDto":{"required":["begins_at","discount_amount","discount_type","id","minimum_order_value","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the sale."},"discount_type":{"$ref":"#/components/schemas/SaleDiscountType"},"discount_amount":{"type":"integer","description":"The amount of the discount, either as a percentage in permille or as an absolute value in cents.","format":"int64"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to apply the discount, in the lowest denominator (e.g. cents).","format":"int64"},"begins_at":{"type":"string","description":"The date and time when the sale begins.","format":"date-time"},"ends_at":{"type":["null","string"],"description":"The date and time when the sale ends, if applicable.","format":"date-time"}},"additionalProperties":false},"SaleDiscountType":{"enum":["percent","amount"],"type":"string"},"VatRateDto":{"required":["country_code","country_name","currency","eservice_rate","eu_member_state","percentage","vat_abbreviation","vat_local_name"],"type":"object","properties":{"country_code":{"type":"string","description":"The ISO country code."},"country_name":{"type":"string","description":"The full name of the country."},"currency":{"type":"string","description":"The local currency used in the country."},"vat_abbreviation":{"type":"string","description":"The abbreviation of the VAT term in the local language."},"vat_local_name":{"type":"string","description":"The full name of the VAT term in the local language."},"eu_member_state":{"type":"boolean","description":"Indicates whether the country is a member of the European Union."},"eservice_rate":{"type":"number","description":"The VAT rate applicable for electronic services, as a percentage.","format":"double"},"percentage":{"type":"number","description":"The VAT rate (synonym for EServiceRate).","format":"double","readOnly":true}},"additionalProperties":false,"description":"The VAT rate estimation for the passed in customer country / IP.\nInclude the VAT percentage + abbreviation in your product view to inform your customers about the tax."},"StorefrontProductPricingDetailsRegionalPricingDto":{"required":["base_price","currency","region_id","tax_inclusive"],"type":"object","properties":{"region_id":{"type":"string","description":"The identifier for the region."},"currency":{"type":"string","description":"The currency code used in the region."},"tax_inclusive":{"type":"boolean","description":"Indicates whether the base price includes tax."},"base_price":{"type":"integer","description":"The base price in the regional currency, in the lowest denominator (e.g. cents).","format":"int64"}},"additionalProperties":false,"description":"Regional pricing information for this product.\nOnly present if there is a regional pricing configured."},"CartLineCustomVariableDto":{"required":["description","id","identifier","name","options","type","value"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The display name of the custom variable"},"identifier":{"type":"string","description":"The unique identifier string for the custom variable"},"description":{"type":"string","description":"The description of the custom variable"},"type":{"$ref":"#/components/schemas/CustomVariableType"},"value":{"type":"string","description":"The selected value of the custom variable"},"options":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontCustomVariableOptionDto"},"description":"The collection of available options for this custom variable. Only present for dropdown type"},"selected_option":{"$ref":"#/components/schemas/StorefrontCustomVariableOptionDto"}},"additionalProperties":false},"CustomVariableType":{"enum":["dropdown","text","number"],"type":"string","description":"Defines the type of input method for a custom variable."},"StorefrontCustomVariableOptionDto":{"required":["is_default","name","price","sort_order","value"],"type":"object","properties":{"name":{"type":"string","description":"Display name shown to customers for this option."},"value":{"type":"string","description":"Internal value used for product command variable replacement, without brackets."},"price":{"type":"integer","description":"Additional price in the lowest denominator (e.g. cents) when this option is selected.","format":"int64"},"is_default":{"type":"boolean","description":"Whether this option is selected by default when the custom variable is presented.\nOnly one option per custom variable should be marked as default."},"sort_order":{"type":"integer","description":"Sort order for displaying options to customers.\nLower numbers appear first.","format":"int32"}},"additionalProperties":false},"CustomerDto":{"required":["created_at","id","metadata","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"profile":{"$ref":"#/components/schemas/GenericProfileDto"},"steam_id":{"$ref":"#/components/schemas/SteamId"},"steam":{"$ref":"#/components/schemas/SteamProfileDto"},"minecraft_uuid":{"type":["null","string"],"description":"The customer's Minecraft UUID, if they have linked their Minecraft account.\nNot set for offline Minecraft stores. If the platform type is Minecraft - Geyser,\nand the profile is a bedrock account, this will be a UUID generated from the Xbox XUID."},"minecraft":{"$ref":"#/components/schemas/MinecraftProfileDto"},"xbox_xuid":{"type":["null","string"],"description":"The customer's Xbox XUID, if available."},"minecraft_platform":{"$ref":"#/components/schemas/CustomerMinecraftPlatform"},"name":{"type":["null","string"],"description":"The display name for the customer."},"created_at":{"type":"string","description":"The date and time when the customer was created in the system.","format":"date-time"},"updated_at":{"type":["null","string"],"description":"The date and time when the customer was last updated, if applicable.","format":"date-time"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional custom data associated with the customer."}},"additionalProperties":false,"description":"Represents a customer in the PayNow system with their associated profiles and metadata."},"GenericProfileDto":{"required":["id","name","platform"],"type":"object","properties":{"id":{"type":"string","description":"The platform-specific identifier for the profile."},"platform":{"type":"string","description":"The name of the platform this profile belongs to."},"name":{"type":"string","description":"The display name of the user on this platform."},"avatar_url":{"type":["null","string"],"description":"The URL to the user's avatar image on this platform."}},"additionalProperties":false,"description":"Represents a generic platform profile for a customer."},"SteamId":{"type":"string","additionalProperties":false,"description":"A 64-bit Steam account identifier. Accepts string or numeric format.","format":"steam-id"},"SteamProfileDto":{"required":["avatar_url","id","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/SteamId"},"name":{"type":"string","description":"The display name of the user on Steam."},"avatar_url":{"type":"string","description":"The URL to the user's Steam avatar image."}},"additionalProperties":false,"description":"Represents a Steam profile for a customer."},"MinecraftProfileDto":{"required":["avatar_url","id","name"],"type":"object","properties":{"id":{"type":"string","description":"The UUID of the Minecraft player.\nIf the platform is Minecraft Offline, this will be the name itself.\nIf the platform is Minecraft Geyser, and this is a Bedrock account, this ID will be an Xbox XUID."},"name":{"type":"string","description":"The username of the Minecraft player."},"avatar_url":{"type":"string","description":"The URL to the player's Minecraft skin rendered as an avatar."}},"additionalProperties":false,"description":"Represents a Minecraft profile for a customer."},"CustomerMinecraftPlatform":{"enum":["unknown","java","bedrock"],"type":"string"}}}}
```

## The CartLineCustomVariableDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CartLineCustomVariableDto":{"required":["description","id","identifier","name","options","type","value"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The display name of the custom variable"},"identifier":{"type":"string","description":"The unique identifier string for the custom variable"},"description":{"type":"string","description":"The description of the custom variable"},"type":{"$ref":"#/components/schemas/CustomVariableType"},"value":{"type":"string","description":"The selected value of the custom variable"},"options":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontCustomVariableOptionDto"},"description":"The collection of available options for this custom variable. Only present for dropdown type"},"selected_option":{"$ref":"#/components/schemas/StorefrontCustomVariableOptionDto"}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"CustomVariableType":{"enum":["dropdown","text","number"],"type":"string","description":"Defines the type of input method for a custom variable."},"StorefrontCustomVariableOptionDto":{"required":["is_default","name","price","sort_order","value"],"type":"object","properties":{"name":{"type":"string","description":"Display name shown to customers for this option."},"value":{"type":"string","description":"Internal value used for product command variable replacement, without brackets."},"price":{"type":"integer","description":"Additional price in the lowest denominator (e.g. cents) when this option is selected.","format":"int64"},"is_default":{"type":"boolean","description":"Whether this option is selected by default when the custom variable is presented.\nOnly one option per custom variable should be marked as default."},"sort_order":{"type":"integer","description":"Sort order for displaying options to customers.\nLower numbers appear first.","format":"int32"}},"additionalProperties":false}}}}
```

## The CartLineDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CartLineDto":{"required":["custom_variables","line_key","name","price","pricing","product_id","quantity","slug","subscription","trial"],"type":"object","properties":{"line_key":{"type":"string","description":"The unique key for this line item"},"product_id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the product"},"slug":{"type":"string","description":"The slug of the product"},"price":{"type":"integer","description":"The price of the product in the smallest currency unit (e.g., cents)","format":"int64"},"quantity":{"type":"integer","description":"The quantity of this product in the cart","format":"int32"},"subscription":{"type":"boolean","description":"Indicates whether this line item should be a subscription"},"trial":{"type":"boolean","description":"Indicates whether this line will be trialied by the customer."},"image_url":{"type":["null","string"],"description":"The URL to the product image"},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"selected_gameserver":{"$ref":"#/components/schemas/StorefrontGameServerDto"},"pricing":{"$ref":"#/components/schemas/StorefrontProductPricingDetailsDto"},"custom_variables":{"type":"array","items":{"$ref":"#/components/schemas/CartLineCustomVariableDto"},"description":"Selected custom variables for this cart line."},"gift_to_customer":{"$ref":"#/components/schemas/CustomerDto"},"gift_to_customer_id":{"$ref":"#/components/schemas/FlakeId"}},"additionalProperties":false,"description":"Represents a line item in a cart"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"StorefrontGameServerDto":{"required":["enabled","id","name","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The display name of the game server."},"enabled":{"type":"boolean","description":"Indicates whether the game server is currently enabled."}},"additionalProperties":false,"description":"Represents a simplified view of a game server for storefront display purposes."},"StorefrontProductPricingDetailsDto":{"required":["price_final","price_original","upsell_discount_amount"],"type":"object","properties":{"active_sale":{"$ref":"#/components/schemas/StorefrontSaleDto"},"sale_value":{"type":["null","integer"],"description":"The amount of the sale discount in the lowest denominator (e.g. cents).","format":"int64"},"upsell_offer_id":{"$ref":"#/components/schemas/FlakeId"},"upsell_discount_amount":{"type":"integer","format":"int64"},"vat_rate":{"$ref":"#/components/schemas/VatRateDto"},"regional_pricing":{"$ref":"#/components/schemas/StorefrontProductPricingDetailsRegionalPricingDto"},"price_original":{"type":"integer","description":"The original price of the product before any discounts, in the lowest denominator (e.g. cents).","format":"int64"},"price_final":{"type":"integer","description":"The final price of the product after all discounts, in the lowest denominator (e.g. cents).","format":"int64"}},"additionalProperties":false,"description":"The pricing details for the product in the storefront."},"StorefrontSaleDto":{"required":["begins_at","discount_amount","discount_type","id","minimum_order_value","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the sale."},"discount_type":{"$ref":"#/components/schemas/SaleDiscountType"},"discount_amount":{"type":"integer","description":"The amount of the discount, either as a percentage in permille or as an absolute value in cents.","format":"int64"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to apply the discount, in the lowest denominator (e.g. cents).","format":"int64"},"begins_at":{"type":"string","description":"The date and time when the sale begins.","format":"date-time"},"ends_at":{"type":["null","string"],"description":"The date and time when the sale ends, if applicable.","format":"date-time"}},"additionalProperties":false},"SaleDiscountType":{"enum":["percent","amount"],"type":"string"},"VatRateDto":{"required":["country_code","country_name","currency","eservice_rate","eu_member_state","percentage","vat_abbreviation","vat_local_name"],"type":"object","properties":{"country_code":{"type":"string","description":"The ISO country code."},"country_name":{"type":"string","description":"The full name of the country."},"currency":{"type":"string","description":"The local currency used in the country."},"vat_abbreviation":{"type":"string","description":"The abbreviation of the VAT term in the local language."},"vat_local_name":{"type":"string","description":"The full name of the VAT term in the local language."},"eu_member_state":{"type":"boolean","description":"Indicates whether the country is a member of the European Union."},"eservice_rate":{"type":"number","description":"The VAT rate applicable for electronic services, as a percentage.","format":"double"},"percentage":{"type":"number","description":"The VAT rate (synonym for EServiceRate).","format":"double","readOnly":true}},"additionalProperties":false,"description":"The VAT rate estimation for the passed in customer country / IP.\nInclude the VAT percentage + abbreviation in your product view to inform your customers about the tax."},"StorefrontProductPricingDetailsRegionalPricingDto":{"required":["base_price","currency","region_id","tax_inclusive"],"type":"object","properties":{"region_id":{"type":"string","description":"The identifier for the region."},"currency":{"type":"string","description":"The currency code used in the region."},"tax_inclusive":{"type":"boolean","description":"Indicates whether the base price includes tax."},"base_price":{"type":"integer","description":"The base price in the regional currency, in the lowest denominator (e.g. cents).","format":"int64"}},"additionalProperties":false,"description":"Regional pricing information for this product.\nOnly present if there is a regional pricing configured."},"CartLineCustomVariableDto":{"required":["description","id","identifier","name","options","type","value"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The display name of the custom variable"},"identifier":{"type":"string","description":"The unique identifier string for the custom variable"},"description":{"type":"string","description":"The description of the custom variable"},"type":{"$ref":"#/components/schemas/CustomVariableType"},"value":{"type":"string","description":"The selected value of the custom variable"},"options":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontCustomVariableOptionDto"},"description":"The collection of available options for this custom variable. Only present for dropdown type"},"selected_option":{"$ref":"#/components/schemas/StorefrontCustomVariableOptionDto"}},"additionalProperties":false},"CustomVariableType":{"enum":["dropdown","text","number"],"type":"string","description":"Defines the type of input method for a custom variable."},"StorefrontCustomVariableOptionDto":{"required":["is_default","name","price","sort_order","value"],"type":"object","properties":{"name":{"type":"string","description":"Display name shown to customers for this option."},"value":{"type":"string","description":"Internal value used for product command variable replacement, without brackets."},"price":{"type":"integer","description":"Additional price in the lowest denominator (e.g. cents) when this option is selected.","format":"int64"},"is_default":{"type":"boolean","description":"Whether this option is selected by default when the custom variable is presented.\nOnly one option per custom variable should be marked as default."},"sort_order":{"type":"integer","description":"Sort order for displaying options to customers.\nLower numbers appear first.","format":"int32"}},"additionalProperties":false},"CustomerDto":{"required":["created_at","id","metadata","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"profile":{"$ref":"#/components/schemas/GenericProfileDto"},"steam_id":{"$ref":"#/components/schemas/SteamId"},"steam":{"$ref":"#/components/schemas/SteamProfileDto"},"minecraft_uuid":{"type":["null","string"],"description":"The customer's Minecraft UUID, if they have linked their Minecraft account.\nNot set for offline Minecraft stores. If the platform type is Minecraft - Geyser,\nand the profile is a bedrock account, this will be a UUID generated from the Xbox XUID."},"minecraft":{"$ref":"#/components/schemas/MinecraftProfileDto"},"xbox_xuid":{"type":["null","string"],"description":"The customer's Xbox XUID, if available."},"minecraft_platform":{"$ref":"#/components/schemas/CustomerMinecraftPlatform"},"name":{"type":["null","string"],"description":"The display name for the customer."},"created_at":{"type":"string","description":"The date and time when the customer was created in the system.","format":"date-time"},"updated_at":{"type":["null","string"],"description":"The date and time when the customer was last updated, if applicable.","format":"date-time"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional custom data associated with the customer."}},"additionalProperties":false,"description":"Represents a customer in the PayNow system with their associated profiles and metadata."},"GenericProfileDto":{"required":["id","name","platform"],"type":"object","properties":{"id":{"type":"string","description":"The platform-specific identifier for the profile."},"platform":{"type":"string","description":"The name of the platform this profile belongs to."},"name":{"type":"string","description":"The display name of the user on this platform."},"avatar_url":{"type":["null","string"],"description":"The URL to the user's avatar image on this platform."}},"additionalProperties":false,"description":"Represents a generic platform profile for a customer."},"SteamId":{"type":"string","additionalProperties":false,"description":"A 64-bit Steam account identifier. Accepts string or numeric format.","format":"steam-id"},"SteamProfileDto":{"required":["avatar_url","id","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/SteamId"},"name":{"type":"string","description":"The display name of the user on Steam."},"avatar_url":{"type":"string","description":"The URL to the user's Steam avatar image."}},"additionalProperties":false,"description":"Represents a Steam profile for a customer."},"MinecraftProfileDto":{"required":["avatar_url","id","name"],"type":"object","properties":{"id":{"type":"string","description":"The UUID of the Minecraft player.\nIf the platform is Minecraft Offline, this will be the name itself.\nIf the platform is Minecraft Geyser, and this is a Bedrock account, this ID will be an Xbox XUID."},"name":{"type":"string","description":"The username of the Minecraft player."},"avatar_url":{"type":"string","description":"The URL to the player's Minecraft skin rendered as an avatar."}},"additionalProperties":false,"description":"Represents a Minecraft profile for a customer."},"CustomerMinecraftPlatform":{"enum":["unknown","java","bedrock"],"type":"string"}}}}
```

## The CashAppDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CashAppDetailsDto":{"required":["buyer_id","cashtag"],"type":"object","properties":{"buyer_id":{"type":"string","description":"The Cash App buyer identifier"},"cashtag":{"type":"string","description":"The Cash App cashtag"}},"additionalProperties":false,"description":"Cash App payment method details"}}}}
```

## The CheckoutPaymentInfoDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CheckoutPaymentInfoDto":{"required":["declined","status"],"type":"object","properties":{"status":{"type":"string","description":"Status string from the payment provider."},"declined":{"type":"boolean","description":"Indicates whether the payment was declined."},"decline_message":{"type":["null","string"],"description":"The customer readable decline reason, if the payment was declined."},"checkout_url":{"type":["null","string"],"description":"Checkout URL to redirect to for on-session payments."}},"additionalProperties":false,"description":"Payment outcome information returned after a subscription change triggers an immediate charge."}}}}
```

## The CreateCartCheckoutSessionDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CreateCartCheckoutSessionDto":{"type":"object","properties":{"coupon_id":{"$ref":"#/components/schemas/FlakeId"},"promo_codes":{"type":["null","array"],"items":{"type":"string"},"description":"Optional array of promo codes (coupons, gift cards, affiliates) to apply.\nAn invalid promo code will cause an error."},"affiliate_code":{"type":["null","string"],"description":"Optional affiliate code to track referrals.\nAn invalid affiliate code will NOT cause an error."},"return_url":{"type":["null","string"],"description":"Optional URL to redirect to after successful checkout"},"cancel_url":{"type":["null","string"],"description":"Optional URL to redirect to if checkout is canceled"},"auto_redirect":{"type":["null","boolean"],"description":"Whether to automatically redirect the customer (return_url must be set)"}},"additionalProperties":false,"description":"Request to create a new checkout session from a cart"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The CreateCheckoutSessionLineDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CreateCheckoutSessionLineDto":{"required":["product_id","quantity"],"type":"object","properties":{"product_id":{"$ref":"#/components/schemas/FlakeId"},"subscription":{"type":["null","boolean"],"description":"Determines whether this line should create a subscription"},"trial":{"type":["null","boolean"],"description":"Indicates whether the product should be trialed"},"gift_to":{"$ref":"#/components/schemas/CustomerPlatformAccountDto"},"gift_to_customer_id":{"$ref":"#/components/schemas/FlakeId"},"quantity":{"type":"integer","description":"The quantity of this product to purchase","format":"int32"},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"custom_variables":{"type":["null","object"],"additionalProperties":{"type":"string"},"description":"Key-value pair mapping custom variable identifiers to their selected values.\nRequired only when the product includes custom variables."}},"additionalProperties":false,"description":"Represents a line item in a checkout session request"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"CustomerPlatformAccountDto":{"required":["id","platform"],"type":"object","properties":{"platform":{"$ref":"#/components/schemas/CustomerProfilePlatform"},"id":{"type":"string","description":"The account ID on the platform"}},"additionalProperties":false,"description":"Represents a customer platform association, used for gifting"},"CustomerProfilePlatform":{"enum":["invalid","steam","minecraft","paynow_name","paynow","minecraft_java_name","minecraft_bedrock_name","xbox_xuid","minecraft_uuid"],"type":"string"}}}}
```

## The CreateCheckoutSessionRequestDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CreateCheckoutSessionRequestDto":{"required":["lines"],"type":"object","properties":{"lines":{"type":"array","items":{"$ref":"#/components/schemas/CreateCheckoutSessionLineDto"},"description":"The line items to include in the checkout."},"coupon_id":{"$ref":"#/components/schemas/FlakeId"},"promo_codes":{"type":["null","array"],"items":{"type":"string"},"description":"Optional array of promo codes (coupons, gift cards, affiliates) to apply.\nAn invalid promo code will cause an error."},"affiliate_code":{"type":["null","string"],"description":"Optional affiliate code to track referrals.\nAn invalid affiliate code will NOT cause an error."},"return_url":{"type":["null","string"],"description":"Optional URL to redirect to after successful checkout"},"cancel_url":{"type":["null","string"],"description":"Optional URL to redirect to if checkout is canceled"},"auto_redirect":{"type":["null","boolean"],"description":"Whether to automatically redirect the customer (return_url must be set)"}},"additionalProperties":false,"description":"Request to create a new checkout session"},"CreateCheckoutSessionLineDto":{"required":["product_id","quantity"],"type":"object","properties":{"product_id":{"$ref":"#/components/schemas/FlakeId"},"subscription":{"type":["null","boolean"],"description":"Determines whether this line should create a subscription"},"trial":{"type":["null","boolean"],"description":"Indicates whether the product should be trialed"},"gift_to":{"$ref":"#/components/schemas/CustomerPlatformAccountDto"},"gift_to_customer_id":{"$ref":"#/components/schemas/FlakeId"},"quantity":{"type":"integer","description":"The quantity of this product to purchase","format":"int32"},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"custom_variables":{"type":["null","object"],"additionalProperties":{"type":"string"},"description":"Key-value pair mapping custom variable identifiers to their selected values.\nRequired only when the product includes custom variables."}},"additionalProperties":false,"description":"Represents a line item in a checkout session request"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"CustomerPlatformAccountDto":{"required":["id","platform"],"type":"object","properties":{"platform":{"$ref":"#/components/schemas/CustomerProfilePlatform"},"id":{"type":"string","description":"The account ID on the platform"}},"additionalProperties":false,"description":"Represents a customer platform association, used for gifting"},"CustomerProfilePlatform":{"enum":["invalid","steam","minecraft","paynow_name","paynow","minecraft_java_name","minecraft_bedrock_name","xbox_xuid","minecraft_uuid"],"type":"string"}}}}
```

## The CreateCheckoutSessionResponseDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CreateCheckoutSessionResponseDto":{"required":["id","token","url"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"token":{"type":"string","description":"The token for the checkout session"},"url":{"type":"string","description":"The URL to redirect the customer to complete checkout"}},"additionalProperties":false,"description":"Response after creating a checkout session"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The CryptoDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CryptoDetailsDto":{"required":["confirmations","crypto_amount","crypto_currency","total_paid"],"type":"object","properties":{"crypto_currency":{"type":"string","description":"The cryptocurrency used"},"crypto_amount":{"type":"string","description":"The amount in cryptocurrency"},"total_paid":{"type":"string","description":"The total amount paid in cryptocurrency"},"confirmations":{"type":"integer","description":"The number of blockchain confirmations","format":"int32"}},"additionalProperties":false,"description":"Cryptocurrency payment method details"}}}}
```

## The CustomVariableLineItemDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CustomVariableLineItemDto":{"required":["description","id","identifier","name","price","value"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"identifier":{"type":"string","description":"The identifier used to reference this custom variable (e.g., \"color\", \"size\")."},"name":{"type":"string","description":"The display name of the custom variable shown to users."},"description":{"type":"string","description":"A detailed description of what this custom variable represents."},"price":{"type":"integer","description":"The price associated with this custom variable in the smallest currency unit (e.g., cents).","format":"int64"},"value":{"type":"string","description":"The selected value for this custom variable."}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The CustomVariableType object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CustomVariableType":{"enum":["dropdown","text","number"],"type":"string","description":"Defines the type of input method for a custom variable."}}}}
```

## The CustomerDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CustomerDto":{"required":["created_at","id","metadata","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"profile":{"$ref":"#/components/schemas/GenericProfileDto"},"steam_id":{"$ref":"#/components/schemas/SteamId"},"steam":{"$ref":"#/components/schemas/SteamProfileDto"},"minecraft_uuid":{"type":["null","string"],"description":"The customer's Minecraft UUID, if they have linked their Minecraft account.\nNot set for offline Minecraft stores. If the platform type is Minecraft - Geyser,\nand the profile is a bedrock account, this will be a UUID generated from the Xbox XUID."},"minecraft":{"$ref":"#/components/schemas/MinecraftProfileDto"},"xbox_xuid":{"type":["null","string"],"description":"The customer's Xbox XUID, if available."},"minecraft_platform":{"$ref":"#/components/schemas/CustomerMinecraftPlatform"},"name":{"type":["null","string"],"description":"The display name for the customer."},"created_at":{"type":"string","description":"The date and time when the customer was created in the system.","format":"date-time"},"updated_at":{"type":["null","string"],"description":"The date and time when the customer was last updated, if applicable.","format":"date-time"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional custom data associated with the customer."}},"additionalProperties":false,"description":"Represents a customer in the PayNow system with their associated profiles and metadata."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"GenericProfileDto":{"required":["id","name","platform"],"type":"object","properties":{"id":{"type":"string","description":"The platform-specific identifier for the profile."},"platform":{"type":"string","description":"The name of the platform this profile belongs to."},"name":{"type":"string","description":"The display name of the user on this platform."},"avatar_url":{"type":["null","string"],"description":"The URL to the user's avatar image on this platform."}},"additionalProperties":false,"description":"Represents a generic platform profile for a customer."},"SteamId":{"type":"string","additionalProperties":false,"description":"A 64-bit Steam account identifier. Accepts string or numeric format.","format":"steam-id"},"SteamProfileDto":{"required":["avatar_url","id","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/SteamId"},"name":{"type":"string","description":"The display name of the user on Steam."},"avatar_url":{"type":"string","description":"The URL to the user's Steam avatar image."}},"additionalProperties":false,"description":"Represents a Steam profile for a customer."},"MinecraftProfileDto":{"required":["avatar_url","id","name"],"type":"object","properties":{"id":{"type":"string","description":"The UUID of the Minecraft player.\nIf the platform is Minecraft Offline, this will be the name itself.\nIf the platform is Minecraft Geyser, and this is a Bedrock account, this ID will be an Xbox XUID."},"name":{"type":"string","description":"The username of the Minecraft player."},"avatar_url":{"type":"string","description":"The URL to the player's Minecraft skin rendered as an avatar."}},"additionalProperties":false,"description":"Represents a Minecraft profile for a customer."},"CustomerMinecraftPlatform":{"enum":["unknown","java","bedrock"],"type":"string"}}}}
```

## The CustomerMinecraftPlatform object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CustomerMinecraftPlatform":{"enum":["unknown","java","bedrock"],"type":"string"}}}}
```

## The CustomerPlatformAccountDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CustomerPlatformAccountDto":{"required":["id","platform"],"type":"object","properties":{"platform":{"$ref":"#/components/schemas/CustomerProfilePlatform"},"id":{"type":"string","description":"The account ID on the platform"}},"additionalProperties":false,"description":"Represents a customer platform association, used for gifting"},"CustomerProfilePlatform":{"enum":["invalid","steam","minecraft","paynow_name","paynow","minecraft_java_name","minecraft_bedrock_name","xbox_xuid","minecraft_uuid"],"type":"string"}}}}
```

## The CustomerProfilePlatform object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CustomerProfilePlatform":{"enum":["invalid","steam","minecraft","paynow_name","paynow","minecraft_java_name","minecraft_bedrock_name","xbox_xuid","minecraft_uuid"],"type":"string"}}}}
```

## The CustomerTierGroupDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"CustomerTierGroupDto":{"required":["active_product_id","currency","next_billing_amount","next_billing_presentment_amount","next_renewal_at","presentment_currency","tier_group_id"],"type":"object","properties":{"tier_group_id":{"$ref":"#/components/schemas/FlakeId"},"active_product_id":{"$ref":"#/components/schemas/FlakeId"},"pending_change_product_id":{"$ref":"#/components/schemas/FlakeId"},"next_renewal_at":{"type":"string","description":"The date and time of the next subscription renewal for this tier group.","format":"date-time"},"next_billing_amount":{"type":"integer","description":"The next billing amount in the smallest currency unit (e.g., cents) in the settlement currency.","format":"int64"},"next_billing_presentment_amount":{"type":"integer","description":"The next billing amount in the smallest currency unit (e.g., cents) in the customer-facing presentment currency.","format":"int64"},"currency":{"type":"string","description":"The settlement currency code (e.g., \"usd\")."},"presentment_currency":{"type":"string","description":"The customer-facing presentment currency code (e.g., \"eur\")."}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The DeliveryItemProductDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"DeliveryItemProductDto":{"required":["id","name","slug","version_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the product"},"slug":{"type":"string","description":"The URL-friendly slug of the product"},"version_id":{"type":"string","description":"The version identifier of the product"}},"additionalProperties":false,"description":"Represents the product information for a delivery item"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The DeliveryItemStateDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"DeliveryItemStateDto":{"enum":["usable","active","used","revoked","renewed"],"type":"string"}}}}
```

## The FlakeId object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The GenericProfileDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"GenericProfileDto":{"required":["id","name","platform"],"type":"object","properties":{"id":{"type":"string","description":"The platform-specific identifier for the profile."},"platform":{"type":"string","description":"The name of the platform this profile belongs to."},"name":{"type":"string","description":"The display name of the user on this platform."},"avatar_url":{"type":["null","string"],"description":"The URL to the user's avatar image on this platform."}},"additionalProperties":false,"description":"Represents a generic platform profile for a customer."}}}}
```

## The IdealDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"IdealDetailsDto":{"required":["bank","bic"],"type":"object","properties":{"bank":{"type":"string","description":"The bank identifier"},"bic":{"type":"string","description":"The Bank Identifier Code"},"iban_last4":{"type":["null","string"],"description":"The last 4 digits of the IBAN"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"iDEAL payment method details"}}}}
```

## The KlarnaDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"KlarnaDetailsDto":{"type":"object","properties":{"country":{"type":["null","string"],"description":"The country code"},"method_category":{"type":["null","string"],"description":"The Klarna payment method category"}},"additionalProperties":false,"description":"Klarna payment method details"}}}}
```

## The LinkDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"LinkDetailsDto":{"required":["email"],"type":"object","properties":{"email":{"type":"string","description":"The email associated with the Link account"}},"additionalProperties":false,"description":"Link payment method details"}}}}
```

## The MinecraftProfileDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"MinecraftProfileDto":{"required":["avatar_url","id","name"],"type":"object","properties":{"id":{"type":"string","description":"The UUID of the Minecraft player.\nIf the platform is Minecraft Offline, this will be the name itself.\nIf the platform is Minecraft Geyser, and this is a Bedrock account, this ID will be an Xbox XUID."},"name":{"type":"string","description":"The username of the Minecraft player."},"avatar_url":{"type":"string","description":"The URL to the player's Minecraft skin rendered as an avatar."}},"additionalProperties":false,"description":"Represents a Minecraft profile for a customer."}}}}
```

## The P24DetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"P24DetailsDto":{"required":["bank"],"type":"object","properties":{"bank":{"type":"string","description":"The bank identifier"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Przelewy24 payment method details"}}}}
```

## The PayByBankDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PayByBankDetailsDto":{"type":"object","properties":{"bank_name":{"type":["null","string"],"description":"The bank name"},"bic":{"type":["null","string"],"description":"The Bank Identifier Code"},"country":{"type":["null","string"],"description":"The country code"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Pay by Bank payment method details"}}}}
```

## The PayNowActorType object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PayNowActorType":{"enum":["anonymous","user","api_key","customer","game_server","internal","admin","platform","global_customer"],"type":"string"}}}}
```

## The PayNowError object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PayNowError":{"required":["code","message","status"],"type":"object","properties":{"status":{"type":"integer","description":"The HTTP status code.","format":"int32"},"code":{"type":"string","description":"The PayNow parseable error code."},"message":{"type":"string","description":"The human-readable error message."},"trace_id":{"type":["null","string"],"description":"A distributed trace ID used for debugging."},"errors":{"type":["null","array"],"items":{"$ref":"#/components/schemas/ValidationError"},"description":"An array of multiple errors. Only used by some API services."}},"additionalProperties":false,"description":"Represents a PayNow error"},"ValidationError":{"required":["code","message","path","validation"],"type":"object","properties":{"code":{"type":"string","description":"The parseable error code."},"message":{"type":"string","description":"The human-readable error message."},"path":{"type":"string","description":"The path leading to the validation error."},"validation":{"type":"string","description":"Type of the validation that failed."}},"additionalProperties":false,"description":"A validation error."}}}}
```

## The PayPalDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PayPalDetailsDto":{"required":["country","payer_email","payer_id","payer_name","vault"],"type":"object","properties":{"payer_id":{"type":"string","description":"The PayPal payer identifier"},"payer_email":{"type":"string","description":"The PayPal account email"},"payer_name":{"type":"string","description":"The PayPal account holder name"},"country":{"type":"string","description":"The country code of the PayPal account"},"vault":{"type":"boolean","description":"Indicates if this PayPal account is vaulted"},"pending_vault_approval":{"type":["null","boolean"],"description":"Indicates if vault approval is pending"},"standalone_setup":{"type":["null","boolean"],"description":"Indicates if this is a standalone setup"}},"additionalProperties":false,"description":"PayPal payment method details"}}}}
```

## The PaymentMethodDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PaymentMethodDetailsDto":{"type":"object","properties":{"card":{"$ref":"#/components/schemas/CardDetailsDto"},"cashapp":{"$ref":"#/components/schemas/CashAppDetailsDto"},"paypal":{"$ref":"#/components/schemas/PayPalDetailsDto"},"link":{"$ref":"#/components/schemas/LinkDetailsDto"},"crypto":{"$ref":"#/components/schemas/CryptoDetailsDto"},"steamskins":{"$ref":"#/components/schemas/SteamSkinsDetailsDto"},"ideal":{"$ref":"#/components/schemas/IdealDetailsDto"},"p24":{"$ref":"#/components/schemas/P24DetailsDto"},"bancontact":{"$ref":"#/components/schemas/BancontactDetailsDto"},"klarna":{"$ref":"#/components/schemas/KlarnaDetailsDto"},"alipay":{"$ref":"#/components/schemas/AlipayDetailsDto"},"pay_by_bank":{"$ref":"#/components/schemas/PayByBankDetailsDto"},"pix":{"$ref":"#/components/schemas/PixDetailsDto"},"paysafecard":{"$ref":"#/components/schemas/PaysafeCardDetailsDto"}},"additionalProperties":false,"description":"Contains detailed information about a payment method.\nDISCLAIMER: These fields are not guaranteed to be backwards compatible and may change or be removed without notice."},"CardDetailsDto":{"required":["brand","country","exp_month","exp_year","fingerprint","funding","last4"],"type":"object","properties":{"brand":{"type":"string","description":"The card brand"},"country":{"type":"string","description":"The country code where the card was issued"},"exp_month":{"type":"integer","description":"The card expiration month","format":"int32"},"exp_year":{"type":"integer","description":"The card expiration year","format":"int32"},"fingerprint":{"type":"string","description":"A unique fingerprint for this card"},"funding":{"type":"string","description":"The card funding type"},"last4":{"type":"string","description":"The last 4 digits of the card number"},"bin":{"type":["null","string"],"description":"The Bank Identification Number (first 6/8 digits of card).\nOnly available internally."},"issuer":{"type":["null","string"],"description":"The card issuer/bank name.\nOnly available internally."},"description":{"type":["null","string"],"description":"The card description.\nOnly available internally."},"wallet":{"$ref":"#/components/schemas/CardWalletDto"}},"additionalProperties":false,"description":"Card payment method details"},"CardWalletDto":{"required":["type"],"type":"object","properties":{"type":{"type":"string","description":"The type of digital wallet"}},"additionalProperties":false,"description":"Digital wallet details for a card"},"CashAppDetailsDto":{"required":["buyer_id","cashtag"],"type":"object","properties":{"buyer_id":{"type":"string","description":"The Cash App buyer identifier"},"cashtag":{"type":"string","description":"The Cash App cashtag"}},"additionalProperties":false,"description":"Cash App payment method details"},"PayPalDetailsDto":{"required":["country","payer_email","payer_id","payer_name","vault"],"type":"object","properties":{"payer_id":{"type":"string","description":"The PayPal payer identifier"},"payer_email":{"type":"string","description":"The PayPal account email"},"payer_name":{"type":"string","description":"The PayPal account holder name"},"country":{"type":"string","description":"The country code of the PayPal account"},"vault":{"type":"boolean","description":"Indicates if this PayPal account is vaulted"},"pending_vault_approval":{"type":["null","boolean"],"description":"Indicates if vault approval is pending"},"standalone_setup":{"type":["null","boolean"],"description":"Indicates if this is a standalone setup"}},"additionalProperties":false,"description":"PayPal payment method details"},"LinkDetailsDto":{"required":["email"],"type":"object","properties":{"email":{"type":"string","description":"The email associated with the Link account"}},"additionalProperties":false,"description":"Link payment method details"},"CryptoDetailsDto":{"required":["confirmations","crypto_amount","crypto_currency","total_paid"],"type":"object","properties":{"crypto_currency":{"type":"string","description":"The cryptocurrency used"},"crypto_amount":{"type":"string","description":"The amount in cryptocurrency"},"total_paid":{"type":"string","description":"The total amount paid in cryptocurrency"},"confirmations":{"type":"integer","description":"The number of blockchain confirmations","format":"int32"}},"additionalProperties":false,"description":"Cryptocurrency payment method details"},"SteamSkinsDetailsDto":{"required":["items"],"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SteamSkinsInventoryItemDetailsDto"},"description":"The list of Steam inventory items used for payment"}},"additionalProperties":false,"description":"Steam Skins payment method details"},"SteamSkinsInventoryItemDetailsDto":{"required":["app_id","id","name","price"],"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the Steam item"},"app_id":{"type":"integer","description":"The Steam app ID","format":"int32"},"name":{"type":"string","description":"The name of the item"},"price":{"type":"integer","description":"The price of the item in the smallest currency unit","format":"int32"}},"additionalProperties":false},"IdealDetailsDto":{"required":["bank","bic"],"type":"object","properties":{"bank":{"type":"string","description":"The bank identifier"},"bic":{"type":"string","description":"The Bank Identifier Code"},"iban_last4":{"type":["null","string"],"description":"The last 4 digits of the IBAN"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"iDEAL payment method details"},"P24DetailsDto":{"required":["bank"],"type":"object","properties":{"bank":{"type":"string","description":"The bank identifier"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Przelewy24 payment method details"},"BancontactDetailsDto":{"type":"object","properties":{"bank":{"type":["null","string"],"description":"The bank identifier"},"bank_name":{"type":["null","string"],"description":"The bank name"},"bic":{"type":["null","string"],"description":"The Bank Identifier Code"},"iban_last4":{"type":["null","string"],"description":"The last 4 digits of the IBAN"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Bancontact payment method details"},"KlarnaDetailsDto":{"type":"object","properties":{"country":{"type":["null","string"],"description":"The country code"},"method_category":{"type":["null","string"],"description":"The Klarna payment method category"}},"additionalProperties":false,"description":"Klarna payment method details"},"AlipayDetailsDto":{"type":"object","properties":{"buyer_id":{"type":["null","string"],"description":"The Alipay buyer identifier"},"fingerprint":{"type":["null","string"],"description":"A unique fingerprint for this Alipay account"}},"additionalProperties":false,"description":"Alipay payment method details"},"PayByBankDetailsDto":{"type":"object","properties":{"bank_name":{"type":["null","string"],"description":"The bank name"},"bic":{"type":["null","string"],"description":"The Bank Identifier Code"},"country":{"type":["null","string"],"description":"The country code"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Pay by Bank payment method details"},"PixDetailsDto":{"type":"object","properties":{"bank_name":{"type":["null","string"],"description":"The bank name"},"bank_account_number":{"type":["null","string"],"description":"The bank account number"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Pix payment method details"},"PaysafeCardDetailsDto":{"type":"object","properties":{"first_name":{"type":["null","string"]},"last_name":{"type":["null","string"]},"psc_id":{"type":["null","string"]},"association_id":{"type":["null","string"]}},"additionalProperties":false,"description":"Paysafecard payment method details"}}}}
```

## The PaymentMethodDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PaymentMethodDto":{"required":["created_at","customer_id","gateway","gateway_customer_id","gateway_entity_identifier","gateway_id","gateway_type","id","method_details","method_type"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"customer_id":{"$ref":"#/components/schemas/FlakeId"},"gateway":{"type":"string","description":"The payment gateway provider"},"gateway_id":{"type":"string","description":"The gateway's identifier for this payment method"},"gateway_customer_id":{"type":"string","description":"The gateway's customer identifier"},"gateway_type":{"type":"string","description":"The gateway-specific type identifier"},"method_type":{"type":"string","description":"The payment method type"},"method_details":{"$ref":"#/components/schemas/PaymentMethodDetailsDto"},"created_at":{"type":"string","description":"The date and time when this payment method was created","format":"date-time"},"gateway_entity_identifier":{"type":"string","description":"The gateway entity identifier"},"updated_at":{"type":["null","string"],"description":"The date and time when this payment method was last updated","format":"date-time"}},"additionalProperties":false,"description":"Represents a stored payment method"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"PaymentMethodDetailsDto":{"type":"object","properties":{"card":{"$ref":"#/components/schemas/CardDetailsDto"},"cashapp":{"$ref":"#/components/schemas/CashAppDetailsDto"},"paypal":{"$ref":"#/components/schemas/PayPalDetailsDto"},"link":{"$ref":"#/components/schemas/LinkDetailsDto"},"crypto":{"$ref":"#/components/schemas/CryptoDetailsDto"},"steamskins":{"$ref":"#/components/schemas/SteamSkinsDetailsDto"},"ideal":{"$ref":"#/components/schemas/IdealDetailsDto"},"p24":{"$ref":"#/components/schemas/P24DetailsDto"},"bancontact":{"$ref":"#/components/schemas/BancontactDetailsDto"},"klarna":{"$ref":"#/components/schemas/KlarnaDetailsDto"},"alipay":{"$ref":"#/components/schemas/AlipayDetailsDto"},"pay_by_bank":{"$ref":"#/components/schemas/PayByBankDetailsDto"},"pix":{"$ref":"#/components/schemas/PixDetailsDto"},"paysafecard":{"$ref":"#/components/schemas/PaysafeCardDetailsDto"}},"additionalProperties":false,"description":"Contains detailed information about a payment method.\nDISCLAIMER: These fields are not guaranteed to be backwards compatible and may change or be removed without notice."},"CardDetailsDto":{"required":["brand","country","exp_month","exp_year","fingerprint","funding","last4"],"type":"object","properties":{"brand":{"type":"string","description":"The card brand"},"country":{"type":"string","description":"The country code where the card was issued"},"exp_month":{"type":"integer","description":"The card expiration month","format":"int32"},"exp_year":{"type":"integer","description":"The card expiration year","format":"int32"},"fingerprint":{"type":"string","description":"A unique fingerprint for this card"},"funding":{"type":"string","description":"The card funding type"},"last4":{"type":"string","description":"The last 4 digits of the card number"},"bin":{"type":["null","string"],"description":"The Bank Identification Number (first 6/8 digits of card).\nOnly available internally."},"issuer":{"type":["null","string"],"description":"The card issuer/bank name.\nOnly available internally."},"description":{"type":["null","string"],"description":"The card description.\nOnly available internally."},"wallet":{"$ref":"#/components/schemas/CardWalletDto"}},"additionalProperties":false,"description":"Card payment method details"},"CardWalletDto":{"required":["type"],"type":"object","properties":{"type":{"type":"string","description":"The type of digital wallet"}},"additionalProperties":false,"description":"Digital wallet details for a card"},"CashAppDetailsDto":{"required":["buyer_id","cashtag"],"type":"object","properties":{"buyer_id":{"type":"string","description":"The Cash App buyer identifier"},"cashtag":{"type":"string","description":"The Cash App cashtag"}},"additionalProperties":false,"description":"Cash App payment method details"},"PayPalDetailsDto":{"required":["country","payer_email","payer_id","payer_name","vault"],"type":"object","properties":{"payer_id":{"type":"string","description":"The PayPal payer identifier"},"payer_email":{"type":"string","description":"The PayPal account email"},"payer_name":{"type":"string","description":"The PayPal account holder name"},"country":{"type":"string","description":"The country code of the PayPal account"},"vault":{"type":"boolean","description":"Indicates if this PayPal account is vaulted"},"pending_vault_approval":{"type":["null","boolean"],"description":"Indicates if vault approval is pending"},"standalone_setup":{"type":["null","boolean"],"description":"Indicates if this is a standalone setup"}},"additionalProperties":false,"description":"PayPal payment method details"},"LinkDetailsDto":{"required":["email"],"type":"object","properties":{"email":{"type":"string","description":"The email associated with the Link account"}},"additionalProperties":false,"description":"Link payment method details"},"CryptoDetailsDto":{"required":["confirmations","crypto_amount","crypto_currency","total_paid"],"type":"object","properties":{"crypto_currency":{"type":"string","description":"The cryptocurrency used"},"crypto_amount":{"type":"string","description":"The amount in cryptocurrency"},"total_paid":{"type":"string","description":"The total amount paid in cryptocurrency"},"confirmations":{"type":"integer","description":"The number of blockchain confirmations","format":"int32"}},"additionalProperties":false,"description":"Cryptocurrency payment method details"},"SteamSkinsDetailsDto":{"required":["items"],"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SteamSkinsInventoryItemDetailsDto"},"description":"The list of Steam inventory items used for payment"}},"additionalProperties":false,"description":"Steam Skins payment method details"},"SteamSkinsInventoryItemDetailsDto":{"required":["app_id","id","name","price"],"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the Steam item"},"app_id":{"type":"integer","description":"The Steam app ID","format":"int32"},"name":{"type":"string","description":"The name of the item"},"price":{"type":"integer","description":"The price of the item in the smallest currency unit","format":"int32"}},"additionalProperties":false},"IdealDetailsDto":{"required":["bank","bic"],"type":"object","properties":{"bank":{"type":"string","description":"The bank identifier"},"bic":{"type":"string","description":"The Bank Identifier Code"},"iban_last4":{"type":["null","string"],"description":"The last 4 digits of the IBAN"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"iDEAL payment method details"},"P24DetailsDto":{"required":["bank"],"type":"object","properties":{"bank":{"type":"string","description":"The bank identifier"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Przelewy24 payment method details"},"BancontactDetailsDto":{"type":"object","properties":{"bank":{"type":["null","string"],"description":"The bank identifier"},"bank_name":{"type":["null","string"],"description":"The bank name"},"bic":{"type":["null","string"],"description":"The Bank Identifier Code"},"iban_last4":{"type":["null","string"],"description":"The last 4 digits of the IBAN"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Bancontact payment method details"},"KlarnaDetailsDto":{"type":"object","properties":{"country":{"type":["null","string"],"description":"The country code"},"method_category":{"type":["null","string"],"description":"The Klarna payment method category"}},"additionalProperties":false,"description":"Klarna payment method details"},"AlipayDetailsDto":{"type":"object","properties":{"buyer_id":{"type":["null","string"],"description":"The Alipay buyer identifier"},"fingerprint":{"type":["null","string"],"description":"A unique fingerprint for this Alipay account"}},"additionalProperties":false,"description":"Alipay payment method details"},"PayByBankDetailsDto":{"type":"object","properties":{"bank_name":{"type":["null","string"],"description":"The bank name"},"bic":{"type":["null","string"],"description":"The Bank Identifier Code"},"country":{"type":["null","string"],"description":"The country code"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Pay by Bank payment method details"},"PixDetailsDto":{"type":"object","properties":{"bank_name":{"type":["null","string"],"description":"The bank name"},"bank_account_number":{"type":["null","string"],"description":"The bank account number"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Pix payment method details"},"PaysafeCardDetailsDto":{"type":"object","properties":{"first_name":{"type":["null","string"]},"last_name":{"type":["null","string"]},"psc_id":{"type":["null","string"]},"association_id":{"type":["null","string"]}},"additionalProperties":false,"description":"Paysafecard payment method details"}}}}
```

## The PaysafeCardDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PaysafeCardDetailsDto":{"type":"object","properties":{"first_name":{"type":["null","string"]},"last_name":{"type":["null","string"]},"psc_id":{"type":["null","string"]},"association_id":{"type":["null","string"]}},"additionalProperties":false,"description":"Paysafecard payment method details"}}}}
```

## The PixDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PixDetailsDto":{"type":"object","properties":{"bank_name":{"type":["null","string"],"description":"The bank name"},"bank_account_number":{"type":["null","string"],"description":"The bank account number"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Pix payment method details"}}}}
```

## The PlatformCapability object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PlatformCapability":{"enum":["invalid","connected_users"],"type":"string"}}}}
```

## The PlatformStoreTypeAssociationDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PlatformStoreTypeAssociationDetailsDto":{"required":["disable_billing_plans","display_disclaimers","full_external_management","platform_id","store_platform"],"type":"object","properties":{"platform_id":{"$ref":"#/components/schemas/FlakeId"},"associated_platform":{"$ref":"#/components/schemas/PublicPlatformDto"},"store_platform":{"type":"string","description":"The store platform identifier string (e.g. \"rust\", \"minecraft\")."},"paynow_platform_fee_percentage_override":{"type":["null","integer"],"description":"Overrides the default PayNow platform fee percentage for this association.\nExpressed in basis points (e.g. 250 = 2.50%).","format":"int64"},"connected_platform_fee_percentage":{"type":["null","integer"],"description":"The fee percentage charged by the connected platform.\nExpressed in basis points (e.g. 250 = 2.50%).","format":"int64"},"connected_platform_wallet_id":{"type":["null","integer"],"description":"The payout ID associated with the connected platform.","format":"int64"},"disable_billing_plans":{"type":"boolean","description":"When true, billing plans are disabled for this platform/store type combination."},"display_disclaimers":{"type":"boolean","description":"When true, legal or compliance disclaimers should be displayed to the end user."},"full_external_management":{"type":"boolean","description":"Whether the management hides some PayNow UI"}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"PublicPlatformDto":{"required":["accent_color","business_name","capabilities","country_code","created_at","description","id","logo_url","name","slug","type","updated_at","website_url"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"slug":{"type":"string"},"type":{"$ref":"#/components/schemas/PlatformType"},"country_code":{"type":"string"},"business_name":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"website_url":{"type":"string"},"logo_url":{"type":"string"},"accent_color":{"type":"string"},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/PlatformCapability"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"disabled_at":{"type":["null","string"],"format":"date-time"}},"additionalProperties":false},"PlatformType":{"enum":["invalid","marketplace","store_platform","other"],"type":"string"},"PlatformCapability":{"enum":["invalid","connected_users"],"type":"string"}}}}
```

## The PlatformType object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PlatformType":{"enum":["invalid","marketplace","store_platform","other"],"type":"string"}}}}
```

## The ProductDeliverableActionsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"ProductDeliverableActionsDto":{"required":["grant_giftcard"],"type":"object","properties":{"grant_giftcard":{"type":"boolean","description":"Value indicating whether to grant a giftcard with the product with the subtotal amount."}},"additionalProperties":false}}}}
```

## The ProductGameServerDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"ProductGameServerDto":{"required":["enabled","id","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the game server."},"enabled":{"type":"boolean","description":"Indicates whether this game server is enabled."}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The ProductRemoveAfterIntervalScale object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"ProductRemoveAfterIntervalScale":{"enum":["invalid","day","week","month"],"type":"string"}}}}
```

## The ProductSubscriptionIntervalScale object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"ProductSubscriptionIntervalScale":{"enum":["invalid","day","week","month","year"],"type":"string"}}}}
```

## The ProductTagDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"ProductTagDto":{"required":["id","name","slug"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"slug":{"type":"string","description":"The unique slug for the tag."},"name":{"type":"string","description":"The display name of the tag."}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The ProrationBehaviorDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"ProrationBehaviorDto":{"enum":["invalid","immediate","next_billing_period","none"],"type":"string","description":"Describes how proration is handled when a subscription change is applied."}}}}
```

## The PublicPlatformDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"PublicPlatformDto":{"required":["accent_color","business_name","capabilities","country_code","created_at","description","id","logo_url","name","slug","type","updated_at","website_url"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"slug":{"type":"string"},"type":{"$ref":"#/components/schemas/PlatformType"},"country_code":{"type":"string"},"business_name":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"website_url":{"type":"string"},"logo_url":{"type":"string"},"accent_color":{"type":"string"},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/PlatformCapability"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"disabled_at":{"type":["null","string"],"format":"date-time"}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"PlatformType":{"enum":["invalid","marketplace","store_platform","other"],"type":"string"},"PlatformCapability":{"enum":["invalid","connected_users"],"type":"string"}}}}
```

## The SaleDiscountType object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SaleDiscountType":{"enum":["percent","amount"],"type":"string"}}}}
```

## The SalesTaxJurisdictionDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SalesTaxJurisdictionDto":{"required":["name","taxes"],"type":"object","properties":{"name":{"type":"string","description":"The name of the tax jurisdiction."},"taxes":{"type":"array","items":{"$ref":"#/components/schemas/SalesTaxJurisdictionTaxDto"},"description":"List of taxes applied within this jurisdiction."},"not_taxed_reason":{"type":["null","string"],"description":"Explanation for why taxes are not applied, if applicable.\nThis property is null when taxes are applied."}},"additionalProperties":false,"description":"Object representing a sales tax jurisdiction and its associated taxes."},"SalesTaxJurisdictionTaxDto":{"required":["tax_amount","tax_name","tax_rate","taxable_amount"],"type":"object","properties":{"tax_name":{"type":"string","description":"The name of the tax."},"taxable_amount":{"type":"string","description":"The amount subject to taxation, formatted as a string."},"tax_amount":{"type":"string","description":"The calculated tax amount, formatted as a string."},"tax_rate":{"type":"string","description":"The rate at which the tax is applied, formatted as a string."}},"additionalProperties":false,"description":"Object representing a specific tax within a sales tax jurisdiction."}}}}
```

## The SalesTaxJurisdictionTaxDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SalesTaxJurisdictionTaxDto":{"required":["tax_amount","tax_name","tax_rate","taxable_amount"],"type":"object","properties":{"tax_name":{"type":"string","description":"The name of the tax."},"taxable_amount":{"type":"string","description":"The amount subject to taxation, formatted as a string."},"tax_amount":{"type":"string","description":"The calculated tax amount, formatted as a string."},"tax_rate":{"type":"string","description":"The rate at which the tax is applied, formatted as a string."}},"additionalProperties":false,"description":"Object representing a specific tax within a sales tax jurisdiction."}}}}
```

## The SteamId object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SteamId":{"type":"string","additionalProperties":false,"description":"A 64-bit Steam account identifier. Accepts string or numeric format.","format":"steam-id"}}}}
```

## The SteamProfileDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SteamProfileDto":{"required":["avatar_url","id","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/SteamId"},"name":{"type":"string","description":"The display name of the user on Steam."},"avatar_url":{"type":"string","description":"The URL to the user's Steam avatar image."}},"additionalProperties":false,"description":"Represents a Steam profile for a customer."},"SteamId":{"type":"string","additionalProperties":false,"description":"A 64-bit Steam account identifier. Accepts string or numeric format.","format":"steam-id"}}}}
```

## The SteamSkinsDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SteamSkinsDetailsDto":{"required":["items"],"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SteamSkinsInventoryItemDetailsDto"},"description":"The list of Steam inventory items used for payment"}},"additionalProperties":false,"description":"Steam Skins payment method details"},"SteamSkinsInventoryItemDetailsDto":{"required":["app_id","id","name","price"],"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the Steam item"},"app_id":{"type":"integer","description":"The Steam app ID","format":"int32"},"name":{"type":"string","description":"The name of the item"},"price":{"type":"integer","description":"The price of the item in the smallest currency unit","format":"int32"}},"additionalProperties":false}}}}
```

## The SteamSkinsInventoryItemDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SteamSkinsInventoryItemDetailsDto":{"required":["app_id","id","name","price"],"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the Steam item"},"app_id":{"type":"integer","description":"The Steam app ID","format":"int32"},"name":{"type":"string","description":"The name of the item"},"price":{"type":"integer","description":"The price of the item in the smallest currency unit","format":"int32"}},"additionalProperties":false}}}}
```

## The StoreDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreDto":{"required":["currency","description","game","id","live_mode","name","owner_id","platform","slug"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"owner_id":{"$ref":"#/components/schemas/FlakeId"},"slug":{"type":"string","description":"The URL-safe slug used to identify the store (e.g. \"my-rust-server\")."},"name":{"type":"string","description":"The display name of the store."},"platform":{"type":"string","description":"The platform this store is associated with (e.g. \"rust\", \"minecraft\")."},"game":{"type":"string","description":"Alias for PayNow.Services.HttpGateway.DataTransferObjects.V1.Stores.StoreDto.Platform. Returns the platform identifier as a game name.","readOnly":true},"currency":{"type":"string","description":"The ISO 4217 currency code used by this store for pricing (e.g. \"usd\", \"eur\")"},"description":{"type":"string","description":"A human-readable description of the store shown to customers and PayNow."},"website_url":{"type":["null","string"],"description":"The store's public website URL."},"contact_email":{"type":["null","string"],"description":"General contact email address for the store."},"support_email":{"type":["null","string"],"description":"Dedicated support email address for customer inquiries."},"support_url":{"type":["null","string"],"description":"URL to the store's support portal or help page."},"integration_type":{"type":["null","string"],"description":"The integration type used by the store."},"live_mode":{"type":"boolean","description":"When set to true, the store is processing real transactions in live mode."},"logo_url":{"type":["null","string"],"description":"URL of the store's full-size logo image."},"logo_square_url":{"type":["null","string"],"description":"URL of the store's square/icon logo image."},"minecraft_bedrock_username_prefix":{"type":["null","string"],"description":"Username prefix used to identify Minecraft Bedrock players (e.g. \".\")."},"created_at":{"type":["null","string"],"description":"The UTC timestamp when the store was created.","format":"date-time"},"updated_at":{"type":["null","string"],"description":"The UTC timestamp when the store was last updated.","format":"date-time"},"onboarding_completed_at":{"type":["null","string"],"description":"The UTC timestamp when the store completed onboarding.","format":"date-time"},"platform_store_type_association":{"$ref":"#/components/schemas/PlatformStoreTypeAssociationDetailsDto"}},"additionalProperties":false,"description":"Represents a PayNow store and its associated configuration."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"PlatformStoreTypeAssociationDetailsDto":{"required":["disable_billing_plans","display_disclaimers","full_external_management","platform_id","store_platform"],"type":"object","properties":{"platform_id":{"$ref":"#/components/schemas/FlakeId"},"associated_platform":{"$ref":"#/components/schemas/PublicPlatformDto"},"store_platform":{"type":"string","description":"The store platform identifier string (e.g. \"rust\", \"minecraft\")."},"paynow_platform_fee_percentage_override":{"type":["null","integer"],"description":"Overrides the default PayNow platform fee percentage for this association.\nExpressed in basis points (e.g. 250 = 2.50%).","format":"int64"},"connected_platform_fee_percentage":{"type":["null","integer"],"description":"The fee percentage charged by the connected platform.\nExpressed in basis points (e.g. 250 = 2.50%).","format":"int64"},"connected_platform_wallet_id":{"type":["null","integer"],"description":"The payout ID associated with the connected platform.","format":"int64"},"disable_billing_plans":{"type":"boolean","description":"When true, billing plans are disabled for this platform/store type combination."},"display_disclaimers":{"type":"boolean","description":"When true, legal or compliance disclaimers should be displayed to the end user."},"full_external_management":{"type":"boolean","description":"Whether the management hides some PayNow UI"}},"additionalProperties":false},"PublicPlatformDto":{"required":["accent_color","business_name","capabilities","country_code","created_at","description","id","logo_url","name","slug","type","updated_at","website_url"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"slug":{"type":"string"},"type":{"$ref":"#/components/schemas/PlatformType"},"country_code":{"type":"string"},"business_name":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"website_url":{"type":"string"},"logo_url":{"type":"string"},"accent_color":{"type":"string"},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/PlatformCapability"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"disabled_at":{"type":["null","string"],"format":"date-time"}},"additionalProperties":false},"PlatformType":{"enum":["invalid","marketplace","store_platform","other"],"type":"string"},"PlatformCapability":{"enum":["invalid","connected_users"],"type":"string"}}}}
```

## The StoreMemberDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreMemberDto":{"required":["id","user","user_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"user_id":{"$ref":"#/components/schemas/FlakeId"},"user":{"$ref":"#/components/schemas/StoreMemberUserDto"},"added_at":{"type":["null","string"],"description":"The UTC timestamp when the member was added to the store.","format":"date-time"},"added_by":{"$ref":"#/components/schemas/ActorDto"},"role_id":{"$ref":"#/components/schemas/FlakeId"}},"additionalProperties":false,"description":"Represents a member of a PayNow store."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"StoreMemberUserDto":{"required":["id","type"],"type":"object","properties":{"type":{"$ref":"#/components/schemas/PayNowActorType"},"id":{"$ref":"#/components/schemas/FlakeId"},"email":{"type":["null","string"],"description":"The email address associated with the user.\nOnly visible if you are the store owner."},"first_name":{"type":["null","string"],"description":"The first name of the actor.\nHidden if the user has a set nickname, and you are not the store owner."},"last_name":{"type":["null","string"],"description":"The last name of the actor.\nHidden if the user has a set nickname, and you are not the store owner."},"nickname":{"type":["null","string"],"description":"The nickname of the user."}},"additionalProperties":false,"description":"Represents identity and profile information for a store member."},"PayNowActorType":{"enum":["anonymous","user","api_key","customer","game_server","internal","admin","platform","global_customer"],"type":"string"},"ActorDto":{"required":["type"],"type":"object","properties":{"type":{"$ref":"#/components/schemas/PayNowActorType"},"id":{"$ref":"#/components/schemas/FlakeId"}},"additionalProperties":false}}}}
```

## The StoreMemberUserDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreMemberUserDto":{"required":["id","type"],"type":"object","properties":{"type":{"$ref":"#/components/schemas/PayNowActorType"},"id":{"$ref":"#/components/schemas/FlakeId"},"email":{"type":["null","string"],"description":"The email address associated with the user.\nOnly visible if you are the store owner."},"first_name":{"type":["null","string"],"description":"The first name of the actor.\nHidden if the user has a set nickname, and you are not the store owner."},"last_name":{"type":["null","string"],"description":"The last name of the actor.\nHidden if the user has a set nickname, and you are not the store owner."},"nickname":{"type":["null","string"],"description":"The nickname of the user."}},"additionalProperties":false,"description":"Represents identity and profile information for a store member."},"PayNowActorType":{"enum":["anonymous","user","api_key","customer","game_server","internal","admin","platform","global_customer"],"type":"string"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The StoreRequirementActionParty object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreRequirementActionParty":{"enum":["invalid","store","paynow","payment_processor","payout_provider","kyc_provider","external"],"type":"string","description":"Determines the party that needs to perform or requests a verification"}}}}
```

## The StoreRequirementCategory object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreRequirementCategory":{"enum":["invalid","business","kyc","compliance","risk","technical","financial","legal","other"],"type":"string","description":"Represents categories of requirements that must be fulfilled for store setup and compliance in the PayNow platform."}}}}
```

## The StoreRequirementStatus object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreRequirementStatus":{"enum":["invalid","pending","under_review","requires_revision","approved","expired","waived","rejected_final"],"type":"string"}}}}
```

## The StoreRestrictionFlagDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreRestrictionFlagDto":{"enum":["none","payments_disabled","payouts_disabled"],"type":"string"}}}}
```

## The StoreTrustDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreTrustDto":{"required":["created_at","events","pending_requirements","restrictions","status","store_id"],"type":"object","properties":{"store_id":{"$ref":"#/components/schemas/FlakeId"},"status":{"$ref":"#/components/schemas/StoreTrustStatusDto"},"status_reason":{"type":["null","string"]},"restrictions":{"$ref":"#/components/schemas/StoreRestrictionFlagDto"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":["null","string"],"format":"date-time"},"onboarding_steps":{"$ref":"#/components/schemas/StoreTrustOnboardingStepsDto"},"events":{"type":"array","items":{"$ref":"#/components/schemas/StoreTrustEventDto"}},"pending_requirements":{"type":"array","items":{"$ref":"#/components/schemas/TrustStoreRequirementDto"}}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"StoreTrustStatusDto":{"enum":["invalid","pending_review","requires_action","under_review","active","restricted","offboarded"],"type":"string"},"StoreRestrictionFlagDto":{"enum":["none","payments_disabled","payouts_disabled"],"type":"string"},"StoreTrustOnboardingStepsDto":{"required":["downloadable_files_added","gameserver_linked","kyc_completed","payout_onboarding_completed","products_created","store_id","store_owner_id","webhooks_active"],"type":"object","properties":{"store_id":{"$ref":"#/components/schemas/FlakeId"},"store_owner_id":{"$ref":"#/components/schemas/FlakeId"},"payout_onboarding_completed":{"type":"boolean"},"kyc_completed":{"type":"boolean"},"products_created":{"type":"boolean"},"gameserver_linked":{"type":"boolean"},"webhooks_active":{"type":"boolean"},"downloadable_files_added":{"type":"boolean"}},"additionalProperties":false},"StoreTrustEventDto":{"required":["actor","created_at","id","store_id","type"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"type":{"$ref":"#/components/schemas/StoreTrustEventTypeDto"},"description":{"type":["null","string"]},"store_requirement_id":{"$ref":"#/components/schemas/FlakeId"},"store_review_id":{"$ref":"#/components/schemas/FlakeId"},"actor":{"$ref":"#/components/schemas/ActorDto"},"created_at":{"type":"string","format":"date-time"}},"additionalProperties":false},"StoreTrustEventTypeDto":{"enum":["invalid","onboarded","escalated_to_review","action_required","restricted","offboarded","reactivated","requirement_added","requirement_submitted","requirement_verified","requirement_rejected","requirement_deadline_missed","requirement_waived","requirement_requires_revision","restriction_added","restriction_lifted","review_scheduled","review_completed"],"type":"string"},"ActorDto":{"required":["type"],"type":"object","properties":{"type":{"$ref":"#/components/schemas/PayNowActorType"},"id":{"$ref":"#/components/schemas/FlakeId"}},"additionalProperties":false},"PayNowActorType":{"enum":["anonymous","user","api_key","customer","game_server","internal","admin","platform","global_customer"],"type":"string"},"TrustStoreRequirementDto":{"required":["category","code","created_at","id","metadata","name","requested_by","restricts_capabilities","status","store_id","submissions"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"template_id":{"type":["null","string"],"description":"Template ID if this requirement was created from a template. Null for ad-hoc requirements."},"originating_flag_id":{"$ref":"#/components/schemas/FlakeId"},"category":{"$ref":"#/components/schemas/StoreRequirementCategory"},"code":{"type":"string","description":"Unique code identifying the type of requirement. Copied from template or custom for ad-hoc requirements."},"name":{"type":"string","description":"Human-readable name of the requirement. Copied from template or custom for ad-hoc requirements."},"description":{"type":["null","string"],"description":"Detailed description explaining what the store needs to provide. Copied from template or custom for ad-hoc requirements."},"schema":{"type":"null","description":"JSON schema defining the form fields, validation rules, and document requirements"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional metadata for this requirement (stored as JSON)"},"status":{"$ref":"#/components/schemas/StoreRequirementStatus"},"requested_by":{"$ref":"#/components/schemas/StoreRequirementActionParty"},"requested_by_detail":{"type":["null","string"],"description":"Specifies the specific requester entity (e.g., \"stripe\", \"trolley\", or admin user ID)\nFree-form string for internal records"},"created_at":{"type":"string","description":"When this requirement was created","format":"date-time"},"updated_at":{"type":["null","string"],"description":"When this requirement was last updated","format":"date-time"},"deadline_at":{"type":["null","string"],"description":"When this requirement must be completed by (optional)","format":"date-time"},"submitted_at":{"type":["null","string"],"description":"When the store submitted their response to this requirement","format":"date-time"},"verified_at":{"type":["null","string"],"description":"When this requirement was verified and approved","format":"date-time"},"rejected_at":{"type":["null","string"],"description":"When this requirement was rejected for not meeting standards","format":"date-time"},"restricts_capabilities":{"type":"array","items":{"type":"string"},"description":"Store capabilities that are restricted until this requirement is satisfied"},"submissions":{"type":"array","items":{"$ref":"#/components/schemas/TrustStoreRequirementSubmissionDto"},"description":"Associated submissions for this requriement."}},"additionalProperties":false},"StoreRequirementCategory":{"enum":["invalid","business","kyc","compliance","risk","technical","financial","legal","other"],"type":"string","description":"Represents categories of requirements that must be fulfilled for store setup and compliance in the PayNow platform."},"StoreRequirementStatus":{"enum":["invalid","pending","under_review","requires_revision","approved","expired","waived","rejected_final"],"type":"string"},"StoreRequirementActionParty":{"enum":["invalid","store","paynow","payment_processor","payout_provider","kyc_provider","external"],"type":"string","description":"Determines the party that needs to perform or requests a verification"},"TrustStoreRequirementSubmissionDto":{"required":["id","store_id","store_requirement_field_id","store_requirement_id","submitted_at","submitted_by"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"store_requirement_id":{"$ref":"#/components/schemas/FlakeId"},"store_requirement_field_id":{"type":"string","description":"The identifier of the specific field within the store requirement."},"text_value":{"type":["null","string"],"description":"The text value submitted for this field, if applicable."},"file_id":{"type":["null","string"],"description":"The identifier of the uploaded file, if a file was submitted."},"file_name":{"type":["null","string"],"description":"The original name of the uploaded file."},"file_content_type":{"type":["null","string"],"description":"The MIME content type of the uploaded file."},"file_size_bytes":{"type":["null","integer"],"description":"The size of the uploaded file in bytes.","format":"int64"},"submitted_at":{"type":"string","description":"The timestamp when this submission was made.","format":"date-time"},"submitted_by":{"$ref":"#/components/schemas/ActorDto"},"submitted_by_ip_address":{"type":["null","string"],"description":"The IP address from which the submission was made."},"submitted_by_user_agent":{"type":["null","string"],"description":"The user agent string of the client that made the submission."}},"additionalProperties":false}}}}
```

## The StoreTrustEventDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreTrustEventDto":{"required":["actor","created_at","id","store_id","type"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"type":{"$ref":"#/components/schemas/StoreTrustEventTypeDto"},"description":{"type":["null","string"]},"store_requirement_id":{"$ref":"#/components/schemas/FlakeId"},"store_review_id":{"$ref":"#/components/schemas/FlakeId"},"actor":{"$ref":"#/components/schemas/ActorDto"},"created_at":{"type":"string","format":"date-time"}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"StoreTrustEventTypeDto":{"enum":["invalid","onboarded","escalated_to_review","action_required","restricted","offboarded","reactivated","requirement_added","requirement_submitted","requirement_verified","requirement_rejected","requirement_deadline_missed","requirement_waived","requirement_requires_revision","restriction_added","restriction_lifted","review_scheduled","review_completed"],"type":"string"},"ActorDto":{"required":["type"],"type":"object","properties":{"type":{"$ref":"#/components/schemas/PayNowActorType"},"id":{"$ref":"#/components/schemas/FlakeId"}},"additionalProperties":false},"PayNowActorType":{"enum":["anonymous","user","api_key","customer","game_server","internal","admin","platform","global_customer"],"type":"string"}}}}
```

## The StoreTrustEventTypeDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreTrustEventTypeDto":{"enum":["invalid","onboarded","escalated_to_review","action_required","restricted","offboarded","reactivated","requirement_added","requirement_submitted","requirement_verified","requirement_rejected","requirement_deadline_missed","requirement_waived","requirement_requires_revision","restriction_added","restriction_lifted","review_scheduled","review_completed"],"type":"string"}}}}
```

## The StoreTrustOnboardingStepsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreTrustOnboardingStepsDto":{"required":["downloadable_files_added","gameserver_linked","kyc_completed","payout_onboarding_completed","products_created","store_id","store_owner_id","webhooks_active"],"type":"object","properties":{"store_id":{"$ref":"#/components/schemas/FlakeId"},"store_owner_id":{"$ref":"#/components/schemas/FlakeId"},"payout_onboarding_completed":{"type":"boolean"},"kyc_completed":{"type":"boolean"},"products_created":{"type":"boolean"},"gameserver_linked":{"type":"boolean"},"webhooks_active":{"type":"boolean"},"downloadable_files_added":{"type":"boolean"}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The StoreTrustStatusDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StoreTrustStatusDto":{"enum":["invalid","pending_review","requires_action","under_review","active","restricted","offboarded"],"type":"string"}}}}
```

## The StorefrontCustomVariableDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontCustomVariableDto":{"required":["description","identifier","name","options","type"],"type":"object","properties":{"identifier":{"type":"string","description":"Unique identifier string used to reference this custom variable programmatically.\nMust contain only letters, numbers, underscores, and hyphens."},"name":{"type":"string","description":"Display name for the custom variable shown to customers."},"description":{"type":"string","description":"Description explaining what this custom variable is for. Can be shown to customers."},"type":{"$ref":"#/components/schemas/CustomVariableType"},"value_regex":{"type":["null","string"],"description":"Optional regex pattern to validate text/number input values.\nOnly applies to text and number types.\nUses RE2 syntax - does not support negative lookarounds, backreferences, or other advanced regex features."},"options":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontCustomVariableOptionDto"},"description":"Available options for dropdown type custom variables.\nEmpty for text and number types."}},"additionalProperties":false},"CustomVariableType":{"enum":["dropdown","text","number"],"type":"string","description":"Defines the type of input method for a custom variable."},"StorefrontCustomVariableOptionDto":{"required":["is_default","name","price","sort_order","value"],"type":"object","properties":{"name":{"type":"string","description":"Display name shown to customers for this option."},"value":{"type":"string","description":"Internal value used for product command variable replacement, without brackets."},"price":{"type":"integer","description":"Additional price in the lowest denominator (e.g. cents) when this option is selected.","format":"int64"},"is_default":{"type":"boolean","description":"Whether this option is selected by default when the custom variable is presented.\nOnly one option per custom variable should be marked as default."},"sort_order":{"type":"integer","description":"Sort order for displaying options to customers.\nLower numbers appear first.","format":"int32"}},"additionalProperties":false}}}}
```

## The StorefrontCustomVariableOptionDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontCustomVariableOptionDto":{"required":["is_default","name","price","sort_order","value"],"type":"object","properties":{"name":{"type":"string","description":"Display name shown to customers for this option."},"value":{"type":"string","description":"Internal value used for product command variable replacement, without brackets."},"price":{"type":"integer","description":"Additional price in the lowest denominator (e.g. cents) when this option is selected.","format":"int64"},"is_default":{"type":"boolean","description":"Whether this option is selected by default when the custom variable is presented.\nOnly one option per custom variable should be marked as default."},"sort_order":{"type":"integer","description":"Sort order for displaying options to customers.\nLower numbers appear first.","format":"int32"}},"additionalProperties":false}}}}
```

## The StorefrontDeliveryItemDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontDeliveryItemDto":{"required":["added_at","customer_id","expirable","gift","id","product","state","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"customer_id":{"$ref":"#/components/schemas/FlakeId"},"order_id":{"$ref":"#/components/schemas/FlakeId"},"order_line_id":{"$ref":"#/components/schemas/FlakeId"},"subscription_id":{"$ref":"#/components/schemas/FlakeId"},"execute_on_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"quantity_index":{"type":["null","integer"],"description":"The index of the item when multiple quantities were assigned","format":"int32"},"product":{"$ref":"#/components/schemas/DeliveryItemProductDto"},"state":{"$ref":"#/components/schemas/DeliveryItemStateDto"},"expirable":{"type":"boolean","description":"Indicates whether the delivery item can expire"},"gift":{"type":"boolean","description":"Indicates whether the item was given as a gift"},"added_at":{"type":"string","description":"The date and time when the item was added","format":"date-time"},"active_at":{"type":["null","string"],"description":"The date and time when the item became active","format":"date-time"},"expires_at":{"type":["null","string"],"description":"The date and time when the item expires naturally","format":"date-time"},"override_expires_at":{"type":["null","string"],"description":"The override expiry date for the delivery item","format":"date-time"},"removed_at":{"type":["null","string"],"description":"The date and time when the item was removed","format":"date-time"},"revoked_at":{"type":["null","string"],"description":"The date and time when the item was revoked","format":"date-time"},"revoke_reason":{"type":["null","string"],"description":"The reason for revoking the delivery item"}},"additionalProperties":false,"description":"Represents a delivery item assigned to a customer"},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"DeliveryItemProductDto":{"required":["id","name","slug","version_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the product"},"slug":{"type":"string","description":"The URL-friendly slug of the product"},"version_id":{"type":"string","description":"The version identifier of the product"}},"additionalProperties":false,"description":"Represents the product information for a delivery item"},"DeliveryItemStateDto":{"enum":["usable","active","used","revoked","renewed"],"type":"string"}}}}
```

## The StorefrontGameServerDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontGameServerDto":{"required":["enabled","id","name","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The display name of the game server."},"enabled":{"type":"boolean","description":"Indicates whether the game server is currently enabled."}},"additionalProperties":false,"description":"Represents a simplified view of a game server for storefront display purposes."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The StorefrontGiftCardDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontGiftCardDto":{"required":["balance","code","starting_balance"],"type":"object","properties":{"code":{"type":"string"},"balance":{"type":"integer","format":"int32"},"starting_balance":{"type":"integer","format":"int32"},"expires_at":{"type":["null","string"],"format":"date-time"}},"additionalProperties":false}}}}
```

## The StorefrontNavLinkDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontNavLinkDto":{"required":["children","name","node_id","order","tag_id","tag_query","tag_slug"],"type":"object","properties":{"node_id":{"type":"string","description":"The unique identifier for this navigation node in the navigation tree."},"parent_node_id":{"type":["null","string"],"description":"The identifier of the parent navigation node, if this is a child node."},"tag_id":{"$ref":"#/components/schemas/FlakeId"},"tag_slug":{"type":"string","description":"The URL-friendly slug for the tag associated with this navigation link."},"tag_query":{"type":"array","items":{"type":"string"},"description":"A list containing all parent tags and this node's tag, representing the complete path in the tag hierarchy."},"name":{"type":"string","description":"The display name of the associated tag shown to users in the UI."},"order":{"type":"integer","description":"The display order of this navigation link relative to its siblings.","format":"int32"},"children":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontNavLinkDto"},"description":"The collection of child navigation links that appear beneath this link in the hierarchy."}},"additionalProperties":false,"description":"Represents a navigation link in the storefront's hierarchical navigation structure."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The StorefrontProductDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontProductDto":{"required":["allow_one_time_purchase","allow_subscription","currency","custom_variables","description","gameservers","id","is_affiliate_links_disabled","is_coupons_disabled","is_gift_cards_disabled","is_gifting_disabled","name","price","remove_after_enabled","remove_after_time_scale","remove_after_time_value","single_game_server_only","slug","sort_order","store_id","subscription_interval_scale","subscription_interval_value","tags","trial","version_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"version_id":{"$ref":"#/components/schemas/FlakeId"},"image_url":{"type":["null","string"],"description":"The URL to the product image."},"slug":{"type":"string","description":"The unique slug for the product."},"name":{"type":"string","description":"The display name of the product."},"description":{"type":"string","description":"The detailed description of the product."},"enabled_at":{"type":["null","string"],"description":"The date and time when the product becomes enabled.","format":"date-time"},"enabled_until":{"type":["null","string"],"description":"The date and time until which the product remains enabled.","format":"date-time"},"label":{"type":["null","string"],"description":"The display label for the product."},"sort_order":{"type":"integer","description":"The sort order for displaying the product.","format":"int32"},"price":{"type":"integer","description":"The price of the product, in the lowest denominator (e.g. cents).","format":"int64"},"currency":{"type":"string","description":"The ISO three-letter lowercase currency code (e.g., usd, eur, gbp) the product is denominated in."},"single_game_server_only":{"type":"boolean","description":"Indicates whether the product is limited to a single game server."},"allow_one_time_purchase":{"type":"boolean","description":"Indicates whether one-time purchases are allowed."},"allow_subscription":{"type":"boolean","description":"Indicates whether subscription purchases are allowed."},"is_gifting_disabled":{"type":"boolean","description":"Indicates whether gifting is disabled for this product."},"is_gift_cards_disabled":{"type":"boolean","description":"Indicates whether gift cards are disabled entirely for the product."},"is_coupons_disabled":{"type":"boolean","description":"Indicates whether coupons are disabled entirely for the product."},"is_affiliate_links_disabled":{"type":"boolean","description":"Indicates whether affiliate links are disabled entirely for the product."},"subscription_interval_value":{"type":"integer","description":"The subscription interval value.","format":"int32"},"subscription_interval_scale":{"$ref":"#/components/schemas/ProductSubscriptionIntervalScale"},"remove_after_enabled":{"type":"boolean","description":"Indicates whether automatic removal is enabled."},"remove_after_time_value":{"type":"integer","description":"The time value for automatic removal.","format":"int32"},"remove_after_time_scale":{"$ref":"#/components/schemas/ProductRemoveAfterIntervalScale"},"pricing":{"$ref":"#/components/schemas/StorefrontProductPricingDetailsDto"},"stock":{"$ref":"#/components/schemas/StorefrontProductStockStatusDto"},"trial":{"$ref":"#/components/schemas/StorefrontProductTrialDto"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/ProductTagDto"},"description":"The tags associated with the product."},"gameservers":{"type":"array","items":{"$ref":"#/components/schemas/ProductGameServerDto"},"description":"The game servers associated with the product."},"custom_variables":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontCustomVariableDto"},"description":"Custom Variables associated with the product."},"deliverable_actions":{"$ref":"#/components/schemas/ProductDeliverableActionsDto"},"metadata":{"type":["null","object"],"additionalProperties":{"type":"string"},"description":"Additional metadata for the product."},"created_at":{"type":["null","string"],"description":"The date and time when the product was created.","format":"date-time"},"updated_at":{"type":["null","string"],"description":"The date and time when the product was last updated.","format":"date-time"},"tier_group_id":{"$ref":"#/components/schemas/FlakeId"},"active_tier_group":{"$ref":"#/components/schemas/CustomerTierGroupDto"}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"ProductSubscriptionIntervalScale":{"enum":["invalid","day","week","month","year"],"type":"string"},"ProductRemoveAfterIntervalScale":{"enum":["invalid","day","week","month"],"type":"string"},"StorefrontProductPricingDetailsDto":{"required":["price_final","price_original","upsell_discount_amount"],"type":"object","properties":{"active_sale":{"$ref":"#/components/schemas/StorefrontSaleDto"},"sale_value":{"type":["null","integer"],"description":"The amount of the sale discount in the lowest denominator (e.g. cents).","format":"int64"},"upsell_offer_id":{"$ref":"#/components/schemas/FlakeId"},"upsell_discount_amount":{"type":"integer","format":"int64"},"vat_rate":{"$ref":"#/components/schemas/VatRateDto"},"regional_pricing":{"$ref":"#/components/schemas/StorefrontProductPricingDetailsRegionalPricingDto"},"price_original":{"type":"integer","description":"The original price of the product before any discounts, in the lowest denominator (e.g. cents).","format":"int64"},"price_final":{"type":"integer","description":"The final price of the product after all discounts, in the lowest denominator (e.g. cents).","format":"int64"}},"additionalProperties":false,"description":"The pricing details for the product in the storefront."},"StorefrontSaleDto":{"required":["begins_at","discount_amount","discount_type","id","minimum_order_value","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the sale."},"discount_type":{"$ref":"#/components/schemas/SaleDiscountType"},"discount_amount":{"type":"integer","description":"The amount of the discount, either as a percentage in permille or as an absolute value in cents.","format":"int64"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to apply the discount, in the lowest denominator (e.g. cents).","format":"int64"},"begins_at":{"type":"string","description":"The date and time when the sale begins.","format":"date-time"},"ends_at":{"type":["null","string"],"description":"The date and time when the sale ends, if applicable.","format":"date-time"}},"additionalProperties":false},"SaleDiscountType":{"enum":["percent","amount"],"type":"string"},"VatRateDto":{"required":["country_code","country_name","currency","eservice_rate","eu_member_state","percentage","vat_abbreviation","vat_local_name"],"type":"object","properties":{"country_code":{"type":"string","description":"The ISO country code."},"country_name":{"type":"string","description":"The full name of the country."},"currency":{"type":"string","description":"The local currency used in the country."},"vat_abbreviation":{"type":"string","description":"The abbreviation of the VAT term in the local language."},"vat_local_name":{"type":"string","description":"The full name of the VAT term in the local language."},"eu_member_state":{"type":"boolean","description":"Indicates whether the country is a member of the European Union."},"eservice_rate":{"type":"number","description":"The VAT rate applicable for electronic services, as a percentage.","format":"double"},"percentage":{"type":"number","description":"The VAT rate (synonym for EServiceRate).","format":"double","readOnly":true}},"additionalProperties":false,"description":"The VAT rate estimation for the passed in customer country / IP.\nInclude the VAT percentage + abbreviation in your product view to inform your customers about the tax."},"StorefrontProductPricingDetailsRegionalPricingDto":{"required":["base_price","currency","region_id","tax_inclusive"],"type":"object","properties":{"region_id":{"type":"string","description":"The identifier for the region."},"currency":{"type":"string","description":"The currency code used in the region."},"tax_inclusive":{"type":"boolean","description":"Indicates whether the base price includes tax."},"base_price":{"type":"integer","description":"The base price in the regional currency, in the lowest denominator (e.g. cents).","format":"int64"}},"additionalProperties":false,"description":"Regional pricing information for this product.\nOnly present if there is a regional pricing configured."},"StorefrontProductStockStatusDto":{"required":["available_to_purchase","customer_available"],"type":"object","properties":{"available_to_purchase":{"type":"boolean","description":"Indicates whether the product is currently available for purchase (there is available stock)."},"customer_available":{"type":"integer","description":"The number of items available for the customer to purchase (customer stock limit remaining).","format":"int32"}},"additionalProperties":false,"description":"The stock status information for the product in the storefront."},"StorefrontProductTrialDto":{"required":["eligible","enabled","period_scale","period_value"],"type":"object","properties":{"enabled":{"type":"boolean","description":"Indicates whether the trial period is enabled for this product."},"eligible":{"type":"boolean","description":"Indicates whether the customer is eligible for the trial period."},"period_value":{"type":"integer","description":"The duration value of the trial period.","format":"int32"},"period_scale":{"$ref":"#/components/schemas/ProductSubscriptionIntervalScale"}},"additionalProperties":false},"ProductTagDto":{"required":["id","name","slug"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"slug":{"type":"string","description":"The unique slug for the tag."},"name":{"type":"string","description":"The display name of the tag."}},"additionalProperties":false},"ProductGameServerDto":{"required":["enabled","id","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the game server."},"enabled":{"type":"boolean","description":"Indicates whether this game server is enabled."}},"additionalProperties":false},"StorefrontCustomVariableDto":{"required":["description","identifier","name","options","type"],"type":"object","properties":{"identifier":{"type":"string","description":"Unique identifier string used to reference this custom variable programmatically.\nMust contain only letters, numbers, underscores, and hyphens."},"name":{"type":"string","description":"Display name for the custom variable shown to customers."},"description":{"type":"string","description":"Description explaining what this custom variable is for. Can be shown to customers."},"type":{"$ref":"#/components/schemas/CustomVariableType"},"value_regex":{"type":["null","string"],"description":"Optional regex pattern to validate text/number input values.\nOnly applies to text and number types.\nUses RE2 syntax - does not support negative lookarounds, backreferences, or other advanced regex features."},"options":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontCustomVariableOptionDto"},"description":"Available options for dropdown type custom variables.\nEmpty for text and number types."}},"additionalProperties":false},"CustomVariableType":{"enum":["dropdown","text","number"],"type":"string","description":"Defines the type of input method for a custom variable."},"StorefrontCustomVariableOptionDto":{"required":["is_default","name","price","sort_order","value"],"type":"object","properties":{"name":{"type":"string","description":"Display name shown to customers for this option."},"value":{"type":"string","description":"Internal value used for product command variable replacement, without brackets."},"price":{"type":"integer","description":"Additional price in the lowest denominator (e.g. cents) when this option is selected.","format":"int64"},"is_default":{"type":"boolean","description":"Whether this option is selected by default when the custom variable is presented.\nOnly one option per custom variable should be marked as default."},"sort_order":{"type":"integer","description":"Sort order for displaying options to customers.\nLower numbers appear first.","format":"int32"}},"additionalProperties":false},"ProductDeliverableActionsDto":{"required":["grant_giftcard"],"type":"object","properties":{"grant_giftcard":{"type":"boolean","description":"Value indicating whether to grant a giftcard with the product with the subtotal amount."}},"additionalProperties":false},"CustomerTierGroupDto":{"required":["active_product_id","currency","next_billing_amount","next_billing_presentment_amount","next_renewal_at","presentment_currency","tier_group_id"],"type":"object","properties":{"tier_group_id":{"$ref":"#/components/schemas/FlakeId"},"active_product_id":{"$ref":"#/components/schemas/FlakeId"},"pending_change_product_id":{"$ref":"#/components/schemas/FlakeId"},"next_renewal_at":{"type":"string","description":"The date and time of the next subscription renewal for this tier group.","format":"date-time"},"next_billing_amount":{"type":"integer","description":"The next billing amount in the smallest currency unit (e.g., cents) in the settlement currency.","format":"int64"},"next_billing_presentment_amount":{"type":"integer","description":"The next billing amount in the smallest currency unit (e.g., cents) in the customer-facing presentment currency.","format":"int64"},"currency":{"type":"string","description":"The settlement currency code (e.g., \"usd\")."},"presentment_currency":{"type":"string","description":"The customer-facing presentment currency code (e.g., \"eur\")."}},"additionalProperties":false}}}}
```

## The StorefrontProductPricingDetailsDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontProductPricingDetailsDto":{"required":["price_final","price_original","upsell_discount_amount"],"type":"object","properties":{"active_sale":{"$ref":"#/components/schemas/StorefrontSaleDto"},"sale_value":{"type":["null","integer"],"description":"The amount of the sale discount in the lowest denominator (e.g. cents).","format":"int64"},"upsell_offer_id":{"$ref":"#/components/schemas/FlakeId"},"upsell_discount_amount":{"type":"integer","format":"int64"},"vat_rate":{"$ref":"#/components/schemas/VatRateDto"},"regional_pricing":{"$ref":"#/components/schemas/StorefrontProductPricingDetailsRegionalPricingDto"},"price_original":{"type":"integer","description":"The original price of the product before any discounts, in the lowest denominator (e.g. cents).","format":"int64"},"price_final":{"type":"integer","description":"The final price of the product after all discounts, in the lowest denominator (e.g. cents).","format":"int64"}},"additionalProperties":false,"description":"The pricing details for the product in the storefront."},"StorefrontSaleDto":{"required":["begins_at","discount_amount","discount_type","id","minimum_order_value","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the sale."},"discount_type":{"$ref":"#/components/schemas/SaleDiscountType"},"discount_amount":{"type":"integer","description":"The amount of the discount, either as a percentage in permille or as an absolute value in cents.","format":"int64"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to apply the discount, in the lowest denominator (e.g. cents).","format":"int64"},"begins_at":{"type":"string","description":"The date and time when the sale begins.","format":"date-time"},"ends_at":{"type":["null","string"],"description":"The date and time when the sale ends, if applicable.","format":"date-time"}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"SaleDiscountType":{"enum":["percent","amount"],"type":"string"},"VatRateDto":{"required":["country_code","country_name","currency","eservice_rate","eu_member_state","percentage","vat_abbreviation","vat_local_name"],"type":"object","properties":{"country_code":{"type":"string","description":"The ISO country code."},"country_name":{"type":"string","description":"The full name of the country."},"currency":{"type":"string","description":"The local currency used in the country."},"vat_abbreviation":{"type":"string","description":"The abbreviation of the VAT term in the local language."},"vat_local_name":{"type":"string","description":"The full name of the VAT term in the local language."},"eu_member_state":{"type":"boolean","description":"Indicates whether the country is a member of the European Union."},"eservice_rate":{"type":"number","description":"The VAT rate applicable for electronic services, as a percentage.","format":"double"},"percentage":{"type":"number","description":"The VAT rate (synonym for EServiceRate).","format":"double","readOnly":true}},"additionalProperties":false,"description":"The VAT rate estimation for the passed in customer country / IP.\nInclude the VAT percentage + abbreviation in your product view to inform your customers about the tax."},"StorefrontProductPricingDetailsRegionalPricingDto":{"required":["base_price","currency","region_id","tax_inclusive"],"type":"object","properties":{"region_id":{"type":"string","description":"The identifier for the region."},"currency":{"type":"string","description":"The currency code used in the region."},"tax_inclusive":{"type":"boolean","description":"Indicates whether the base price includes tax."},"base_price":{"type":"integer","description":"The base price in the regional currency, in the lowest denominator (e.g. cents).","format":"int64"}},"additionalProperties":false,"description":"Regional pricing information for this product.\nOnly present if there is a regional pricing configured."}}}}
```

## The StorefrontProductPricingDetailsRegionalPricingDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontProductPricingDetailsRegionalPricingDto":{"required":["base_price","currency","region_id","tax_inclusive"],"type":"object","properties":{"region_id":{"type":"string","description":"The identifier for the region."},"currency":{"type":"string","description":"The currency code used in the region."},"tax_inclusive":{"type":"boolean","description":"Indicates whether the base price includes tax."},"base_price":{"type":"integer","description":"The base price in the regional currency, in the lowest denominator (e.g. cents).","format":"int64"}},"additionalProperties":false,"description":"Regional pricing information for this product.\nOnly present if there is a regional pricing configured."}}}}
```

## The StorefrontProductStockStatusDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontProductStockStatusDto":{"required":["available_to_purchase","customer_available"],"type":"object","properties":{"available_to_purchase":{"type":"boolean","description":"Indicates whether the product is currently available for purchase (there is available stock)."},"customer_available":{"type":"integer","description":"The number of items available for the customer to purchase (customer stock limit remaining).","format":"int32"}},"additionalProperties":false,"description":"The stock status information for the product in the storefront."}}}}
```

## The StorefrontProductTrialDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontProductTrialDto":{"required":["eligible","enabled","period_scale","period_value"],"type":"object","properties":{"enabled":{"type":"boolean","description":"Indicates whether the trial period is enabled for this product."},"eligible":{"type":"boolean","description":"Indicates whether the customer is eligible for the trial period."},"period_value":{"type":"integer","description":"The duration value of the trial period.","format":"int32"},"period_scale":{"$ref":"#/components/schemas/ProductSubscriptionIntervalScale"}},"additionalProperties":false},"ProductSubscriptionIntervalScale":{"enum":["invalid","day","week","month","year"],"type":"string"}}}}
```

## The StorefrontSaleDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontSaleDto":{"required":["begins_at","discount_amount","discount_type","id","minimum_order_value","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"The name of the sale."},"discount_type":{"$ref":"#/components/schemas/SaleDiscountType"},"discount_amount":{"type":"integer","description":"The amount of the discount, either as a percentage in permille or as an absolute value in cents.","format":"int64"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to apply the discount, in the lowest denominator (e.g. cents).","format":"int64"},"begins_at":{"type":"string","description":"The date and time when the sale begins.","format":"date-time"},"ends_at":{"type":["null","string"],"description":"The date and time when the sale ends, if applicable.","format":"date-time"}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"SaleDiscountType":{"enum":["percent","amount"],"type":"string"}}}}
```

## The StorefrontStoreDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontStoreDto":{"required":["creator_currency","currency","game","id","live_mode","name","platform","slug"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"slug":{"type":"string","description":"The URL-friendly identifier for the store, used in store URLs."},"name":{"type":"string","description":"The display name of the store shown to customers."},"platform":{"type":"string","description":"The platform or the game of the store."},"game":{"type":"string","description":"The game of the store. Equivalent to the `platform` for backwards compatibility.","readOnly":true},"currency":{"type":"string","description":"The three-letter ISO currency code used for pricing in this store.\nIf using the Adaptive Currency feature, this will be updated to reflect customer's local currency\n(based on passed in IP / country headers)."},"creator_currency":{"type":"string","description":"The three-letter ISO currency code signifying the main currency of the store."},"description":{"type":["null","string"],"description":"A detailed description of the store. Only present for some platform types."},"website_url":{"type":["null","string"],"description":"The URL of the store's main website, if not using Hosted Webstores."},"support_email":{"type":["null","string"],"description":"The email address customers can use to contact store support."},"support_url":{"type":["null","string"],"description":"The URL of the store's support page."},"integration_type":{"type":["null","string"],"description":"The type of integration this store uses with external systems."},"live_mode":{"type":"boolean","description":"Indicates whether the store is in live mode (true) or test mode (false)."},"logo_url":{"type":["null","string"],"description":"The URL to the store's main logo image."},"logo_square_url":{"type":["null","string"],"description":"The URL to the store's square logo image."},"created_at":{"type":["null","string"],"description":"The date and time when the store was created.","format":"date-time"},"updated_at":{"type":["null","string"],"description":"The date and time when the store was last updated.","format":"date-time"}},"additionalProperties":false,"description":"Represents a store entity within the storefront system."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The StorefrontTagDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"StorefrontTagDto":{"required":["created_at","enabled","id","name","slug","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"slug":{"type":"string","description":"The URL-friendly identifier for the tag, used in category URLs."},"name":{"type":"string","description":"The display name of the tag shown to customers."},"description":{"type":["null","string"],"description":"A detailed description of the tag's purpose or the category it represents."},"image_url":{"type":["null","string"],"description":"The URL to the tag image."},"enabled":{"type":"boolean","description":"Indicates whether the tag is active and should be included in navigation and filtering."},"created_at":{"type":"string","description":"The date and time when the tag was created.","format":"date-time"},"updated_at":{"type":["null","string"],"description":"The date and time when the tag was last updated, if applicable.","format":"date-time"}},"additionalProperties":false,"description":"Represents a tag entity used for categorizing and filtering products within a store."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The SubscriptionBillingAmountDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionBillingAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code, in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Represents a billing amount breakdown for a subscription."}}}}
```

## The SubscriptionChangeAmountDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionChangeAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code, in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Pricing breakdown for a subscription change, in the smallest units of the given currency (e.g. cents)."}}}}
```

## The SubscriptionChangeDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionChangeDto":{"required":["created_at","id","lines","next_billing_amount","next_billing_presentment_amount","off_session","prorated_amount","proration_behavior","status","subscription_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"subscription_id":{"$ref":"#/components/schemas/FlakeId"},"prorated_order_id":{"$ref":"#/components/schemas/FlakeId"},"status":{"$ref":"#/components/schemas/SubscriptionChangeStatusDto"},"proration_behavior":{"$ref":"#/components/schemas/ProrationBehaviorDto"},"off_session":{"type":"boolean","description":"Whether this change was initiated without active customer interaction."},"prorated_amount":{"$ref":"#/components/schemas/SubscriptionChangeProratedAmountDto"},"created_at":{"type":"string","format":"date-time"},"applied_at":{"type":["null","string"],"format":"date-time"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionChangeLineDto"}},"next_billing_amount":{"$ref":"#/components/schemas/SubscriptionChangeAmountDto"},"next_billing_presentment_amount":{"$ref":"#/components/schemas/SubscriptionChangeAmountDto"}},"additionalProperties":false,"description":"A pending or applied change to a subscription."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"SubscriptionChangeStatusDto":{"enum":["invalid","pending_payment","pending_renewal","applied","canceled","pending_verification"],"type":"string","description":"Represents the status of a subscription change."},"ProrationBehaviorDto":{"enum":["invalid","immediate","next_billing_period","none"],"type":"string","description":"Describes how proration is handled when a subscription change is applied."},"SubscriptionChangeProratedAmountDto":{"required":["currency","presentment_currency","presentment_prorated_amount","prorated_amount"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 settlement currency code, in lowercase."},"prorated_amount":{"type":"integer","description":"Total prorated charge in smallest settlement currency units, including tax.","format":"int64"},"presentment_currency":{"type":"string","description":"ISO 4217 presentment currency code, in lowercase."},"presentment_prorated_amount":{"type":"integer","description":"Total prorated charge in smallest presentment currency units, including tax.","format":"int64"}},"additionalProperties":false,"description":"The total prorated charge for a subscription change, expressed in both settlement and presentment currencies."},"SubscriptionChangeLineDto":{"required":["amount","id","is_deleted","presentment_amount","price","product","prorated_amount","prorated_presentment_amount","remaining_minutes","tax_inclusive","total_minutes"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"subscription_line_id":{"$ref":"#/components/schemas/FlakeId"},"is_deleted":{"type":"boolean","description":"Whether this line is being removed by the change."},"tax_inclusive":{"type":"boolean","description":"Whether tax is included in the base price."},"price":{"type":"integer","description":"Base price in smallest settlement currency units.","format":"int64"},"product":{"$ref":"#/components/schemas/SubscriptionChangeLineProductDto"},"amount":{"$ref":"#/components/schemas/SubscriptionChangeLineAmountDto"},"presentment_amount":{"$ref":"#/components/schemas/SubscriptionChangeLineAmountDto"},"prorated_amount":{"type":"integer","description":"Prorated charge for this line in smallest settlement currency units.","format":"int64"},"prorated_presentment_amount":{"type":"integer","description":"Prorated charge for this line in smallest presentment currency units.","format":"int64"},"remaining_minutes":{"type":"integer","description":"Minutes remaining in the billing period at the time of change - used to calculate proration.","format":"int64"},"total_minutes":{"type":"integer","description":"Total minutes in the billing period - used to calculate proration.","format":"int64"}},"additionalProperties":false,"description":"A single line item within a subscription change."},"SubscriptionChangeLineProductDto":{"required":["custom_variables","id","name","version_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"version_id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"Display name of the product."},"image_url":{"type":["null","string"],"description":"URL of the product image, if set."},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"pricing_region_id":{"type":["null","string"],"description":"The pricing region used to determine the price, if applicable."},"custom_variables":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/CustomVariableLineItemDto"},"description":"Custom variables set on this line item, keyed by variable identifier."}},"additionalProperties":false,"description":"The product associated with a subscription change line."},"CustomVariableLineItemDto":{"required":["description","id","identifier","name","price","value"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"identifier":{"type":"string","description":"The identifier used to reference this custom variable (e.g., \"color\", \"size\")."},"name":{"type":"string","description":"The display name of the custom variable shown to users."},"description":{"type":"string","description":"A detailed description of what this custom variable represents."},"price":{"type":"integer","description":"The price associated with this custom variable in the smallest currency unit (e.g., cents).","format":"int64"},"value":{"type":"string","description":"The selected value for this custom variable."}},"additionalProperties":false},"SubscriptionChangeLineAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Pricing breakdown for a single subscription change line, in the smallest units of the given currency (e.g. cents)."},"SubscriptionChangeAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code, in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Pricing breakdown for a subscription change, in the smallest units of the given currency (e.g. cents)."}}}}
```

## The SubscriptionChangeLineAmountDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionChangeLineAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Pricing breakdown for a single subscription change line, in the smallest units of the given currency (e.g. cents)."}}}}
```

## The SubscriptionChangeLineDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionChangeLineDto":{"required":["amount","id","is_deleted","presentment_amount","price","product","prorated_amount","prorated_presentment_amount","remaining_minutes","tax_inclusive","total_minutes"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"subscription_line_id":{"$ref":"#/components/schemas/FlakeId"},"is_deleted":{"type":"boolean","description":"Whether this line is being removed by the change."},"tax_inclusive":{"type":"boolean","description":"Whether tax is included in the base price."},"price":{"type":"integer","description":"Base price in smallest settlement currency units.","format":"int64"},"product":{"$ref":"#/components/schemas/SubscriptionChangeLineProductDto"},"amount":{"$ref":"#/components/schemas/SubscriptionChangeLineAmountDto"},"presentment_amount":{"$ref":"#/components/schemas/SubscriptionChangeLineAmountDto"},"prorated_amount":{"type":"integer","description":"Prorated charge for this line in smallest settlement currency units.","format":"int64"},"prorated_presentment_amount":{"type":"integer","description":"Prorated charge for this line in smallest presentment currency units.","format":"int64"},"remaining_minutes":{"type":"integer","description":"Minutes remaining in the billing period at the time of change - used to calculate proration.","format":"int64"},"total_minutes":{"type":"integer","description":"Total minutes in the billing period - used to calculate proration.","format":"int64"}},"additionalProperties":false,"description":"A single line item within a subscription change."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"SubscriptionChangeLineProductDto":{"required":["custom_variables","id","name","version_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"version_id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"Display name of the product."},"image_url":{"type":["null","string"],"description":"URL of the product image, if set."},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"pricing_region_id":{"type":["null","string"],"description":"The pricing region used to determine the price, if applicable."},"custom_variables":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/CustomVariableLineItemDto"},"description":"Custom variables set on this line item, keyed by variable identifier."}},"additionalProperties":false,"description":"The product associated with a subscription change line."},"CustomVariableLineItemDto":{"required":["description","id","identifier","name","price","value"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"identifier":{"type":"string","description":"The identifier used to reference this custom variable (e.g., \"color\", \"size\")."},"name":{"type":"string","description":"The display name of the custom variable shown to users."},"description":{"type":"string","description":"A detailed description of what this custom variable represents."},"price":{"type":"integer","description":"The price associated with this custom variable in the smallest currency unit (e.g., cents).","format":"int64"},"value":{"type":"string","description":"The selected value for this custom variable."}},"additionalProperties":false},"SubscriptionChangeLineAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Pricing breakdown for a single subscription change line, in the smallest units of the given currency (e.g. cents)."}}}}
```

## The SubscriptionChangeLineProductDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionChangeLineProductDto":{"required":["custom_variables","id","name","version_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"version_id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"Display name of the product."},"image_url":{"type":["null","string"],"description":"URL of the product image, if set."},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"pricing_region_id":{"type":["null","string"],"description":"The pricing region used to determine the price, if applicable."},"custom_variables":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/CustomVariableLineItemDto"},"description":"Custom variables set on this line item, keyed by variable identifier."}},"additionalProperties":false,"description":"The product associated with a subscription change line."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"CustomVariableLineItemDto":{"required":["description","id","identifier","name","price","value"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"identifier":{"type":"string","description":"The identifier used to reference this custom variable (e.g., \"color\", \"size\")."},"name":{"type":"string","description":"The display name of the custom variable shown to users."},"description":{"type":"string","description":"A detailed description of what this custom variable represents."},"price":{"type":"integer","description":"The price associated with this custom variable in the smallest currency unit (e.g., cents).","format":"int64"},"value":{"type":"string","description":"The selected value for this custom variable."}},"additionalProperties":false}}}}
```

## The SubscriptionChangeProratedAmountDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionChangeProratedAmountDto":{"required":["currency","presentment_currency","presentment_prorated_amount","prorated_amount"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 settlement currency code, in lowercase."},"prorated_amount":{"type":"integer","description":"Total prorated charge in smallest settlement currency units, including tax.","format":"int64"},"presentment_currency":{"type":"string","description":"ISO 4217 presentment currency code, in lowercase."},"presentment_prorated_amount":{"type":"integer","description":"Total prorated charge in smallest presentment currency units, including tax.","format":"int64"}},"additionalProperties":false,"description":"The total prorated charge for a subscription change, expressed in both settlement and presentment currencies."}}}}
```

## The SubscriptionChangeStatusDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionChangeStatusDto":{"enum":["invalid","pending_payment","pending_renewal","applied","canceled","pending_verification"],"type":"string","description":"Represents the status of a subscription change."}}}}
```

## The SubscriptionDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionDto":{"required":["coupon_ids","created_at","currency","customer","discount_amount","discount_amount_str","gift","id","initial_discount_amount","initial_discount_amount_str","initial_giftcard_usage_amount","initial_giftcard_usage_amount_str","initial_subtotal_amount","initial_subtotal_amount_str","initial_tax_amount","initial_tax_amount_str","initial_total_amount","initial_total_amount_str","interval_scale","interval_value","lines","next_billing_amount","next_billing_presentment_amount","pretty_id","price","status","store_id","subtotal_amount","subtotal_amount_str","tax_amount","tax_amount_str","tax_inclusive","tax_jurisdictions","total_amount","total_amount_str"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"pretty_id":{"type":"string","description":"Human-readable identifier for the subscription."},"store_id":{"$ref":"#/components/schemas/FlakeId"},"customer":{"$ref":"#/components/schemas/CustomerDto"},"payment_method_id":{"$ref":"#/components/schemas/FlakeId"},"payment_method":{"$ref":"#/components/schemas/PaymentMethodDto"},"pending_change":{"$ref":"#/components/schemas/SubscriptionChangeDto"},"next_billing_amount":{"$ref":"#/components/schemas/SubscriptionBillingAmountDto"},"next_billing_presentment_amount":{"$ref":"#/components/schemas/SubscriptionBillingAmountDto"},"status":{"$ref":"#/components/schemas/SubscriptionStatus"},"coupon_id":{"$ref":"#/components/schemas/FlakeId"},"coupon_ids":{"type":"array","items":{"$ref":"#/components/schemas/FlakeId"},"description":"Identifiers of coupons applied to this subscription."},"coupon_repeating_ends_at":{"type":["null","string"],"description":"Date when a repeating coupon ends for this subscription.","format":"date-time","deprecated":true},"affiliate_id":{"$ref":"#/components/schemas/FlakeId"},"checkout_id":{"$ref":"#/components/schemas/FlakeId"},"checkout_line_id":{"$ref":"#/components/schemas/FlakeId"},"billing_name":{"type":["null","string"],"description":"Name used for billing purposes."},"billing_email":{"type":["null","string"],"description":"Email used for billing purposes."},"billing_country":{"type":["null","string"],"description":"Country code used for billing purposes."},"tax_jurisdictions":{"type":"array","items":{"$ref":"#/components/schemas/SalesTaxJurisdictionDto"},"description":"List of tax jurisdictions applicable to this subscription."},"customer_ip":{"type":["null","string"],"description":"IP address of the customer at the time of subscription."},"gift":{"type":"boolean","description":"Indicates whether this subscription is a gift.","readOnly":true,"deprecated":true},"gift_to_customer_id":{"$ref":"#/components/schemas/FlakeId"},"gift_to_customer":{"$ref":"#/components/schemas/CustomerDto"},"product_id":{"$ref":"#/components/schemas/FlakeId"},"product_version_id":{"$ref":"#/components/schemas/FlakeId"},"product_name":{"type":["null","string"],"description":"Name of the product associated with this subscription.","readOnly":true,"deprecated":true},"product_image_url":{"type":["null","string"],"description":"URL for the product image.","readOnly":true,"deprecated":true},"interval_value":{"type":"integer","description":"Numeric value of the billing interval.","format":"int32"},"interval_scale":{"$ref":"#/components/schemas/ProductSubscriptionIntervalScale"},"currency":{"type":"string","description":"Currency code used for billing this subscription."},"tax_inclusive":{"type":"boolean","description":"Indicates whether tax is included in the base price itself.","readOnly":true,"deprecated":true},"price":{"type":"integer","description":"Base price of the subscription in smallest currency units (e.g., cents).","format":"int64","readOnly":true,"deprecated":true},"price_str":{"type":["null","string"],"description":"Formatted string representation of the price.","readOnly":true,"deprecated":true},"discount_amount":{"type":"integer","description":"Amount of discount applied in smallest currency units.","format":"int64"},"discount_amount_str":{"type":"string","description":"Formatted string representation of the discount amount.","readOnly":true},"subtotal_amount":{"type":"integer","description":"Subtotal amount in smallest currency units.","format":"int64"},"subtotal_amount_str":{"type":"string","description":"Formatted string representation of the subtotal amount.","readOnly":true},"tax_amount":{"type":"integer","description":"Tax amount in smallest currency units.","format":"int64"},"tax_amount_str":{"type":"string","description":"Formatted string representation of the tax amount.","readOnly":true},"total_amount":{"type":"integer","description":"Total amount in smallest currency units.","format":"int64"},"total_amount_str":{"type":"string","description":"Formatted string representation of the total amount.","readOnly":true},"initial_discount_amount":{"type":"integer","description":"Initial discount amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_discount_amount_str":{"type":"string","description":"Formatted string representation of the initial discount amount.","readOnly":true},"initial_subtotal_amount":{"type":"integer","description":"Initial subtotal amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_subtotal_amount_str":{"type":"string","description":"Formatted string representation of the initial subtotal amount.","readOnly":true},"initial_giftcard_usage_amount":{"type":"integer","description":"Initial gift card usage amount in smallest currency units.","format":"int64"},"initial_giftcard_usage_amount_str":{"type":"string","description":"Formatted string representation of the initial gift card usage amount.","readOnly":true},"initial_tax_amount":{"type":"integer","description":"Initial tax amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_tax_amount_str":{"type":"string","description":"Formatted string representation of the initial tax amount.","readOnly":true},"initial_total_amount":{"type":"integer","description":"Initial total amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_total_amount_str":{"type":"string","description":"Formatted string representation of the initial total amount.","readOnly":true},"presentment_currency":{"type":["null","string"],"description":"Presentment currency code (currency shown to customer)."},"presentment_subtotal_amount":{"type":["null","integer"],"description":"Presentment subtotal amount in smallest currency units.","format":"int64"},"presentment_subtotal_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment subtotal amount.","readOnly":true},"presentment_discount_amount":{"type":["null","integer"],"description":"Presentment discount amount in smallest currency units.","format":"int64"},"presentment_discount_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment discount amount.","readOnly":true},"presentment_tax_amount":{"type":["null","integer"],"description":"Presentment tax amount in smallest currency units.","format":"int64"},"presentment_tax_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment tax amount.","readOnly":true},"presentment_total_amount":{"type":["null","integer"],"description":"Presentment total amount in smallest currency units.","format":"int64"},"presentment_total_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment total amount.","readOnly":true},"initial_presentment_discount_amount":{"type":["null","integer"],"description":"Initial presentment discount amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_discount_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment discount amount.","readOnly":true},"initial_presentment_subtotal_amount":{"type":["null","integer"],"description":"Initial presentment subtotal amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_subtotal_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment subtotal amount.","readOnly":true},"initial_presentment_giftcard_usage_amount":{"type":["null","integer"],"description":"Initial presentment gift card usage amount in smallest currency units.","format":"int64"},"initial_presentment_giftcard_usage_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment gift card usage amount.","readOnly":true},"initial_presentment_tax_amount":{"type":["null","integer"],"description":"Initial presentment tax amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_tax_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment tax amount.","readOnly":true},"initial_presentment_total_amount":{"type":["null","integer"],"description":"Initial presentment total amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_total_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment total amount.","readOnly":true},"fx_rate":{"type":["null","string"],"description":"The foreign exchange rate applied (if presentment currency differs from settlement currency)."},"pricing_region_id":{"type":["null","string"],"description":"Identifier for the pricing region associated with this subscription.","readOnly":true,"deprecated":true},"current_period_start":{"type":["null","string"],"description":"Start date of the current billing period.","format":"date-time"},"current_period_end":{"type":["null","string"],"description":"End date of the current billing period.","format":"date-time"},"billing_cycle_sequence":{"type":["null","integer"],"description":"Sequence number of the current billing cycle.","format":"int32"},"next_attempt_at":{"type":["null","string"],"description":"Date and time when the next payment attempt will occur.","format":"date-time"},"attempt_count":{"type":["null","integer"],"description":"Number of payment attempts made for the current billing cycle.","format":"int32"},"created_at":{"type":"string","description":"Date and time when the subscription was created.","format":"date-time"},"updated_at":{"type":["null","string"],"description":"Date and time when the subscription was last updated.","format":"date-time"},"active_at":{"type":["null","string"],"description":"Date and time when the subscription became active.","format":"date-time"},"canceled_at":{"type":["null","string"],"description":"Date and time when the subscription was canceled.","format":"date-time"},"cancel_reason":{"type":["null","string"],"description":"Reason provided for cancellation."},"lines":{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionLineDto"},"description":"Line items associated with this subscription."}},"additionalProperties":false,"description":"Data transfer object representing a store subscription."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"CustomerDto":{"required":["created_at","id","metadata","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"profile":{"$ref":"#/components/schemas/GenericProfileDto"},"steam_id":{"$ref":"#/components/schemas/SteamId"},"steam":{"$ref":"#/components/schemas/SteamProfileDto"},"minecraft_uuid":{"type":["null","string"],"description":"The customer's Minecraft UUID, if they have linked their Minecraft account.\nNot set for offline Minecraft stores. If the platform type is Minecraft - Geyser,\nand the profile is a bedrock account, this will be a UUID generated from the Xbox XUID."},"minecraft":{"$ref":"#/components/schemas/MinecraftProfileDto"},"xbox_xuid":{"type":["null","string"],"description":"The customer's Xbox XUID, if available."},"minecraft_platform":{"$ref":"#/components/schemas/CustomerMinecraftPlatform"},"name":{"type":["null","string"],"description":"The display name for the customer."},"created_at":{"type":"string","description":"The date and time when the customer was created in the system.","format":"date-time"},"updated_at":{"type":["null","string"],"description":"The date and time when the customer was last updated, if applicable.","format":"date-time"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional custom data associated with the customer."}},"additionalProperties":false,"description":"Represents a customer in the PayNow system with their associated profiles and metadata."},"GenericProfileDto":{"required":["id","name","platform"],"type":"object","properties":{"id":{"type":"string","description":"The platform-specific identifier for the profile."},"platform":{"type":"string","description":"The name of the platform this profile belongs to."},"name":{"type":"string","description":"The display name of the user on this platform."},"avatar_url":{"type":["null","string"],"description":"The URL to the user's avatar image on this platform."}},"additionalProperties":false,"description":"Represents a generic platform profile for a customer."},"SteamId":{"type":"string","additionalProperties":false,"description":"A 64-bit Steam account identifier. Accepts string or numeric format.","format":"steam-id"},"SteamProfileDto":{"required":["avatar_url","id","name"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/SteamId"},"name":{"type":"string","description":"The display name of the user on Steam."},"avatar_url":{"type":"string","description":"The URL to the user's Steam avatar image."}},"additionalProperties":false,"description":"Represents a Steam profile for a customer."},"MinecraftProfileDto":{"required":["avatar_url","id","name"],"type":"object","properties":{"id":{"type":"string","description":"The UUID of the Minecraft player.\nIf the platform is Minecraft Offline, this will be the name itself.\nIf the platform is Minecraft Geyser, and this is a Bedrock account, this ID will be an Xbox XUID."},"name":{"type":"string","description":"The username of the Minecraft player."},"avatar_url":{"type":"string","description":"The URL to the player's Minecraft skin rendered as an avatar."}},"additionalProperties":false,"description":"Represents a Minecraft profile for a customer."},"CustomerMinecraftPlatform":{"enum":["unknown","java","bedrock"],"type":"string"},"PaymentMethodDto":{"required":["created_at","customer_id","gateway","gateway_customer_id","gateway_entity_identifier","gateway_id","gateway_type","id","method_details","method_type"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"customer_id":{"$ref":"#/components/schemas/FlakeId"},"gateway":{"type":"string","description":"The payment gateway provider"},"gateway_id":{"type":"string","description":"The gateway's identifier for this payment method"},"gateway_customer_id":{"type":"string","description":"The gateway's customer identifier"},"gateway_type":{"type":"string","description":"The gateway-specific type identifier"},"method_type":{"type":"string","description":"The payment method type"},"method_details":{"$ref":"#/components/schemas/PaymentMethodDetailsDto"},"created_at":{"type":"string","description":"The date and time when this payment method was created","format":"date-time"},"gateway_entity_identifier":{"type":"string","description":"The gateway entity identifier"},"updated_at":{"type":["null","string"],"description":"The date and time when this payment method was last updated","format":"date-time"}},"additionalProperties":false,"description":"Represents a stored payment method"},"PaymentMethodDetailsDto":{"type":"object","properties":{"card":{"$ref":"#/components/schemas/CardDetailsDto"},"cashapp":{"$ref":"#/components/schemas/CashAppDetailsDto"},"paypal":{"$ref":"#/components/schemas/PayPalDetailsDto"},"link":{"$ref":"#/components/schemas/LinkDetailsDto"},"crypto":{"$ref":"#/components/schemas/CryptoDetailsDto"},"steamskins":{"$ref":"#/components/schemas/SteamSkinsDetailsDto"},"ideal":{"$ref":"#/components/schemas/IdealDetailsDto"},"p24":{"$ref":"#/components/schemas/P24DetailsDto"},"bancontact":{"$ref":"#/components/schemas/BancontactDetailsDto"},"klarna":{"$ref":"#/components/schemas/KlarnaDetailsDto"},"alipay":{"$ref":"#/components/schemas/AlipayDetailsDto"},"pay_by_bank":{"$ref":"#/components/schemas/PayByBankDetailsDto"},"pix":{"$ref":"#/components/schemas/PixDetailsDto"},"paysafecard":{"$ref":"#/components/schemas/PaysafeCardDetailsDto"}},"additionalProperties":false,"description":"Contains detailed information about a payment method.\nDISCLAIMER: These fields are not guaranteed to be backwards compatible and may change or be removed without notice."},"CardDetailsDto":{"required":["brand","country","exp_month","exp_year","fingerprint","funding","last4"],"type":"object","properties":{"brand":{"type":"string","description":"The card brand"},"country":{"type":"string","description":"The country code where the card was issued"},"exp_month":{"type":"integer","description":"The card expiration month","format":"int32"},"exp_year":{"type":"integer","description":"The card expiration year","format":"int32"},"fingerprint":{"type":"string","description":"A unique fingerprint for this card"},"funding":{"type":"string","description":"The card funding type"},"last4":{"type":"string","description":"The last 4 digits of the card number"},"bin":{"type":["null","string"],"description":"The Bank Identification Number (first 6/8 digits of card).\nOnly available internally."},"issuer":{"type":["null","string"],"description":"The card issuer/bank name.\nOnly available internally."},"description":{"type":["null","string"],"description":"The card description.\nOnly available internally."},"wallet":{"$ref":"#/components/schemas/CardWalletDto"}},"additionalProperties":false,"description":"Card payment method details"},"CardWalletDto":{"required":["type"],"type":"object","properties":{"type":{"type":"string","description":"The type of digital wallet"}},"additionalProperties":false,"description":"Digital wallet details for a card"},"CashAppDetailsDto":{"required":["buyer_id","cashtag"],"type":"object","properties":{"buyer_id":{"type":"string","description":"The Cash App buyer identifier"},"cashtag":{"type":"string","description":"The Cash App cashtag"}},"additionalProperties":false,"description":"Cash App payment method details"},"PayPalDetailsDto":{"required":["country","payer_email","payer_id","payer_name","vault"],"type":"object","properties":{"payer_id":{"type":"string","description":"The PayPal payer identifier"},"payer_email":{"type":"string","description":"The PayPal account email"},"payer_name":{"type":"string","description":"The PayPal account holder name"},"country":{"type":"string","description":"The country code of the PayPal account"},"vault":{"type":"boolean","description":"Indicates if this PayPal account is vaulted"},"pending_vault_approval":{"type":["null","boolean"],"description":"Indicates if vault approval is pending"},"standalone_setup":{"type":["null","boolean"],"description":"Indicates if this is a standalone setup"}},"additionalProperties":false,"description":"PayPal payment method details"},"LinkDetailsDto":{"required":["email"],"type":"object","properties":{"email":{"type":"string","description":"The email associated with the Link account"}},"additionalProperties":false,"description":"Link payment method details"},"CryptoDetailsDto":{"required":["confirmations","crypto_amount","crypto_currency","total_paid"],"type":"object","properties":{"crypto_currency":{"type":"string","description":"The cryptocurrency used"},"crypto_amount":{"type":"string","description":"The amount in cryptocurrency"},"total_paid":{"type":"string","description":"The total amount paid in cryptocurrency"},"confirmations":{"type":"integer","description":"The number of blockchain confirmations","format":"int32"}},"additionalProperties":false,"description":"Cryptocurrency payment method details"},"SteamSkinsDetailsDto":{"required":["items"],"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SteamSkinsInventoryItemDetailsDto"},"description":"The list of Steam inventory items used for payment"}},"additionalProperties":false,"description":"Steam Skins payment method details"},"SteamSkinsInventoryItemDetailsDto":{"required":["app_id","id","name","price"],"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the Steam item"},"app_id":{"type":"integer","description":"The Steam app ID","format":"int32"},"name":{"type":"string","description":"The name of the item"},"price":{"type":"integer","description":"The price of the item in the smallest currency unit","format":"int32"}},"additionalProperties":false},"IdealDetailsDto":{"required":["bank","bic"],"type":"object","properties":{"bank":{"type":"string","description":"The bank identifier"},"bic":{"type":"string","description":"The Bank Identifier Code"},"iban_last4":{"type":["null","string"],"description":"The last 4 digits of the IBAN"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"iDEAL payment method details"},"P24DetailsDto":{"required":["bank"],"type":"object","properties":{"bank":{"type":"string","description":"The bank identifier"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Przelewy24 payment method details"},"BancontactDetailsDto":{"type":"object","properties":{"bank":{"type":["null","string"],"description":"The bank identifier"},"bank_name":{"type":["null","string"],"description":"The bank name"},"bic":{"type":["null","string"],"description":"The Bank Identifier Code"},"iban_last4":{"type":["null","string"],"description":"The last 4 digits of the IBAN"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Bancontact payment method details"},"KlarnaDetailsDto":{"type":"object","properties":{"country":{"type":["null","string"],"description":"The country code"},"method_category":{"type":["null","string"],"description":"The Klarna payment method category"}},"additionalProperties":false,"description":"Klarna payment method details"},"AlipayDetailsDto":{"type":"object","properties":{"buyer_id":{"type":["null","string"],"description":"The Alipay buyer identifier"},"fingerprint":{"type":["null","string"],"description":"A unique fingerprint for this Alipay account"}},"additionalProperties":false,"description":"Alipay payment method details"},"PayByBankDetailsDto":{"type":"object","properties":{"bank_name":{"type":["null","string"],"description":"The bank name"},"bic":{"type":["null","string"],"description":"The Bank Identifier Code"},"country":{"type":["null","string"],"description":"The country code"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Pay by Bank payment method details"},"PixDetailsDto":{"type":"object","properties":{"bank_name":{"type":["null","string"],"description":"The bank name"},"bank_account_number":{"type":["null","string"],"description":"The bank account number"},"payer_name":{"type":["null","string"],"description":"The payer name"}},"additionalProperties":false,"description":"Pix payment method details"},"PaysafeCardDetailsDto":{"type":"object","properties":{"first_name":{"type":["null","string"]},"last_name":{"type":["null","string"]},"psc_id":{"type":["null","string"]},"association_id":{"type":["null","string"]}},"additionalProperties":false,"description":"Paysafecard payment method details"},"SubscriptionChangeDto":{"required":["created_at","id","lines","next_billing_amount","next_billing_presentment_amount","off_session","prorated_amount","proration_behavior","status","subscription_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"subscription_id":{"$ref":"#/components/schemas/FlakeId"},"prorated_order_id":{"$ref":"#/components/schemas/FlakeId"},"status":{"$ref":"#/components/schemas/SubscriptionChangeStatusDto"},"proration_behavior":{"$ref":"#/components/schemas/ProrationBehaviorDto"},"off_session":{"type":"boolean","description":"Whether this change was initiated without active customer interaction."},"prorated_amount":{"$ref":"#/components/schemas/SubscriptionChangeProratedAmountDto"},"created_at":{"type":"string","format":"date-time"},"applied_at":{"type":["null","string"],"format":"date-time"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionChangeLineDto"}},"next_billing_amount":{"$ref":"#/components/schemas/SubscriptionChangeAmountDto"},"next_billing_presentment_amount":{"$ref":"#/components/schemas/SubscriptionChangeAmountDto"}},"additionalProperties":false,"description":"A pending or applied change to a subscription."},"SubscriptionChangeStatusDto":{"enum":["invalid","pending_payment","pending_renewal","applied","canceled","pending_verification"],"type":"string","description":"Represents the status of a subscription change."},"ProrationBehaviorDto":{"enum":["invalid","immediate","next_billing_period","none"],"type":"string","description":"Describes how proration is handled when a subscription change is applied."},"SubscriptionChangeProratedAmountDto":{"required":["currency","presentment_currency","presentment_prorated_amount","prorated_amount"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 settlement currency code, in lowercase."},"prorated_amount":{"type":"integer","description":"Total prorated charge in smallest settlement currency units, including tax.","format":"int64"},"presentment_currency":{"type":"string","description":"ISO 4217 presentment currency code, in lowercase."},"presentment_prorated_amount":{"type":"integer","description":"Total prorated charge in smallest presentment currency units, including tax.","format":"int64"}},"additionalProperties":false,"description":"The total prorated charge for a subscription change, expressed in both settlement and presentment currencies."},"SubscriptionChangeLineDto":{"required":["amount","id","is_deleted","presentment_amount","price","product","prorated_amount","prorated_presentment_amount","remaining_minutes","tax_inclusive","total_minutes"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"subscription_line_id":{"$ref":"#/components/schemas/FlakeId"},"is_deleted":{"type":"boolean","description":"Whether this line is being removed by the change."},"tax_inclusive":{"type":"boolean","description":"Whether tax is included in the base price."},"price":{"type":"integer","description":"Base price in smallest settlement currency units.","format":"int64"},"product":{"$ref":"#/components/schemas/SubscriptionChangeLineProductDto"},"amount":{"$ref":"#/components/schemas/SubscriptionChangeLineAmountDto"},"presentment_amount":{"$ref":"#/components/schemas/SubscriptionChangeLineAmountDto"},"prorated_amount":{"type":"integer","description":"Prorated charge for this line in smallest settlement currency units.","format":"int64"},"prorated_presentment_amount":{"type":"integer","description":"Prorated charge for this line in smallest presentment currency units.","format":"int64"},"remaining_minutes":{"type":"integer","description":"Minutes remaining in the billing period at the time of change - used to calculate proration.","format":"int64"},"total_minutes":{"type":"integer","description":"Total minutes in the billing period - used to calculate proration.","format":"int64"}},"additionalProperties":false,"description":"A single line item within a subscription change."},"SubscriptionChangeLineProductDto":{"required":["custom_variables","id","name","version_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"version_id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"Display name of the product."},"image_url":{"type":["null","string"],"description":"URL of the product image, if set."},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"pricing_region_id":{"type":["null","string"],"description":"The pricing region used to determine the price, if applicable."},"custom_variables":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/CustomVariableLineItemDto"},"description":"Custom variables set on this line item, keyed by variable identifier."}},"additionalProperties":false,"description":"The product associated with a subscription change line."},"CustomVariableLineItemDto":{"required":["description","id","identifier","name","price","value"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"identifier":{"type":"string","description":"The identifier used to reference this custom variable (e.g., \"color\", \"size\")."},"name":{"type":"string","description":"The display name of the custom variable shown to users."},"description":{"type":"string","description":"A detailed description of what this custom variable represents."},"price":{"type":"integer","description":"The price associated with this custom variable in the smallest currency unit (e.g., cents).","format":"int64"},"value":{"type":"string","description":"The selected value for this custom variable."}},"additionalProperties":false},"SubscriptionChangeLineAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Pricing breakdown for a single subscription change line, in the smallest units of the given currency (e.g. cents)."},"SubscriptionChangeAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code, in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Pricing breakdown for a subscription change, in the smallest units of the given currency (e.g. cents)."},"SubscriptionBillingAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code, in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Represents a billing amount breakdown for a subscription."},"SubscriptionStatus":{"enum":["invalid","created","active","canceled"],"type":"string","description":"Represents the current state of a subscription."},"SalesTaxJurisdictionDto":{"required":["name","taxes"],"type":"object","properties":{"name":{"type":"string","description":"The name of the tax jurisdiction."},"taxes":{"type":"array","items":{"$ref":"#/components/schemas/SalesTaxJurisdictionTaxDto"},"description":"List of taxes applied within this jurisdiction."},"not_taxed_reason":{"type":["null","string"],"description":"Explanation for why taxes are not applied, if applicable.\nThis property is null when taxes are applied."}},"additionalProperties":false,"description":"Object representing a sales tax jurisdiction and its associated taxes."},"SalesTaxJurisdictionTaxDto":{"required":["tax_amount","tax_name","tax_rate","taxable_amount"],"type":"object","properties":{"tax_name":{"type":"string","description":"The name of the tax."},"taxable_amount":{"type":"string","description":"The amount subject to taxation, formatted as a string."},"tax_amount":{"type":"string","description":"The calculated tax amount, formatted as a string."},"tax_rate":{"type":"string","description":"The rate at which the tax is applied, formatted as a string."}},"additionalProperties":false,"description":"Object representing a specific tax within a sales tax jurisdiction."},"ProductSubscriptionIntervalScale":{"enum":["invalid","day","week","month","year"],"type":"string"},"SubscriptionLineDto":{"required":["currency","discount_amount","discount_amount_str","id","initial_discount_amount","initial_discount_amount_str","initial_giftcard_usage_amount","initial_giftcard_usage_amount_str","initial_subtotal_amount","initial_subtotal_amount_str","initial_tax_amount","initial_tax_amount_str","initial_total_amount","initial_total_amount_str","price","product_id","product_name","product_version_id","store_id","subscription_id","subtotal_amount","subtotal_amount_str","tax_amount","tax_amount_str","tax_inclusive","total_amount","total_amount_str"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"subscription_id":{"$ref":"#/components/schemas/FlakeId"},"checkout_line_id":{"$ref":"#/components/schemas/FlakeId"},"initial_order_line_id":{"$ref":"#/components/schemas/FlakeId"},"pricing_region_id":{"type":["null","string"],"description":"Identifier for the pricing region associated with this subscription line."},"gift_to_customer_id":{"$ref":"#/components/schemas/FlakeId"},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"sale_id":{"$ref":"#/components/schemas/FlakeId"},"trial_id":{"$ref":"#/components/schemas/FlakeId"},"product_id":{"$ref":"#/components/schemas/FlakeId"},"product_version_id":{"$ref":"#/components/schemas/FlakeId"},"product_name":{"type":"string","description":"Name of the product associated with this subscription line."},"product_image_url":{"type":["null","string"],"description":"URL for the product image."},"tax_inclusive":{"type":"boolean","description":"Indicates whether tax is included in the base price itself."},"currency":{"type":"string","description":"Currency code for this subscription line."},"price":{"type":"integer","description":"Base price of the subscription line in smallest currency units (e.g., cents).","format":"int64"},"discount_amount":{"type":"integer","description":"Amount of discount applied in smallest currency units.","format":"int64"},"discount_amount_str":{"type":"string","description":"Formatted string representation of the discount amount.","readOnly":true},"subtotal_amount":{"type":"integer","description":"Subtotal amount in smallest currency units.","format":"int64"},"subtotal_amount_str":{"type":"string","description":"Formatted string representation of the subtotal amount.","readOnly":true},"tax_amount":{"type":"integer","description":"Tax amount in smallest currency units.","format":"int64"},"tax_amount_str":{"type":"string","description":"Formatted string representation of the tax amount.","readOnly":true},"total_amount":{"type":"integer","description":"Total amount in smallest currency units.","format":"int64"},"total_amount_str":{"type":"string","description":"Formatted string representation of the total amount.","readOnly":true},"initial_discount_amount":{"type":"integer","description":"Initial discount amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_discount_amount_str":{"type":"string","description":"Formatted string representation of the initial discount amount.","readOnly":true},"initial_subtotal_amount":{"type":"integer","description":"Initial subtotal amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_subtotal_amount_str":{"type":"string","description":"Formatted string representation of the initial subtotal amount.","readOnly":true},"initial_giftcard_usage_amount":{"type":"integer","description":"Initial gift card usage amount in smallest currency units.","format":"int64"},"initial_giftcard_usage_amount_str":{"type":"string","description":"Formatted string representation of the initial gift card usage amount.","readOnly":true},"initial_tax_amount":{"type":"integer","description":"Initial tax amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_tax_amount_str":{"type":"string","description":"Formatted string representation of the initial tax amount.","readOnly":true},"initial_total_amount":{"type":"integer","description":"Initial total amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_total_amount_str":{"type":"string","description":"Formatted string representation of the initial total amount.","readOnly":true},"presentment_currency":{"type":["null","string"],"description":"Presentment currency code (currency shown to customer)."},"presentment_subtotal_amount":{"type":["null","integer"],"description":"Presentment subtotal amount in smallest currency units.","format":"int64"},"presentment_subtotal_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment subtotal amount.","readOnly":true},"presentment_discount_amount":{"type":["null","integer"],"description":"Presentment discount amount in smallest currency units.","format":"int64"},"presentment_discount_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment discount amount.","readOnly":true},"presentment_tax_amount":{"type":["null","integer"],"description":"Presentment tax amount in smallest currency units.","format":"int64"},"presentment_tax_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment tax amount.","readOnly":true},"presentment_total_amount":{"type":["null","integer"],"description":"Presentment total amount in smallest currency units.","format":"int64"},"presentment_total_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment total amount.","readOnly":true},"initial_presentment_discount_amount":{"type":["null","integer"],"description":"Initial presentment discount amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_discount_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment discount amount.","readOnly":true},"initial_presentment_subtotal_amount":{"type":["null","integer"],"description":"Initial presentment subtotal amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_subtotal_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment subtotal amount.","readOnly":true},"initial_presentment_giftcard_usage_amount":{"type":["null","integer"],"description":"Initial presentment gift card usage amount in smallest currency units.","format":"int64"},"initial_presentment_giftcard_usage_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment gift card usage amount.","readOnly":true},"initial_presentment_tax_amount":{"type":["null","integer"],"description":"Initial presentment tax amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_tax_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment tax amount.","readOnly":true},"initial_presentment_total_amount":{"type":["null","integer"],"description":"Initial presentment total amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_total_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment total amount.","readOnly":true}},"additionalProperties":false,"description":"Represents a line item within a subscription."}}}}
```

## The SubscriptionLineDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionLineDto":{"required":["currency","discount_amount","discount_amount_str","id","initial_discount_amount","initial_discount_amount_str","initial_giftcard_usage_amount","initial_giftcard_usage_amount_str","initial_subtotal_amount","initial_subtotal_amount_str","initial_tax_amount","initial_tax_amount_str","initial_total_amount","initial_total_amount_str","price","product_id","product_name","product_version_id","store_id","subscription_id","subtotal_amount","subtotal_amount_str","tax_amount","tax_amount_str","tax_inclusive","total_amount","total_amount_str"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"subscription_id":{"$ref":"#/components/schemas/FlakeId"},"checkout_line_id":{"$ref":"#/components/schemas/FlakeId"},"initial_order_line_id":{"$ref":"#/components/schemas/FlakeId"},"pricing_region_id":{"type":["null","string"],"description":"Identifier for the pricing region associated with this subscription line."},"gift_to_customer_id":{"$ref":"#/components/schemas/FlakeId"},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"sale_id":{"$ref":"#/components/schemas/FlakeId"},"trial_id":{"$ref":"#/components/schemas/FlakeId"},"product_id":{"$ref":"#/components/schemas/FlakeId"},"product_version_id":{"$ref":"#/components/schemas/FlakeId"},"product_name":{"type":"string","description":"Name of the product associated with this subscription line."},"product_image_url":{"type":["null","string"],"description":"URL for the product image."},"tax_inclusive":{"type":"boolean","description":"Indicates whether tax is included in the base price itself."},"currency":{"type":"string","description":"Currency code for this subscription line."},"price":{"type":"integer","description":"Base price of the subscription line in smallest currency units (e.g., cents).","format":"int64"},"discount_amount":{"type":"integer","description":"Amount of discount applied in smallest currency units.","format":"int64"},"discount_amount_str":{"type":"string","description":"Formatted string representation of the discount amount.","readOnly":true},"subtotal_amount":{"type":"integer","description":"Subtotal amount in smallest currency units.","format":"int64"},"subtotal_amount_str":{"type":"string","description":"Formatted string representation of the subtotal amount.","readOnly":true},"tax_amount":{"type":"integer","description":"Tax amount in smallest currency units.","format":"int64"},"tax_amount_str":{"type":"string","description":"Formatted string representation of the tax amount.","readOnly":true},"total_amount":{"type":"integer","description":"Total amount in smallest currency units.","format":"int64"},"total_amount_str":{"type":"string","description":"Formatted string representation of the total amount.","readOnly":true},"initial_discount_amount":{"type":"integer","description":"Initial discount amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_discount_amount_str":{"type":"string","description":"Formatted string representation of the initial discount amount.","readOnly":true},"initial_subtotal_amount":{"type":"integer","description":"Initial subtotal amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_subtotal_amount_str":{"type":"string","description":"Formatted string representation of the initial subtotal amount.","readOnly":true},"initial_giftcard_usage_amount":{"type":"integer","description":"Initial gift card usage amount in smallest currency units.","format":"int64"},"initial_giftcard_usage_amount_str":{"type":"string","description":"Formatted string representation of the initial gift card usage amount.","readOnly":true},"initial_tax_amount":{"type":"integer","description":"Initial tax amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_tax_amount_str":{"type":"string","description":"Formatted string representation of the initial tax amount.","readOnly":true},"initial_total_amount":{"type":"integer","description":"Initial total amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_total_amount_str":{"type":"string","description":"Formatted string representation of the initial total amount.","readOnly":true},"presentment_currency":{"type":["null","string"],"description":"Presentment currency code (currency shown to customer)."},"presentment_subtotal_amount":{"type":["null","integer"],"description":"Presentment subtotal amount in smallest currency units.","format":"int64"},"presentment_subtotal_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment subtotal amount.","readOnly":true},"presentment_discount_amount":{"type":["null","integer"],"description":"Presentment discount amount in smallest currency units.","format":"int64"},"presentment_discount_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment discount amount.","readOnly":true},"presentment_tax_amount":{"type":["null","integer"],"description":"Presentment tax amount in smallest currency units.","format":"int64"},"presentment_tax_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment tax amount.","readOnly":true},"presentment_total_amount":{"type":["null","integer"],"description":"Presentment total amount in smallest currency units.","format":"int64"},"presentment_total_amount_str":{"type":["null","string"],"description":"Formatted string representation of the presentment total amount.","readOnly":true},"initial_presentment_discount_amount":{"type":["null","integer"],"description":"Initial presentment discount amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_discount_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment discount amount.","readOnly":true},"initial_presentment_subtotal_amount":{"type":["null","integer"],"description":"Initial presentment subtotal amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_subtotal_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment subtotal amount.","readOnly":true},"initial_presentment_giftcard_usage_amount":{"type":["null","integer"],"description":"Initial presentment gift card usage amount in smallest currency units.","format":"int64"},"initial_presentment_giftcard_usage_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment gift card usage amount.","readOnly":true},"initial_presentment_tax_amount":{"type":["null","integer"],"description":"Initial presentment tax amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_tax_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment tax amount.","readOnly":true},"initial_presentment_total_amount":{"type":["null","integer"],"description":"Initial presentment total amount in smallest currency units for the first billing cycle.","format":"int64"},"initial_presentment_total_amount_str":{"type":["null","string"],"description":"Formatted string representation of the initial presentment total amount.","readOnly":true}},"additionalProperties":false,"description":"Represents a line item within a subscription."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The SubscriptionStatus object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"SubscriptionStatus":{"enum":["invalid","created","active","canceled"],"type":"string","description":"Represents the current state of a subscription."}}}}
```

## The TrustStoreRequirementDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"TrustStoreRequirementDto":{"required":["category","code","created_at","id","metadata","name","requested_by","restricts_capabilities","status","store_id","submissions"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"template_id":{"type":["null","string"],"description":"Template ID if this requirement was created from a template. Null for ad-hoc requirements."},"originating_flag_id":{"$ref":"#/components/schemas/FlakeId"},"category":{"$ref":"#/components/schemas/StoreRequirementCategory"},"code":{"type":"string","description":"Unique code identifying the type of requirement. Copied from template or custom for ad-hoc requirements."},"name":{"type":"string","description":"Human-readable name of the requirement. Copied from template or custom for ad-hoc requirements."},"description":{"type":["null","string"],"description":"Detailed description explaining what the store needs to provide. Copied from template or custom for ad-hoc requirements."},"schema":{"type":"null","description":"JSON schema defining the form fields, validation rules, and document requirements"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional metadata for this requirement (stored as JSON)"},"status":{"$ref":"#/components/schemas/StoreRequirementStatus"},"requested_by":{"$ref":"#/components/schemas/StoreRequirementActionParty"},"requested_by_detail":{"type":["null","string"],"description":"Specifies the specific requester entity (e.g., \"stripe\", \"trolley\", or admin user ID)\nFree-form string for internal records"},"created_at":{"type":"string","description":"When this requirement was created","format":"date-time"},"updated_at":{"type":["null","string"],"description":"When this requirement was last updated","format":"date-time"},"deadline_at":{"type":["null","string"],"description":"When this requirement must be completed by (optional)","format":"date-time"},"submitted_at":{"type":["null","string"],"description":"When the store submitted their response to this requirement","format":"date-time"},"verified_at":{"type":["null","string"],"description":"When this requirement was verified and approved","format":"date-time"},"rejected_at":{"type":["null","string"],"description":"When this requirement was rejected for not meeting standards","format":"date-time"},"restricts_capabilities":{"type":"array","items":{"type":"string"},"description":"Store capabilities that are restricted until this requirement is satisfied"},"submissions":{"type":"array","items":{"$ref":"#/components/schemas/TrustStoreRequirementSubmissionDto"},"description":"Associated submissions for this requriement."}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"StoreRequirementCategory":{"enum":["invalid","business","kyc","compliance","risk","technical","financial","legal","other"],"type":"string","description":"Represents categories of requirements that must be fulfilled for store setup and compliance in the PayNow platform."},"StoreRequirementStatus":{"enum":["invalid","pending","under_review","requires_revision","approved","expired","waived","rejected_final"],"type":"string"},"StoreRequirementActionParty":{"enum":["invalid","store","paynow","payment_processor","payout_provider","kyc_provider","external"],"type":"string","description":"Determines the party that needs to perform or requests a verification"},"TrustStoreRequirementSubmissionDto":{"required":["id","store_id","store_requirement_field_id","store_requirement_id","submitted_at","submitted_by"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"store_requirement_id":{"$ref":"#/components/schemas/FlakeId"},"store_requirement_field_id":{"type":"string","description":"The identifier of the specific field within the store requirement."},"text_value":{"type":["null","string"],"description":"The text value submitted for this field, if applicable."},"file_id":{"type":["null","string"],"description":"The identifier of the uploaded file, if a file was submitted."},"file_name":{"type":["null","string"],"description":"The original name of the uploaded file."},"file_content_type":{"type":["null","string"],"description":"The MIME content type of the uploaded file."},"file_size_bytes":{"type":["null","integer"],"description":"The size of the uploaded file in bytes.","format":"int64"},"submitted_at":{"type":"string","description":"The timestamp when this submission was made.","format":"date-time"},"submitted_by":{"$ref":"#/components/schemas/ActorDto"},"submitted_by_ip_address":{"type":["null","string"],"description":"The IP address from which the submission was made."},"submitted_by_user_agent":{"type":["null","string"],"description":"The user agent string of the client that made the submission."}},"additionalProperties":false},"ActorDto":{"required":["type"],"type":"object","properties":{"type":{"$ref":"#/components/schemas/PayNowActorType"},"id":{"$ref":"#/components/schemas/FlakeId"}},"additionalProperties":false},"PayNowActorType":{"enum":["anonymous","user","api_key","customer","game_server","internal","admin","platform","global_customer"],"type":"string"}}}}
```

## The TrustStoreRequirementSubmissionDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"TrustStoreRequirementSubmissionDto":{"required":["id","store_id","store_requirement_field_id","store_requirement_id","submitted_at","submitted_by"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"store_requirement_id":{"$ref":"#/components/schemas/FlakeId"},"store_requirement_field_id":{"type":"string","description":"The identifier of the specific field within the store requirement."},"text_value":{"type":["null","string"],"description":"The text value submitted for this field, if applicable."},"file_id":{"type":["null","string"],"description":"The identifier of the uploaded file, if a file was submitted."},"file_name":{"type":["null","string"],"description":"The original name of the uploaded file."},"file_content_type":{"type":["null","string"],"description":"The MIME content type of the uploaded file."},"file_size_bytes":{"type":["null","integer"],"description":"The size of the uploaded file in bytes.","format":"int64"},"submitted_at":{"type":"string","description":"The timestamp when this submission was made.","format":"date-time"},"submitted_by":{"$ref":"#/components/schemas/ActorDto"},"submitted_by_ip_address":{"type":["null","string"],"description":"The IP address from which the submission was made."},"submitted_by_user_agent":{"type":["null","string"],"description":"The user agent string of the client that made the submission."}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"ActorDto":{"required":["type"],"type":"object","properties":{"type":{"$ref":"#/components/schemas/PayNowActorType"},"id":{"$ref":"#/components/schemas/FlakeId"}},"additionalProperties":false},"PayNowActorType":{"enum":["anonymous","user","api_key","customer","game_server","internal","admin","platform","global_customer"],"type":"string"}}}}
```

## The UpdateSubscriptionResponseDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"UpdateSubscriptionResponseDto":{"required":["subscription_change"],"type":"object","properties":{"subscription_change":{"$ref":"#/components/schemas/SubscriptionChangeDto"},"pending_payment":{"$ref":"#/components/schemas/CheckoutPaymentInfoDto"}},"additionalProperties":false,"description":"Response returned after a subscription change is initiated."},"SubscriptionChangeDto":{"required":["created_at","id","lines","next_billing_amount","next_billing_presentment_amount","off_session","prorated_amount","proration_behavior","status","subscription_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"subscription_id":{"$ref":"#/components/schemas/FlakeId"},"prorated_order_id":{"$ref":"#/components/schemas/FlakeId"},"status":{"$ref":"#/components/schemas/SubscriptionChangeStatusDto"},"proration_behavior":{"$ref":"#/components/schemas/ProrationBehaviorDto"},"off_session":{"type":"boolean","description":"Whether this change was initiated without active customer interaction."},"prorated_amount":{"$ref":"#/components/schemas/SubscriptionChangeProratedAmountDto"},"created_at":{"type":"string","format":"date-time"},"applied_at":{"type":["null","string"],"format":"date-time"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionChangeLineDto"}},"next_billing_amount":{"$ref":"#/components/schemas/SubscriptionChangeAmountDto"},"next_billing_presentment_amount":{"$ref":"#/components/schemas/SubscriptionChangeAmountDto"}},"additionalProperties":false,"description":"A pending or applied change to a subscription."},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"SubscriptionChangeStatusDto":{"enum":["invalid","pending_payment","pending_renewal","applied","canceled","pending_verification"],"type":"string","description":"Represents the status of a subscription change."},"ProrationBehaviorDto":{"enum":["invalid","immediate","next_billing_period","none"],"type":"string","description":"Describes how proration is handled when a subscription change is applied."},"SubscriptionChangeProratedAmountDto":{"required":["currency","presentment_currency","presentment_prorated_amount","prorated_amount"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 settlement currency code, in lowercase."},"prorated_amount":{"type":"integer","description":"Total prorated charge in smallest settlement currency units, including tax.","format":"int64"},"presentment_currency":{"type":"string","description":"ISO 4217 presentment currency code, in lowercase."},"presentment_prorated_amount":{"type":"integer","description":"Total prorated charge in smallest presentment currency units, including tax.","format":"int64"}},"additionalProperties":false,"description":"The total prorated charge for a subscription change, expressed in both settlement and presentment currencies."},"SubscriptionChangeLineDto":{"required":["amount","id","is_deleted","presentment_amount","price","product","prorated_amount","prorated_presentment_amount","remaining_minutes","tax_inclusive","total_minutes"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"subscription_line_id":{"$ref":"#/components/schemas/FlakeId"},"is_deleted":{"type":"boolean","description":"Whether this line is being removed by the change."},"tax_inclusive":{"type":"boolean","description":"Whether tax is included in the base price."},"price":{"type":"integer","description":"Base price in smallest settlement currency units.","format":"int64"},"product":{"$ref":"#/components/schemas/SubscriptionChangeLineProductDto"},"amount":{"$ref":"#/components/schemas/SubscriptionChangeLineAmountDto"},"presentment_amount":{"$ref":"#/components/schemas/SubscriptionChangeLineAmountDto"},"prorated_amount":{"type":"integer","description":"Prorated charge for this line in smallest settlement currency units.","format":"int64"},"prorated_presentment_amount":{"type":"integer","description":"Prorated charge for this line in smallest presentment currency units.","format":"int64"},"remaining_minutes":{"type":"integer","description":"Minutes remaining in the billing period at the time of change - used to calculate proration.","format":"int64"},"total_minutes":{"type":"integer","description":"Total minutes in the billing period - used to calculate proration.","format":"int64"}},"additionalProperties":false,"description":"A single line item within a subscription change."},"SubscriptionChangeLineProductDto":{"required":["custom_variables","id","name","version_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"version_id":{"$ref":"#/components/schemas/FlakeId"},"name":{"type":"string","description":"Display name of the product."},"image_url":{"type":["null","string"],"description":"URL of the product image, if set."},"selected_gameserver_id":{"$ref":"#/components/schemas/FlakeId"},"pricing_region_id":{"type":["null","string"],"description":"The pricing region used to determine the price, if applicable."},"custom_variables":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/CustomVariableLineItemDto"},"description":"Custom variables set on this line item, keyed by variable identifier."}},"additionalProperties":false,"description":"The product associated with a subscription change line."},"CustomVariableLineItemDto":{"required":["description","id","identifier","name","price","value"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"identifier":{"type":"string","description":"The identifier used to reference this custom variable (e.g., \"color\", \"size\")."},"name":{"type":"string","description":"The display name of the custom variable shown to users."},"description":{"type":"string","description":"A detailed description of what this custom variable represents."},"price":{"type":"integer","description":"The price associated with this custom variable in the smallest currency unit (e.g., cents).","format":"int64"},"value":{"type":"string","description":"The selected value for this custom variable."}},"additionalProperties":false},"SubscriptionChangeLineAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Pricing breakdown for a single subscription change line, in the smallest units of the given currency (e.g. cents)."},"SubscriptionChangeAmountDto":{"required":["currency","discount","subtotal","tax","total"],"type":"object","properties":{"currency":{"type":"string","description":"ISO 4217 currency code, in lowercase."},"subtotal":{"type":"integer","description":"Base amount before discounts or tax, in smallest currency units.","format":"int64"},"discount":{"type":"integer","description":"Total discount applied, in smallest currency units.","format":"int64"},"tax":{"type":"integer","description":"Tax amount, in smallest currency units.","format":"int64"},"total":{"type":"integer","description":"Amount due after discounts and tax, in smallest currency units.","format":"int64"}},"additionalProperties":false,"description":"Pricing breakdown for a subscription change, in the smallest units of the given currency (e.g. cents)."},"CheckoutPaymentInfoDto":{"required":["declined","status"],"type":"object","properties":{"status":{"type":"string","description":"Status string from the payment provider."},"declined":{"type":"boolean","description":"Indicates whether the payment was declined."},"decline_message":{"type":["null","string"],"description":"The customer readable decline reason, if the payment was declined."},"checkout_url":{"type":["null","string"],"description":"Checkout URL to redirect to for on-session payments."}},"additionalProperties":false,"description":"Payment outcome information returned after a subscription change triggers an immediate charge."}}}}
```

## The UpdateSubscriptionTierRequestDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"UpdateSubscriptionTierRequestDto":{"required":["target_product_id"],"type":"object","properties":{"target_product_id":{"$ref":"#/components/schemas/FlakeId"},"verification_code":{"type":["null","string"],"description":"A verification code sent to the customer's subscription billing e-mail.\nPass this if the `status` field on the `subscription_change` object equals `pending_verification`."}},"additionalProperties":false},"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"}}}}
```

## The ValidationError object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"ValidationError":{"required":["code","message","path","validation"],"type":"object","properties":{"code":{"type":"string","description":"The parseable error code."},"message":{"type":"string","description":"The human-readable error message."},"path":{"type":"string","description":"The path leading to the validation error."},"validation":{"type":"string","description":"Type of the validation that failed."}},"additionalProperties":false,"description":"A validation error."}}}}
```

## The VatRateDto object

```json
{"openapi":"3.1.1","info":{"title":"PayNow Storefront (Headless) API","version":"v1"},"components":{"schemas":{"VatRateDto":{"required":["country_code","country_name","currency","eservice_rate","eu_member_state","percentage","vat_abbreviation","vat_local_name"],"type":"object","properties":{"country_code":{"type":"string","description":"The ISO country code."},"country_name":{"type":"string","description":"The full name of the country."},"currency":{"type":"string","description":"The local currency used in the country."},"vat_abbreviation":{"type":"string","description":"The abbreviation of the VAT term in the local language."},"vat_local_name":{"type":"string","description":"The full name of the VAT term in the local language."},"eu_member_state":{"type":"boolean","description":"Indicates whether the country is a member of the European Union."},"eservice_rate":{"type":"number","description":"The VAT rate applicable for electronic services, as a percentage.","format":"double"},"percentage":{"type":"number","description":"The VAT rate (synonym for EServiceRate).","format":"double","readOnly":true}},"additionalProperties":false,"description":"The VAT rate estimation for the passed in customer country / IP.\nInclude the VAT percentage + abbreviation in your product view to inform your customers about the tax."}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.paynow.gg/storefront-headless/storefront-api/models.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
