Appcharge Store Refresh Popups API

The Store Refresh Popups API from Appcharge — 2 operation(s) for store refresh popups.

OpenAPI Specification

appcharge-store-refresh-popups-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Appcharge Assets Store Refresh Popups API
  version: 1.0.0
  description: Appcharge is a monetization platform for mobile games, providing a direct-to-consumer (D2C) web store, mobile Checkout SDK, and Payment Links so publishers can sell in-game offers outside the app stores. This API covers checkout sessions, refunds, coupons and promo codes, price localization, financial and analytics reporting, web store offers (bundles, daily bonuses, rolling/special offers, progress bars, reward calendars, triggered popups), offer components (products, badges, offer designs), game-portal content, media assets, translations, and player personalization/authentication callbacks. Authentication uses the x-publisher-token header; webhooks are signed with an HMAC-SHA256 signature.
  contact:
    name: Appcharge Developer Support
    url: https://docs.appcharge.com/
  x-apievangelist-source: https://docs.appcharge.com/api-reference (Mintlify embedded OpenAPI fragments)
  x-apievangelist-method: searched
  x-apievangelist-generated: '2026-07-17'
servers:
- url: https://api.appcharge.com
  description: Production
- url: https://api-sandbox.appcharge.com
  description: Sandbox
tags:
- name: Store Refresh Popups
paths:
  /v2/offer:
    post:
      tags:
      - Store Refresh Popups
      summary: Create a new Store Refresh Popup
      description: Creates a Store Refresh popup offer. Triggered when a player refreshes the web store.
      operationId: createStoreRefreshPopup
      parameters:
      - name: x-publisher-token
        in: header
        required: true
        description: Publisher token used for authentication.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateStoreRefreshPopupDto'
      responses:
        '201':
          description: Store refresh popup created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreRefreshPopupDtoResponse'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized.
  /v2/offer/{publisherOfferId}:
    put:
      tags:
      - Store Refresh Popups
      summary: Update an existing Store Refresh Popup
      description: Updates a Store Refresh popup offer.
      operationId: updateStoreRefreshPopup
      parameters:
      - name: publisherOfferId
        in: path
        required: true
        description: Store Refresh Popup ID. This is the offer's **External ID** value in the Publisher Dashboard.
        schema:
          type: string
      - name: x-publisher-token
        in: header
        required: true
        description: Publisher token used for authentication.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateStoreRefreshPopupDto'
      responses:
        '200':
          description: Store refresh popup updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreRefreshPopupDtoResponse'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized.
