> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appcharge.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Reward Calendar

> Updates a Reward Calendar offer.

<RequestExample>
  ```bash Update Reward Calendar theme={"system"}
  curl -X PUT \
    'https://api.appcharge.com/v2/offer/reward-calendar-1' \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'x-publisher-token: <x-publisher-token>' \
    -d '{
      "name": "Updated Weekly Reward Calendar",
      "type": "PopUp",
      "subType": "RewardCalendar",
      "active": true,
      "startOver": false,
      "rewardCalendar": {
        "resetBehavior": "ToCurrentWeekStart",
        "popupTrigger": "ShowOnBadgeClick",
        "rewardCollectionBehavior": "PlayerCanSkipCollection"
      }
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json Update Reward Calendar theme={"system"}
  {
    "offerId": "69fb22e6dd352b799c65e97f",
    "publisherOfferId": "reward-calendar-1",
    "name": "Updated Weekly Reward Calendar",
    "type": "PopUp",
    "subType": "RewardCalendar",
    "active": true,
    "priority": 1,
    "startOver": false,
    "rewardCalendar": {
      "resetBehavior": "ToCurrentWeekStart",
      "popupTrigger": "ShowOnBadgeClick",
      "rewardCollectionBehavior": "PlayerCanSkipCollection"
    },
    "offerUi": {
      "offerUiId": "69fb22e6dd352b799c65e97e",
      "active": true,
      "offerUiType": "PopUp",
      "offerUiSubType": "RewardCalendar",
      "name": "Weekly Reward Calendar Design",
      "externalId": "reward-calendar-design-1"
    },
    "productsSequence": [
      {
        "index": 1,
        "products": [
          {
            "publisherProductId": "coins",
            "quantity": 100,
            "priority": "Sub"
          }
        ],
        "priceInUsdCents": 0
      },
      {
        "index": 7,
        "products": [
          {
            "publisherProductId": "chest",
            "quantity": 1,
            "priority": "Main"
          }
        ],
        "priceInUsdCents": 0
      }
    ],
    "segments": [
      "New User"
    ],
    "createdAt": "2026-06-08T10:00:44.528Z",
    "updatedAt": "2026-06-08T10:15:44.528Z"
  }
  ```
</ResponseExample>


## OpenAPI

````yaml openapi-reward-calendar.json PUT /v2/offer/${publisherOfferId}
openapi: 3.0.1
info:
  title: Reward Calendars API
  description: API service for managing Reward Calendar offers.
  version: '1.0'
servers:
  - url: https://api.appcharge.com
security: []
paths:
  /v2/offer/${publisherOfferId}:
    put:
      tags:
        - Reward Calendar Offers
      summary: Update Reward Calendar
      description: Updates a Reward Calendar offer.
      operationId: updateRewardCalendarOffer
      parameters:
        - name: publisherOfferId
          in: path
          required: true
          description: >-
            Reward Calendar offer ID provided by the publisher. 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/UpdateRewardCalendarOfferDto'
      responses:
        '200':
          description: Reward Calendar offer updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RewardCalendarOfferResponse'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
