# Marketing

## GET /v1/stores/{storeId}/marketing/abandoned-checkouts/configuration

> Gets the abandoned checkout behaviour for a store

```json
{"openapi":"3.1.1","info":{"title":"PayNow Management API","version":"v1"},"tags":[{"name":"marketing"}],"security":[{"APIKey":[]}],"components":{"securitySchemes":{"APIKey":{"type":"apiKey","description":"An API Key token generated in the Dashboard in the format 'APIKey TOKEN_HERE'.","name":"Authorization","in":"header"}},"schemas":{"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"AbandonedCheckoutStoreConfigurationDto":{"required":["commands","coupon_configuration","enabled","invalid","minimum_order_value","store_id","trigger_after","updated_at","updated_by"],"type":"object","properties":{"store_id":{"$ref":"#/components/schemas/FlakeId"},"enabled":{"type":"boolean","description":"A value indicating whether the abandoned checkout feature is enabled for the store."},"invalid":{"type":"boolean","description":"A value indicating whether the abandoned checkout configuration for the store is invalid."},"trigger_after":{"$ref":"#/components/schemas/Period"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to trigger an abandoned checkout email.","format":"int64"},"maximum_order_value":{"type":["null","integer"],"description":"The optional maximum order value beyond which an abandoned checkout email will not be sent.","format":"int64"},"max_coupons_per_customer_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit per customer beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_per_customer_period":{"$ref":"#/components/schemas/Period"},"max_coupons_global_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit store wide beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_global_period":{"$ref":"#/components/schemas/Period"},"coupon_configuration":{"$ref":"#/components/schemas/MarketingCouponConfigurationDto"},"commands":{"type":"array","items":{"$ref":"#/components/schemas/AbandonedCheckoutStoreConfigurationCommandDto"},"description":"The commands you want to execute when the email is sent."},"updated_by":{"$ref":"#/components/schemas/ActorDto"},"updated_at":{"type":"string","description":"The date and time when the configuration was last updated.","format":"date-time"}},"additionalProperties":false,"description":"Represents the store-level configuration for abandoned checkout settings."},"Period":{"type":"string","additionalProperties":false,"description":"ISO 8601 duration format","format":"period"},"MarketingCouponConfigurationDto":{"required":["customer_redeem_limit","customer_redeem_limit_enabled","discount_amount","discount_apply_before_sales","discount_only_required_tags_or_products","discount_type","duration","minimum_order_value","required_product_ids","required_tag_ids","usable_on_one_time_purchases","usable_on_subscriptions"],"type":"object","properties":{"duration":{"$ref":"#/components/schemas/CouponDurationEnum"},"duration_in_months":{"type":["null","integer"],"description":"Gets or sets the duration of the coupon in months, applicable only for repeating coupons.","format":"int32"},"discount_type":{"$ref":"#/components/schemas/CouponDiscountTypeEnum"},"discount_amount":{"type":"integer","description":"Gets or sets the discount amount.","format":"int64"},"discount_only_required_tags_or_products":{"type":"boolean","description":"Gets or sets a value indicating whether the discount only applies to specific tags or products."},"discount_apply_before_sales":{"type":"boolean","description":"Gets or sets a value indicating whether the discount is applied before any existing sales or discounts."},"required_tag_ids":{"type":"array","items":{"$ref":"#/components/schemas/FlakeId"},"description":"Gets or sets the list of tag IDs required for the discount to apply."},"required_product_ids":{"type":"array","items":{"$ref":"#/components/schemas/FlakeId"},"description":"Gets or sets the list of product IDs required for the discount to apply."},"minimum_order_value":{"type":"integer","description":"Gets or sets the minimum order value required for the discount to be applied.","format":"int64"},"customer_redeem_limit_enabled":{"type":"boolean","description":"Gets or sets a value indicating whether a customer-specific redeem limit is enabled."},"customer_redeem_limit":{"type":"integer","description":"Gets or sets the maximum number of times a single customer can redeem the coupon.","format":"int64"},"usable_on_one_time_purchases":{"type":"boolean","description":"Gets or sets a value indicating whether the coupon can be used on one-time purchases."},"usable_on_subscriptions":{"type":"boolean","description":"Gets or sets a value indicating whether the coupon can be used on subscription purchases."},"expires_after":{"$ref":"#/components/schemas/Period"}},"additionalProperties":false,"description":"Represents the configuration settings for a coupon applied to marketing features."},"CouponDurationEnum":{"enum":["once","forever","repeating"],"type":"string","description":"Defines the duration for which a coupon remains valid."},"CouponDiscountTypeEnum":{"enum":["unspecified","percent","amount"],"type":"string","description":"Specifies the type of discount applied by a coupon."},"AbandonedCheckoutStoreConfigurationCommandDto":{"required":["command","id","online_only","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"command":{"type":"string","description":"The command to execute."},"online_only":{"type":"boolean","description":"Indicates if the command should be executed if the player is online."}},"additionalProperties":false,"description":"Represents a command associated with the store-level abandoned checkout configuration."},"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"},"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."}}},"paths":{"/v1/stores/{storeId}/marketing/abandoned-checkouts/configuration":{"get":{"tags":["marketing"],"summary":"Gets the abandoned checkout behaviour for a store","operationId":"StoreAbandonedCheckouts_GetStoreAbandonedCheckoutConfigurationOptions","parameters":[{"name":"storeId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/FlakeId"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbandonedCheckoutStoreConfigurationDto"}}}},"default":{"description":"Error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayNowError"}}}}}}}}}
```