components:
  schemas:
    UpdateStoreRefreshPopupDto:
      type: object
      required:
      - type
      properties:
        name:
          type: string
          description: Store Refresh Popup name. Must be at least 3 characters.
          example: Store Refresh Offer 1
        displayName:
          type: string
          description: Store Refresh Popup display name. If not provided, the name will be used.
          example: Limited time deal
        description:
          type: string
          description: Store Refresh Popup description.
          example: Shown periodically when the store refreshes.
        type:
          type: string
          description: Offer type - In this case 'PopUp'.
          enum:
          - PopUp
          default: PopUp
          example: PopUp
        subType:
          type: string
          description: Offer sub type - In this case 'StoreRefresh'.
          enum:
          - StoreRefresh
          default: StoreRefresh
          example: StoreRefresh
        active:
          type: boolean
          description: Whether the Store Refresh Popup is active.
          example: true
        priority:
          type: integer
          description: Priority level of the Store Refresh Popup. The priority starts from 1, where 1 is the highest priority.
          example: 5
        offerUiId:
          type: string
          description: Offer Design ID generated by Appcharge. This is the design's **ID** value in the Publisher Dashboard. Required if `offerExternalUiId` is not provided.
          example: 68b41c5aa1c5b1a284737e9b
        offerExternalUiId:
          type: string
          description: Offer Design ID. This is the design's **External ID** value in the Publisher Dashboard. Required if `offerUiId` is not provided.
          example: Real_Store_Refresh
        segments:
          type: array
          description: List of player segments that this Store Refresh Popup applies to.
          example:
          - vip_players
          items:
            type: string
        productsSequence:
          $ref: '#/components/schemas/StoreRefreshProductsSequence'
        displayRule:
          $ref: '#/components/schemas/StoreRefreshDisplayRule'
        schedule:
          $ref: '#/components/schemas/Schedule'
        productSale:
          $ref: '#/components/schemas/ProductSale'
        priceDiscount:
          $ref: '#/components/schemas/PriceDiscount'
        badges:
          $ref: '#/components/schemas/Badges'
        publisherSectionId:
          type: string
          description: The publisher section ID.
        publisherTabId:
          type: string
          description: Tab ID in the web store.
      example:
        type: PopUp
        subType: StoreRefresh
        active: true
        name: Store Refresh Offer
        displayName: Limited time deal
        description: Shown periodically when the store refreshes
        segments: []
        productsSequence:
        - index: 1
          products:
          - publisherProductId: green_diamond
            quantity: 1
            priority: Main
          - publisherProductId: pink_diamond
            quantity: 2
            priority: Main
          priceInUsdCents: 0
          playerAvailability: 10
          hidePlayerAvailability: true
        priority: 5
        offerExternalUiId: Real_Store_Refresh
        displayRule:
          frequency: 3
          cooldownInMinutes: 1
        schedule:
          permanent: false
          timeFrames:
          - startTime: '2026-05-02T00:00:00.000Z'
            endTime: '2026-05-04T23:59:59.000Z'
            notes: Initial weekend rollout
          - startTime: '2026-05-10T00:00:00.000Z'
            endTime: '2026-05-12T23:59:59.000Z'
        productSale:
          sale: 30
          type: percentage
        priceDiscount:
          discount: 25
          type: percentage
        badges:
        - publisherBadgeId: best_value
    ProductSale:
      type: object
      description: Sale details for the product quantity. The sale will only be applied on the first product.
      properties:
        sale:
          type: integer
          description: Sale amount.
          example: 30
        type:
          type: string
          description: Sale type.
          default: percentage
          enum:
          - percentage
          example: percentage
    Badges:
      type: array
      description: List of badges associated with the Store Refresh Popup.
      example:
      - publisherBadgeId: best_value
      items:
        type: object
        properties:
          publisherBadgeId:
            type: string
            description: Badge ID.
            example: best_value
        required:
        - publisherBadgeId
    Schedule:
      type: object
      required:
      - timeFrames
      - permanent
      description: Schedule for when the Store Refresh Popup is available.
      properties:
        permanent:
          type: boolean
          description: Whether the Store Refresh Popup is permanent.
          example: false
        timeFrames:
          type: array
          description: Time frame for the scheduled popup. Leave blank if permanent is set to true. If permanent is false, at least 1 time frame is required. When specifying multiple timeFrames, the startTime and endTime of each must not overlap.
          items:
            type: object
            required:
            - startTime
            - endTime
            properties:
              startTime:
                type: string
                description: Scheduled popup start time.
                format: date-time
                example: '2026-05-02T00:00:00.000Z'
              endTime:
                type: string
                description: Scheduled popup end time. Can't be a past date.
                format: date-time
                example: '2026-05-04T23:59:59.000Z'
              notes:
                type: string
                description: Notes about the scheduled popup.
                example: Initial weekend rollout
    StoreRefreshProductsSequence:
      type: array
      description: Sequence of products included in the Store Refresh Popup.
      items:
        type: object
        properties:
          index:
            type: integer
            description: Order of the product sequence in the Store Refresh Popup.
            example: 1
          products:
            type: array
            description: List of products in the Store Refresh Popup.
            items:
              type: object
              required:
              - publisherProductId
              - quantity
              - priority
              properties:
                publisherProductId:
                  type: string
                  description: Product ID.
                  example: green_diamond
                quantity:
                  type: integer
                  description: Product quantity in the Store Refresh Popup.
                  example: 1
                priority:
                  type: string
                  description: Specifies the display priority of a product within the Store Refresh Popup.
                  enum:
                  - Main
                  - Sub
                  example: Main
          priceInUsdCents:
            type: integer
            description: Product sequence price in cents. The value must be either 0 (free), or have a minimum 80 cents.
            example: 99
          playerAvailability:
            type: number
            description: Amount of times the player can purchase the Store Refresh Popup. Must be a minimum of 1.
            example: 10
          hidePlayerAvailability:
            type: boolean
            description: Whether to hide the availability text based on the `playerAvailability` property value in the web store. If `false`, and if `playerAvailability` is set to `5`, the web store displays `Available 5/5`. When a player purchases the offer, the displayed availability decreases, for example to `Available 4/5`. Set to `true` to hide the availability text in the UI.
            default: false
            example: true
        required:
        - index
        - products
        - priceInUsdCents
    ErrorResponse:
      type: object
      properties:
        errorCode:
          type: integer
          format: int32
          description: Error code indicating the type of failure.
          default: 0
        errorMessage:
          type: string
          description: Detailed message describing the error.
    PriceDiscount:
      type: object
      description: Price discount applied to the Store Refresh Popup. Relevant only for paid offers.
      properties:
        discount:
          type: integer
          description: Discount amount.
          example: 25
        type:
          type: string
          description: Discount type.
          default: percentage
          enum:
          - percentage
          example: percentage
    CreateStoreRefreshPopupDto:
      type: object
      required:
      - publisherOfferId
      - name
      - type
      - subType
      - active
      - segments
      - productsSequence
      - priority
      - displayRule
      properties:
        publisherOfferId:
          type: string
          description: Store Refresh Popup ID. This is the offer's **External ID** value in the Publisher Dashboard.
          example: store-refresh-offer-1
        name:
          type: string
          description: Store Refresh Popup name. Must be at least 3 characters.
          example: Store Refresh Offer 1
        displayName:
          type: string
          description: Store Refresh Popup display name. If not provided, the name will be used.
          example: Limited time deal
        description:
          type: string
          description: Store Refresh Popup description.
          example: Shown periodically when the store refreshes.
        type:
          type: string
          description: Offer type - In this case 'PopUp'.
          enum:
          - PopUp
          default: PopUp
          example: PopUp
        subType:
          type: string
          description: Offer sub type - In this case 'StoreRefresh'.
          enum:
          - StoreRefresh
          default: StoreRefresh
          example: StoreRefresh
        active:
          type: boolean
          description: Whether the Store Refresh Popup is active.
          example: true
        priority:
          type: integer
          description: Priority level of the Store Refresh Popup. The priority starts from 1, where 1 is the highest priority.
          example: 5
        offerUiId:
          type: string
          description: Offer Design ID generated by Appcharge. This is the design's **ID** value in the Publisher Dashboard. Required if `offerExternalUiId` is not provided.
          example: 68b41c5aa1c5b1a284737e9b
        offerExternalUiId:
          type: string
          description: Offer Design ID. This is the design's **External ID** value in the Publisher Dashboard. Required if `offerUiId` is not provided.
          example: Real_Store_Refresh
        segments:
          type: array
          description: List of player segments that this Store Refresh Popup applies to.
          example:
          - vip_players
          items:
            type: string
        productsSequence:
          $ref: '#/components/schemas/StoreRefreshProductsSequence'
        displayRule:
          $ref: '#/components/schemas/StoreRefreshDisplayRule'
        schedule:
          $ref: '#/components/schemas/Schedule'
        productSale:
          $ref: '#/components/schemas/ProductSale'
        priceDiscount:
          $ref: '#/components/schemas/PriceDiscount'
        badges:
          $ref: '#/components/schemas/Badges'
        publisherSectionId:
          type: string
          description: The publisher section ID.
        publisherTabId:
          type: string
          description: Tab ID in the web store.
      example:
        type: PopUp
        subType: StoreRefresh
        active: true
        publisherOfferId: store-refresh-offer
        name: Store Refresh Offer
        displayName: Limited time deal
        description: Shown periodically when the store refreshes
        segments: []
        productsSequence:
        - index: 1
          products:
          - publisherProductId: green_diamond
            quantity: 1
            priority: Main
          - publisherProductId: pink_diamond
            quantity: 2
            priority: Main
          priceInUsdCents: 0
          playerAvailability: 10
          hidePlayerAvailability: true
        priority: 5
        offerExternalUiId: Real_Store_Refresh
        displayRule:
          frequency: 3
          cooldownInMinutes: 1
        schedule:
          permanent: false
          timeFrames:
          - startTime: '2026-05-02T00:00:00.000Z'
            endTime: '2026-05-04T23:59:59.000Z'
            notes: Initial weekend rollout
          - startTime: '2026-05-10T00:00:00.000Z'
            endTime: '2026-05-12T23:59:59.000Z'
        productSale:
          sale: 30
          type: percentage
        priceDiscount:
          discount: 25
          type: percentage
        badges:
        - publisherBadgeId: best_value
    StoreRefreshPopupDtoResponse:
      type: object
      properties:
        publisherId:
          type: string
          description: Publisher ID.
        offerId:
          type: string
          description: Store Refresh Popup ID.
        publisherOfferId:
          type: string
          description: Store Refresh Popup ID provided by the publisher. This is the offer's **External ID** value in the Publisher Dashboard.
        name:
          type: string
          description: Store Refresh Popup name.
        displayName:
          type: string
          description: Store Refresh Popup display name. If not provided, the name will be used.
        description:
          type: string
          description: Store Refresh Popup description.
        type:
          type: string
          description: Offer type.
        subType:
          type: string
          description: Offer sub type - In this case 'StoreRefresh'.
        active:
          type: boolean
          description: Whether the Store Refresh Popup is active.
        priority:
          type: integer
          description: Priority level of the Store Refresh Popup.
        offerUi:
          type: object
          description: UI configuration for the Store Refresh Popup.
          properties:
            offerUiId:
              type: string
              description: Offer Design ID generated by Appcharge. This is the design's **ID** value in the Publisher Dashboard.
              example: 68b41c5aa1c5b1a284737e9b
            offerExternalUiId:
              type: string
              description: Offer Design ID. This is the design's **External ID** value in the Publisher Dashboard.
              example: Real_Store_Refresh
            active:
              type: boolean
              description: Whether the Store Refresh Popup design is active.
            offerUiType:
              type: string
              description: Offer design type.
            name:
              type: string
              description: Store Refresh Popup design name, as configured in the Publisher Dashboard.
            description:
              type: string
              description: Store Refresh Popup design description, as configured in the Publisher Dashboard.
        segments:
          type: array
          description: List of player segments that this Store Refresh Popup applies to.
          items:
            type: string
        productsSequence:
          $ref: '#/components/schemas/StoreRefreshProductsSequence'
        displayRule:
          $ref: '#/components/schemas/StoreRefreshDisplayRule'
        schedule:
          $ref: '#/components/schemas/Schedule'
        productSale:
          $ref: '#/components/schemas/ProductSale'
        priceDiscount:
          $ref: '#/components/schemas/PriceDiscount'
        badges:
          $ref: '#/components/schemas/Badges'
        createdAt:
          type: string
          description: Date the Store Refresh Popup was created.
          format: date-time
        updatedAt:
          type: string
          description: Date the Store Refresh Popup was updated.
          format: date-time
    StoreRefreshDisplayRule:
      type: object
      required:
      - frequency
      - cooldownInMinutes
      description: Rules that control how often the Store Refresh Popup is displayed.
      properties:
        frequency:
          type: integer
          description: Number of store refreshes required before the popup is displayed.
          example: 3
        cooldownInMinutes:
          type: integer
          description: Number of minutes that must pass before the popup can be shown again.
          example: 1
  securitySchemes:
    PublisherTokenAuth:
      type: apiKey
      in: header
      name: x-publisher-token
      description: Publisher token, as displayed in the Publisher Dashboard.