components:
  schemas:
    UpdateRewardCalendarOfferDto:
      type: object
      required:
        - type
      properties:
        name:
          type: string
          description: Reward Calendar offer name.
          example: Updated Weekly Reward Calendar
        type:
          type: string
          description: Offer type. For Reward Calendars, use `PopUp`.
          enum:
            - PopUp
          example: PopUp
        subType:
          type: string
          description: Popup offer subtype. For Reward Calendars, use `RewardCalendar`.
          enum:
            - RewardCalendar
          example: RewardCalendar
        active:
          type: boolean
          description: Whether the Reward Calendar offer is active.
          example: true
        priority:
          type: integer
          description: >-
            Display priority for eligible popup offers. Lower numbers appear
            first.
          minimum: 1
          example: 1
        offerUiId:
          type: string
          description: Internal ID of the Reward Calendar offer design.
          example: 69fb22e6dd352b799c65e97e
        offerExternalUiId:
          type: string
          description: External ID of the Reward Calendar offer design.
          example: reward-calendar-design-1
        startOver:
          type: boolean
          description: >-
            Whether the Reward Calendar restarts from Week 1 after the player
            completes all configured weeks.
          default: true
          example: false
        rewardCalendar:
          description: Information about the Reward Calendar behavior configuration.
          allOf:
            - $ref: '#/components/schemas/RewardCalendarBehavior'
        productsSequence:
          type: array
          description: >-
            A list of reward tiles. The array length must be a multiple of
            seven, with one to 10 configured weeks.
          minItems: 7
          maxItems: 70
          items:
            $ref: '#/components/schemas/RewardCalendarProductSequenceItem'
        segments:
          type: array
          description: A list of segments eligible for this offer.
          items:
            type: string
          example:
            - New User
    RewardCalendarOfferResponse:
      allOf:
        - $ref: '#/components/schemas/RewardCalendarOfferResponseBase'
        - type: object
          properties:
            offerId:
              type: string
              description: Internal offer ID.
              example: 69fb22e6dd352b799c65e97f
            createdAt:
              type: string
              format: date-time
              description: Date the Reward Calendar offer was created.
              example: '2026-06-11T05:09:03.575Z'
            updatedAt:
              type: string
              format: date-time
              description: Date the Reward Calendar offer was updated.
              example: '2026-06-11T05:09:03.575Z'
    RewardCalendarBehavior:
      type: object
      description: Information about the Reward Calendar behavior configuration.
      required:
        - resetBehavior
        - popupTrigger
        - rewardCollectionBehavior
      properties:
        resetBehavior:
          type: string
          description: Controls how player progress resets after a missed day.
          enum:
            - ToCalendarStart
            - ToCurrentWeekStart
          example: ToCalendarStart
        popupTrigger:
          type: string
          description: Controls how the Reward Calendar popup opens.
          enum:
            - ShowAutomatically
            - ShowOnBadgeClick
          example: ShowAutomatically
        rewardCollectionBehavior:
          type: string
          description: >-
            Controls whether players must collect a reward immediately or can
            collect it later that day. If you pass `ForcePlayerToCollect`, the
            collectible badge is not shown.
          enum:
            - ForcePlayerToCollect
            - PlayerCanSkipCollection
          example: ForcePlayerToCollect
    RewardCalendarProductSequenceItem:
      type: object
      description: Information about a Reward Calendar reward tile.
      required:
        - index
        - products
        - priceInUsdCents
      properties:
        index:
          type: integer
          description: >-
            Reward tile index. Indexes 1 to 7 define Week 1, indexes 8 to 14
            define Week 2, and so on. The main reward is every seventh index,
            such as 7, 14, and 21.
          minimum: 1
          maximum: 70
          example: 1
        products:
          type: array
          description: A list of products included in this reward tile.
          minItems: 1
          items:
            $ref: '#/components/schemas/RewardCalendarProduct'
        priceInUsdCents:
          type: integer
          description: >-
            Required for schema compatibility. Reward Calendar rewards are
            always free, so set this value to `0`. The reward remains free even
            if you pass a non-zero value.
          example: 0
    RewardCalendarOfferResponseBase:
      type: object
      properties:
        publisherId:
          type: string
          description: Internal publisher ID.
          example: 69133d595af23405d88843a5
        publisherOfferId:
          type: string
          description: >-
            Reward Calendar offer ID provided by the publisher. This is the
            offer's **External ID** value in the Publisher Dashboard.
          example: reward-calendar-1
        name:
          type: string
          description: Reward Calendar offer name.
          example: Weekly Reward Calendar
        displayName:
          type: string
          description: Reward Calendar offer display name.
          example: Weekly Reward Calendar
        type:
          type: string
          description: Offer type. For Reward Calendars, use `PopUp`.
          enum:
            - PopUp
          example: PopUp
        subType:
          type: string
          description: Popup offer subtype. For Reward Calendars, use `RewardCalendar`.
          enum:
            - RewardCalendar
          example: RewardCalendar
        active:
          type: boolean
          description: Whether the Reward Calendar offer is active.
          example: true
        priority:
          type: integer
          description: >-
            Display priority for eligible popup offers. Lower numbers appear
            first.
          minimum: 1
          example: 1
        startOver:
          type: boolean
          description: >-
            Whether the Reward Calendar restarts from Week 1 after the player
            completes all configured weeks.
          example: true
        rewardCalendar:
          description: Information about the Reward Calendar behavior configuration.
          allOf:
            - $ref: '#/components/schemas/RewardCalendarBehaviorResponse'
        offerUi:
          $ref: '#/components/schemas/RewardCalendarOfferUiResponse'
        productsSequence:
          type: array
          description: >-
            A list of reward tiles. The array length must be a multiple of
            seven, with one to 10 configured weeks.
          minItems: 7
          maxItems: 70
          items:
            $ref: '#/components/schemas/RewardCalendarProductSequenceItemResponse'
        segments:
          type: array
          description: A list of segments eligible for this offer.
          items:
            type: string
          example:
            - New User
        badges:
          type: array
          description: Badges attached to the offer.
          items:
            type: object
            additionalProperties: true
    RewardCalendarProduct:
      type: object
      description: Information about a product included in a Reward Calendar reward tile.
      required:
        - publisherProductId
        - quantity
        - priority
      properties:
        publisherProductId:
          type: string
          description: Product ID provided by the publisher.
          example: coins
        quantity:
          oneOf:
            - type: integer
            - type: string
          description: Number of units included in the reward.
          example: 100
        priority:
          type: string
          description: Product display priority.
          enum:
            - Sub
            - Main
          example: Sub
    RewardCalendarBehaviorResponse:
      type: object
      description: Information about the Reward Calendar behavior configuration.
      properties:
        resetBehavior:
          type: string
          description: Controls how player progress resets after a missed day.
          enum:
            - ToCalendarStart
            - ToCurrentWeekStart
          example: ToCalendarStart
        popupTrigger:
          type: string
          description: Controls how the Reward Calendar popup opens.
          enum:
            - ShowAutomatically
            - ShowOnBadgeClick
          example: ShowAutomatically
        rewardCollectionBehavior:
          type: string
          description: >-
            Controls whether players must collect a reward immediately or can
            collect it later that day. If `rewardCollectionBehavior` is
            `ForcePlayerToCollect`, the collectible badge is not shown.
          enum:
            - ForcePlayerToCollect
            - PlayerCanSkipCollection
          example: ForcePlayerToCollect
    RewardCalendarOfferUiResponse:
      type: object
      description: Reward Calendar offer design details returned with the offer.
      properties:
        offerUiId:
          type: string
          description: Internal ID of the Reward Calendar offer design.
          example: 6a1828e5e75e5598d942e257
        active:
          type: boolean
          description: Whether the offer design is active.
          example: true
        offerUiType:
          type: string
          enum:
            - PopUp
          description: Type of offer design.
          example: PopUp
        offerUiSubType:
          type: string
          enum:
            - RewardCalendar
          description: Offer design subtype.
          example: RewardCalendar
        name:
          type: string
          description: Offer design name.
          example: Weekly Reward Calendar Design
        description:
          type: string
          description: Offer design description.
          example: description
        backgroundImage:
          type: string
          description: Background image URL returned for the offer design.
          example: ''
        rewardCalendar:
          $ref: '#/components/schemas/RewardCalendarOfferUiDesignResponse'
        externalId:
          type: string
          description: External ID of the Reward Calendar offer design.
          example: reward-calendar-design-1
    RewardCalendarProductSequenceItemResponse:
      type: object
      description: Information about a Reward Calendar reward tile.
      required:
        - priceInUsdCents
      properties:
        index:
          type: integer
          description: >-
            Reward tile index. Indexes 1 to 7 define Week 1, indexes 8 to 14
            define Week 2, and so on. The main reward is every seventh index,
            such as 7, 14, and 21.
          minimum: 1
          maximum: 70
          example: 1
        products:
          type: array
          description: A list of products included in this reward tile.
          minItems: 1
          items:
            $ref: '#/components/schemas/RewardCalendarProductResponse'
        priceInUsdCents:
          type: integer
          description: >-
            Required for schema compatibility. Reward Calendar rewards are
            always free, so set this value to `0`. The reward remains free even
            if you pass a non-zero value.
          example: 0
        badges:
          type: array
          description: Badges attached to this reward tile.
          items:
            type: object
            additionalProperties: true
    RewardCalendarOfferUiDesignResponse:
      type: object
      description: Reward Calendar offer design configuration.
      properties:
        collectibleBadgeImage:
          type: string
          description: >-
            Collectible badge image URL. This badge is not shown when
            `rewardCollectionBehavior` is `ForcePlayerToCollect`.
          example: >-
            https://media.appcharge.com/defaults/reward-calendar/reward_badge.png
        lockedBadgeImage:
          type: string
          description: Locked badge image URL.
          example: >-
            https://media.appcharge.com/defaults/reward-calendar/reward_badge_locked.png
        dayFontColor:
          type: string
          description: Day number font color.
          example: '#764cd4'
        subRewardBackgroundImage:
          type: string
          description: Background image URL for reward tiles on Days 1-6.
          example: >-
            https://media-staging.appcharge.com/media/69133d595af23405d88843a5/1779967290083__9f0c1502-10e0-4b75-a670-3748c2ebbdf1
        mainRewardBackgroundImage:
          type: string
          description: Background image URL for the Day 7 reward tile.
          example: ''
        backgroundColor:
          type: string
          description: Reward Calendar background color.
          example: '#97daf4'
        headerImage:
          type: string
          description: Header image URL.
          example: >-
            https://media-staging.appcharge.com/media/69133d595af23405d88843a5/1779966861904__a16963b5-db9b-45de-b5c5-cdcc7dcf79f3
        collectIconImage:
          type: string
          description: Icon image URL displayed after a player collects a reward.
          example: >-
            https://media.appcharge.com/defaults/reward-calendar/default_collected_icon.png
        lockedIconImage:
          type: string
          description: Icon image URL displayed on rewards that are not available yet.
          example: >-
            https://media.appcharge.com/defaults/reward-calendar/default_lock_icon.png
    RewardCalendarProductResponse:
      type: object
      description: Information about a product included in a Reward Calendar reward tile.
      properties:
        product:
          $ref: '#/components/schemas/RewardCalendarProductDetailsResponse'
        publisherProductId:
          type: string
          description: Product ID provided by the publisher.
          example: coins
        quantity:
          oneOf:
            - type: integer
            - type: string
          description: Number of units included in the reward.
          example: 100
        priority:
          type: string
          description: Product display priority.
          enum:
            - Sub
            - Main
          example: Sub
    RewardCalendarProductDetailsResponse:
      type: object
      description: Product details returned for a Reward Calendar reward.
      properties:
        publisherProductId:
          type: string
          description: Product ID provided by the publisher.
          example: coins
        name:
          type: string
          description: Product name.
          example: Coins
        description:
          type: string
          description: Product description.
          example: Coins reward.
        textFontColorHex:
          type: string
          description: Product text font color in hex format.
          example: '#FFFFFF'
        type:
          type: string
          description: Product type.
          example: Quantity
        prefix:
          type: string
          description: Product quantity prefix.
          example: ''
        suffix:
          type: string
          description: Product quantity suffix.
          example: ''
        images:
          type: array
          description: Product images.
          items:
            $ref: '#/components/schemas/RewardCalendarProductImageResponse'
        displayName:
          type: string
          description: Product display name.
          example: Coins
        createdAt:
          type: string
          format: date-time
          description: Date the product was created.
          example: '2026-02-05T10:26:12.307Z'
        updatedAt:
          type: string
          format: date-time
          description: Date the product was updated.
          example: '2026-02-05T10:26:12.307Z'
        productId:
          type: string
          description: Internal product ID.
          example: 698470440b0547d86762f85e
    RewardCalendarProductImageResponse:
      type: object
      description: Product image details.
      properties:
        type:
          type: string
          description: Product image type.
          example: product
        url:
          type: string
          description: Product image URL.
          example: >-
            https://media-staging.appcharge.com/media/69133d595af23405d88843a5/1770287158114__a4266bfc-297f-47c9-b5e5-16d7fdb987ea

````