## PUT /v1/stores/{storeId}/marketing/abandoned-checkouts/configuration

> Sets the abandoned checkout behaviour for a store

```json
{"openapi":"3.1.1","info":{"title":"PayNow Management API","version":"v1"},"tags":[{"name":"marketing"}],"security":[{"APIKey":[]}],"components":{"securitySchemes":{"APIKey":{"type":"apiKey","description":"An API Key token generated in the Dashboard in the format 'APIKey TOKEN_HERE'.","name":"Authorization","in":"header"}},"schemas":{"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"AbandonedCheckoutStoreConfigurationUpdateDto":{"required":["commands","coupon_configuration","enabled","minimum_order_value","trigger_after"],"type":"object","properties":{"enabled":{"type":"boolean","description":"A value indicating whether the abandoned checkout feature is enabled for the store."},"trigger_after":{"$ref":"#/components/schemas/Period"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to trigger an abandoned checkout email.","format":"int64"},"maximum_order_value":{"type":["null","integer"],"description":"The optional maximum order value beyond which an abandoned checkout email will not be sent.","format":"int64"},"max_coupons_per_customer_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit per customer beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_per_customer_period":{"$ref":"#/components/schemas/Period"},"max_coupons_global_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit store wide beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_global_period":{"$ref":"#/components/schemas/Period"},"commands":{"type":"array","items":{"$ref":"#/components/schemas/AbandonedCheckoutStoreConfigurationUpdateCommandDto"}},"coupon_configuration":{"$ref":"#/components/schemas/MarketingCouponConfigurationDto"}},"additionalProperties":false,"description":"Used for updating the store-level configuration for abandoned checkout settings."},"Period":{"type":"string","additionalProperties":false,"description":"ISO 8601 duration format","format":"period"},"AbandonedCheckoutStoreConfigurationUpdateCommandDto":{"required":["command","online_only"],"type":"object","properties":{"command":{"type":"string","description":"The command to execute."},"online_only":{"type":"boolean","description":"Indicates if the command should be executed if the player is online."}},"additionalProperties":false,"description":"Represents a command associated with the store-level abandoned checkout configuration."},"MarketingCouponConfigurationDto":{"required":["customer_redeem_limit","customer_redeem_limit_enabled","discount_amount","discount_apply_before_sales","discount_only_required_tags_or_products","discount_type","duration","minimum_order_value","required_product_ids","required_tag_ids","usable_on_one_time_purchases","usable_on_subscriptions"],"type":"object","properties":{"duration":{"$ref":"#/components/schemas/CouponDurationEnum"},"duration_in_months":{"type":["null","integer"],"description":"Gets or sets the duration of the coupon in months, applicable only for repeating coupons.","format":"int32"},"discount_type":{"$ref":"#/components/schemas/CouponDiscountTypeEnum"},"discount_amount":{"type":"integer","description":"Gets or sets the discount amount.","format":"int64"},"discount_only_required_tags_or_products":{"type":"boolean","description":"Gets or sets a value indicating whether the discount only applies to specific tags or products."},"discount_apply_before_sales":{"type":"boolean","description":"Gets or sets a value indicating whether the discount is applied before any existing sales or discounts."},"required_tag_ids":{"type":"array","items":{"$ref":"#/components/schemas/FlakeId"},"description":"Gets or sets the list of tag IDs required for the discount to apply."},"required_product_ids":{"type":"array","items":{"$ref":"#/components/schemas/FlakeId"},"description":"Gets or sets the list of product IDs required for the discount to apply."},"minimum_order_value":{"type":"integer","description":"Gets or sets the minimum order value required for the discount to be applied.","format":"int64"},"customer_redeem_limit_enabled":{"type":"boolean","description":"Gets or sets a value indicating whether a customer-specific redeem limit is enabled."},"customer_redeem_limit":{"type":"integer","description":"Gets or sets the maximum number of times a single customer can redeem the coupon.","format":"int64"},"usable_on_one_time_purchases":{"type":"boolean","description":"Gets or sets a value indicating whether the coupon can be used on one-time purchases."},"usable_on_subscriptions":{"type":"boolean","description":"Gets or sets a value indicating whether the coupon can be used on subscription purchases."},"expires_after":{"$ref":"#/components/schemas/Period"}},"additionalProperties":false,"description":"Represents the configuration settings for a coupon applied to marketing features."},"CouponDurationEnum":{"enum":["once","forever","repeating"],"type":"string","description":"Defines the duration for which a coupon remains valid."},"CouponDiscountTypeEnum":{"enum":["unspecified","percent","amount"],"type":"string","description":"Specifies the type of discount applied by a coupon."},"AbandonedCheckoutStoreConfigurationDto":{"required":["commands","coupon_configuration","enabled","invalid","minimum_order_value","store_id","trigger_after","updated_at","updated_by"],"type":"object","properties":{"store_id":{"$ref":"#/components/schemas/FlakeId"},"enabled":{"type":"boolean","description":"A value indicating whether the abandoned checkout feature is enabled for the store."},"invalid":{"type":"boolean","description":"A value indicating whether the abandoned checkout configuration for the store is invalid."},"trigger_after":{"$ref":"#/components/schemas/Period"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to trigger an abandoned checkout email.","format":"int64"},"maximum_order_value":{"type":["null","integer"],"description":"The optional maximum order value beyond which an abandoned checkout email will not be sent.","format":"int64"},"max_coupons_per_customer_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit per customer beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_per_customer_period":{"$ref":"#/components/schemas/Period"},"max_coupons_global_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit store wide beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_global_period":{"$ref":"#/components/schemas/Period"},"coupon_configuration":{"$ref":"#/components/schemas/MarketingCouponConfigurationDto"},"commands":{"type":"array","items":{"$ref":"#/components/schemas/AbandonedCheckoutStoreConfigurationCommandDto"},"description":"The commands you want to execute when the email is sent."},"updated_by":{"$ref":"#/components/schemas/ActorDto"},"updated_at":{"type":"string","description":"The date and time when the configuration was last updated.","format":"date-time"}},"additionalProperties":false,"description":"Represents the store-level configuration for abandoned checkout settings."},"AbandonedCheckoutStoreConfigurationCommandDto":{"required":["command","id","online_only","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"command":{"type":"string","description":"The command to execute."},"online_only":{"type":"boolean","description":"Indicates if the command should be executed if the player is online."}},"additionalProperties":false,"description":"Represents a command associated with the store-level abandoned checkout configuration."},"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"},"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."}}},"paths":{"/v1/stores/{storeId}/marketing/abandoned-checkouts/configuration":{"put":{"tags":["marketing"],"summary":"Sets the abandoned checkout behaviour for a store","operationId":"StoreAbandonedCheckouts_SetStoreAbandonedCheckoutConfigurationOptions","parameters":[{"name":"storeId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/FlakeId"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbandonedCheckoutStoreConfigurationUpdateDto"}},"text/json":{"schema":{"$ref":"#/components/schemas/AbandonedCheckoutStoreConfigurationUpdateDto"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/AbandonedCheckoutStoreConfigurationUpdateDto"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbandonedCheckoutStoreConfigurationDto"}}}},"204":{"description":"No Content"},"default":{"description":"Error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayNowError"}}}}}}}}}
```

## GET /v1/stores/{storeId}/marketing/purchase-follow-ups/configuration

> Gets the purchase follow up behaviour for a store

```json
{"openapi":"3.1.1","info":{"title":"PayNow Management API","version":"v1"},"tags":[{"name":"marketing"}],"security":[{"APIKey":[]}],"components":{"securitySchemes":{"APIKey":{"type":"apiKey","description":"An API Key token generated in the Dashboard in the format 'APIKey TOKEN_HERE'.","name":"Authorization","in":"header"}},"schemas":{"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"PurchaseFollowUpStoreConfigurationDto":{"required":["commands","coupon_configuration","enabled","invalid","minimum_order_value","store_id","trigger_after","updated_at","updated_by"],"type":"object","properties":{"store_id":{"$ref":"#/components/schemas/FlakeId"},"enabled":{"type":"boolean","description":"A value indicating whether the abandoned checkout feature is enabled for the store."},"invalid":{"type":"boolean","description":"A value indicating whether the abandoned checkout configuration for the store is invalid."},"trigger_after":{"$ref":"#/components/schemas/Period"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to trigger an abandoned checkout email.","format":"int64"},"maximum_order_value":{"type":["null","integer"],"description":"The optional maximum order value beyond which an abandoned checkout email will not be sent.","format":"int64"},"max_coupons_per_customer_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit per customer beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_per_customer_period":{"$ref":"#/components/schemas/Period"},"max_coupons_global_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit store wide beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_global_period":{"$ref":"#/components/schemas/Period"},"coupon_configuration":{"$ref":"#/components/schemas/MarketingCouponConfigurationDto"},"commands":{"type":"array","items":{"$ref":"#/components/schemas/PurchaseFollowUpStoreConfigurationCommandDto"},"description":"The commands you want to execute when the email is sent."},"updated_by":{"$ref":"#/components/schemas/ActorDto"},"updated_at":{"type":"string","description":"The date and time when the configuration was last updated.","format":"date-time"}},"additionalProperties":false,"description":"Represents the store-level configuration for abandoned checkout settings."},"Period":{"type":"string","additionalProperties":false,"description":"ISO 8601 duration format","format":"period"},"MarketingCouponConfigurationDto":{"required":["customer_redeem_limit","customer_redeem_limit_enabled","discount_amount","discount_apply_before_sales","discount_only_required_tags_or_products","discount_type","duration","minimum_order_value","required_product_ids","required_tag_ids","usable_on_one_time_purchases","usable_on_subscriptions"],"type":"object","properties":{"duration":{"$ref":"#/components/schemas/CouponDurationEnum"},"duration_in_months":{"type":["null","integer"],"description":"Gets or sets the duration of the coupon in months, applicable only for repeating coupons.","format":"int32"},"discount_type":{"$ref":"#/components/schemas/CouponDiscountTypeEnum"},"discount_amount":{"type":"integer","description":"Gets or sets the discount amount.","format":"int64"},"discount_only_required_tags_or_products":{"type":"boolean","description":"Gets or sets a value indicating whether the discount only applies to specific tags or products."},"discount_apply_before_sales":{"type":"boolean","description":"Gets or sets a value indicating whether the discount is applied before any existing sales or discounts."},"required_tag_ids":{"type":"array","items":{"$ref":"#/components/schemas/FlakeId"},"description":"Gets or sets the list of tag IDs required for the discount to apply."},"required_product_ids":{"type":"array","items":{"$ref":"#/components/schemas/FlakeId"},"description":"Gets or sets the list of product IDs required for the discount to apply."},"minimum_order_value":{"type":"integer","description":"Gets or sets the minimum order value required for the discount to be applied.","format":"int64"},"customer_redeem_limit_enabled":{"type":"boolean","description":"Gets or sets a value indicating whether a customer-specific redeem limit is enabled."},"customer_redeem_limit":{"type":"integer","description":"Gets or sets the maximum number of times a single customer can redeem the coupon.","format":"int64"},"usable_on_one_time_purchases":{"type":"boolean","description":"Gets or sets a value indicating whether the coupon can be used on one-time purchases."},"usable_on_subscriptions":{"type":"boolean","description":"Gets or sets a value indicating whether the coupon can be used on subscription purchases."},"expires_after":{"$ref":"#/components/schemas/Period"}},"additionalProperties":false,"description":"Represents the configuration settings for a coupon applied to marketing features."},"CouponDurationEnum":{"enum":["once","forever","repeating"],"type":"string","description":"Defines the duration for which a coupon remains valid."},"CouponDiscountTypeEnum":{"enum":["unspecified","percent","amount"],"type":"string","description":"Specifies the type of discount applied by a coupon."},"PurchaseFollowUpStoreConfigurationCommandDto":{"required":["command","id","online_only","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"command":{"type":"string","description":"The command to execute."},"online_only":{"type":"boolean","description":"Indicates if the command should be executed if the player is online."}},"additionalProperties":false,"description":"Represents a command associated with the store-level purchase follow uo configuration."},"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"},"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."}}},"paths":{"/v1/stores/{storeId}/marketing/purchase-follow-ups/configuration":{"get":{"tags":["marketing"],"summary":"Gets the purchase follow up behaviour for a store","operationId":"StorePurchaseFollowUps_GetStorePurchaseFollowUpConfigurationOptions","parameters":[{"name":"storeId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/FlakeId"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseFollowUpStoreConfigurationDto"}}}},"default":{"description":"Error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayNowError"}}}}}}}}}
```

## PUT /v1/stores/{storeId}/marketing/purchase-follow-ups/configuration

> Sets the purchase follow up behaviour for a store

```json
{"openapi":"3.1.1","info":{"title":"PayNow Management API","version":"v1"},"tags":[{"name":"marketing"}],"security":[{"APIKey":[]}],"components":{"securitySchemes":{"APIKey":{"type":"apiKey","description":"An API Key token generated in the Dashboard in the format 'APIKey TOKEN_HERE'.","name":"Authorization","in":"header"}},"schemas":{"FlakeId":{"type":"string","additionalProperties":false,"format":"flake-id"},"PurchaseFollowUpStoreConfigurationUpdateDto":{"required":["commands","coupon_configuration","enabled","minimum_order_value","trigger_after"],"type":"object","properties":{"enabled":{"type":"boolean","description":"A value indicating whether the abandoned checkout feature is enabled for the store."},"trigger_after":{"$ref":"#/components/schemas/Period"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to trigger an abandoned checkout email.","format":"int64"},"maximum_order_value":{"type":["null","integer"],"description":"The optional maximum order value beyond which an abandoned checkout email will not be sent.","format":"int64"},"max_coupons_per_customer_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit per customer beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_per_customer_period":{"$ref":"#/components/schemas/Period"},"max_coupons_global_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit store wide beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_global_period":{"$ref":"#/components/schemas/Period"},"commands":{"type":"array","items":{"$ref":"#/components/schemas/PurchaseFollowUpStoreConfigurationUpdateCommandDto"}},"coupon_configuration":{"$ref":"#/components/schemas/MarketingCouponConfigurationDto"}},"additionalProperties":false,"description":"Used for updating the store-level configuration for abandoned checkout settings."},"Period":{"type":"string","additionalProperties":false,"description":"ISO 8601 duration format","format":"period"},"PurchaseFollowUpStoreConfigurationUpdateCommandDto":{"required":["command","online_only"],"type":"object","properties":{"command":{"type":"string","description":"The command to execute."},"online_only":{"type":"boolean","description":"Indicates if the command should be executed if the player is online."}},"additionalProperties":false,"description":"Represents a command associated with the store-level purchase follow uo configuration."},"MarketingCouponConfigurationDto":{"required":["customer_redeem_limit","customer_redeem_limit_enabled","discount_amount","discount_apply_before_sales","discount_only_required_tags_or_products","discount_type","duration","minimum_order_value","required_product_ids","required_tag_ids","usable_on_one_time_purchases","usable_on_subscriptions"],"type":"object","properties":{"duration":{"$ref":"#/components/schemas/CouponDurationEnum"},"duration_in_months":{"type":["null","integer"],"description":"Gets or sets the duration of the coupon in months, applicable only for repeating coupons.","format":"int32"},"discount_type":{"$ref":"#/components/schemas/CouponDiscountTypeEnum"},"discount_amount":{"type":"integer","description":"Gets or sets the discount amount.","format":"int64"},"discount_only_required_tags_or_products":{"type":"boolean","description":"Gets or sets a value indicating whether the discount only applies to specific tags or products."},"discount_apply_before_sales":{"type":"boolean","description":"Gets or sets a value indicating whether the discount is applied before any existing sales or discounts."},"required_tag_ids":{"type":"array","items":{"$ref":"#/components/schemas/FlakeId"},"description":"Gets or sets the list of tag IDs required for the discount to apply."},"required_product_ids":{"type":"array","items":{"$ref":"#/components/schemas/FlakeId"},"description":"Gets or sets the list of product IDs required for the discount to apply."},"minimum_order_value":{"type":"integer","description":"Gets or sets the minimum order value required for the discount to be applied.","format":"int64"},"customer_redeem_limit_enabled":{"type":"boolean","description":"Gets or sets a value indicating whether a customer-specific redeem limit is enabled."},"customer_redeem_limit":{"type":"integer","description":"Gets or sets the maximum number of times a single customer can redeem the coupon.","format":"int64"},"usable_on_one_time_purchases":{"type":"boolean","description":"Gets or sets a value indicating whether the coupon can be used on one-time purchases."},"usable_on_subscriptions":{"type":"boolean","description":"Gets or sets a value indicating whether the coupon can be used on subscription purchases."},"expires_after":{"$ref":"#/components/schemas/Period"}},"additionalProperties":false,"description":"Represents the configuration settings for a coupon applied to marketing features."},"CouponDurationEnum":{"enum":["once","forever","repeating"],"type":"string","description":"Defines the duration for which a coupon remains valid."},"CouponDiscountTypeEnum":{"enum":["unspecified","percent","amount"],"type":"string","description":"Specifies the type of discount applied by a coupon."},"PurchaseFollowUpStoreConfigurationDto":{"required":["commands","coupon_configuration","enabled","invalid","minimum_order_value","store_id","trigger_after","updated_at","updated_by"],"type":"object","properties":{"store_id":{"$ref":"#/components/schemas/FlakeId"},"enabled":{"type":"boolean","description":"A value indicating whether the abandoned checkout feature is enabled for the store."},"invalid":{"type":"boolean","description":"A value indicating whether the abandoned checkout configuration for the store is invalid."},"trigger_after":{"$ref":"#/components/schemas/Period"},"minimum_order_value":{"type":"integer","description":"The minimum order value required to trigger an abandoned checkout email.","format":"int64"},"maximum_order_value":{"type":["null","integer"],"description":"The optional maximum order value beyond which an abandoned checkout email will not be sent.","format":"int64"},"max_coupons_per_customer_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit per customer beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_per_customer_period":{"$ref":"#/components/schemas/Period"},"max_coupons_global_amount":{"type":["null","integer"],"description":"The optional maximum coupons limit store wide beyond which an abandoned checkout email will not be sent.","format":"int32"},"max_coupons_global_period":{"$ref":"#/components/schemas/Period"},"coupon_configuration":{"$ref":"#/components/schemas/MarketingCouponConfigurationDto"},"commands":{"type":"array","items":{"$ref":"#/components/schemas/PurchaseFollowUpStoreConfigurationCommandDto"},"description":"The commands you want to execute when the email is sent."},"updated_by":{"$ref":"#/components/schemas/ActorDto"},"updated_at":{"type":"string","description":"The date and time when the configuration was last updated.","format":"date-time"}},"additionalProperties":false,"description":"Represents the store-level configuration for abandoned checkout settings."},"PurchaseFollowUpStoreConfigurationCommandDto":{"required":["command","id","online_only","store_id"],"type":"object","properties":{"id":{"$ref":"#/components/schemas/FlakeId"},"store_id":{"$ref":"#/components/schemas/FlakeId"},"command":{"type":"string","description":"The command to execute."},"online_only":{"type":"boolean","description":"Indicates if the command should be executed if the player is online."}},"additionalProperties":false,"description":"Represents a command associated with the store-level purchase follow uo configuration."},"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"},"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."}}},"paths":{"/v1/stores/{storeId}/marketing/purchase-follow-ups/configuration":{"put":{"tags":["marketing"],"summary":"Sets the purchase follow up behaviour for a store","operationId":"StorePurchaseFollowUps_SetStorePurchaseFollowUpConfigurationOptions","parameters":[{"name":"storeId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/FlakeId"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseFollowUpStoreConfigurationUpdateDto"}},"text/json":{"schema":{"$ref":"#/components/schemas/PurchaseFollowUpStoreConfigurationUpdateDto"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/PurchaseFollowUpStoreConfigurationUpdateDto"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseFollowUpStoreConfigurationDto"}}}},"204":{"description":"No Content"},"default":{"description":"Error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayNowError"}}}}}}}}}
```


---

# 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/management/management-api/marketing.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.
