> ## 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 Design

> Updates a reward calendar design.

<RequestExample>
  ```bash Update Reward Calendar Design theme={"system"}
  curl -X PUT \
    'https://api.appcharge.com/components/v1/offer-design/reward-calendar-design-1' \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'x-publisher-token: <x-publisher-token>' \
    --data '{
      "offerUiType": "PopUp",
      "offerUiSubType": "RewardCalendar",
      "name": "Updated Reward Calendar Design",
      "externalId": "reward-calendar-design-1",
      "backgroundImageUrl": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/reward-calendar-background-v2.png",
      "rewardCalendar": {
        "collectibleBadgeImage": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/collectible-badge-v2.png",
        "lockedBadgeImage": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/locked-badge-v2.png",
        "backgroundColor": "#111832",
        "collectIconImage": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/collect-icon-v2.png",
        "lockedIconImage": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/locked-icon-v2.png",
        "dayFontColor": "#FFFFFF",
        "headerImage": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/header.png"
      }
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json Update Reward Calendar Design theme={"system"}
  {
    "id": "68d2b9cf7a8b4d2f1b8e0a31",
    "offerUiType": "PopUp",
    "offerUiSubType": "RewardCalendar",
    "name": "Updated Reward Calendar Design",
    "externalId": "reward-calendar-design-1",
    "backgroundImageUrl": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/reward-calendar-background-v2.png",
    "rewardCalendar": {
      "collectibleBadgeImage": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/collectible-badge-v2.png",
      "lockedBadgeImage": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/locked-badge-v2.png",
      "backgroundColor": "#111832",
      "collectIconImage": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/collect-icon-v2.png",
      "lockedIconImage": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/locked-icon-v2.png",
      "dayFontColor": "#FFFFFF",
      "headerImage": "https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/header.png",
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml openapi-reward-calendar-design.json PUT /components/v1/offer-design/{externalId}
openapi: 3.0.3
info:
  title: Reward Calendar Designs API
  version: 1.0.0
servers:
  - url: https://api.appcharge.com
security:
  - PublisherTokenAuth: []
tags:
  - name: Offer Designs
paths:
  /components/v1/offer-design/{externalId}:
    parameters:
      - in: path
        name: externalId
        required: true
        schema:
          type: string
        description: Offer design ID that you defined.
    put:
      tags:
        - Offer Designs
      description: Updates a reward calendar design.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RewardCalendarDesignUpdate'
      responses:
        '200':
          description: Offer design updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RewardCalendarDesignResponse'
        '400':
          description: Bad request. Invalid input or validation failure.
        '404':
          description: Offer design not found.
components:
  schemas:
    RewardCalendarDesignUpdate:
      title: Reward Calendar Design
      type: object
      description: Updates a reward calendar design.
      properties:
        offerUiType:
          type: string
          enum:
            - PopUp
          description: Type of offer design.
          example: PopUp
        offerUiSubType:
          type: string
          enum:
            - RewardCalendar
          description: Offer subtype.
          example: RewardCalendar
        name:
          type: string
          description: Offer design name.
          example: Weekly Reward Calendar
        externalId:
          type: string
          description: Offer design ID that you define.
          example: reward-calendar-ui
        backgroundImageUrl:
          type: string
          format: url
          description: >-
            Background image URL in PNG or JPEG format.


            For uploaded files, this is the Appcharge-hosted CDN URL. For
            external image URLs, this is the original image URL served from the
            provided URL. External image URLs are saved and used as-is, and
            Appcharge doesn't download, copy, upload, or host them. Images must
            remain available at the provided URLs.


            We recommend uploading image files instead of using external URLs
            when possible.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/reward-calendar-background.png
        rewardCalendar:
          $ref: '#/components/schemas/RewardCalendarDesignBlockUpdate'
    RewardCalendarDesignResponse:
      title: Reward Calendar Design
      type: object
      properties:
        id:
          type: string
          description: Offer design ID.
          example: 68d2b9cf7a8b4d2f1b8e0a31
        offerUiType:
          type: string
          enum:
            - PopUp
          description: Type of offer design.
          example: PopUp
        offerUiSubType:
          type: string
          enum:
            - RewardCalendar
          description: Offer subtype.
          example: RewardCalendar
        name:
          type: string
          description: Offer design name.
          example: Weekly Reward Calendar
        externalId:
          type: string
          description: Offer design ID that you defined.
          example: reward-calendar-ui
        backgroundImageUrl:
          type: string
          format: url
          description: >-
            Background image URL. For uploaded files, this is the
            Appcharge-hosted CDN URL. For external image URLs, this is the
            original image URL served from the provided URL.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/reward-calendar-background.png
        externalBackgroundImageUrl:
          type: string
          format: url
          description: >-
            Original background image URL when the design uses an external image
            URL. This URL is used as provided to serve the image.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/reward-calendar-background.png
        rewardCalendar:
          $ref: '#/components/schemas/RewardCalendarDesignBlockResponse'
    RewardCalendarDesignBlockUpdate:
      type: object
      description: Information about the reward calendar design.
      properties:
        collectibleBadgeImage:
          type: string
          format: url
          description: Badge image to display when a reward is able to be collected.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/collectible-badge.png
        lockedBadgeImage:
          type: string
          format: url
          description: Badge image to display when a reward is locked.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/locked-badge.png
        backgroundColor:
          type: string
          pattern: ^#[0-9a-fA-F]{6}$
          description: Reward calendar background color in hex format.
          example: '#101225'
        collectIconImage:
          type: string
          format: url
          description: Icon image to display when a reward has been collected.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/collect-icon.png
        lockedIconImage:
          type: string
          format: url
          description: Icon image to display when a reward is locked.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/locked-icon.png
        dayFontColor:
          type: string
          pattern: ^#[0-9a-fA-F]{6}$
          description: Day label font color in hex format.
          example: '#FFFFFF'
        subRewardBackgroundImage:
          type: string
          format: url
          description: Sub reward background image URL.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/sub-reward-background.png
        mainRewardBackgroundImage:
          type: string
          format: url
          description: Main reward background image URL.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/main-reward-background.png
        headerImage:
          type: string
          format: url
          description: Header image URL.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/header.png
      required:
        - collectibleBadgeImage
        - lockedBadgeImage
        - backgroundColor
        - collectIconImage
        - lockedIconImage
        - dayFontColor
    RewardCalendarDesignBlockResponse:
      type: object
      description: Information about the reward calendar design.
      properties:
        collectibleBadgeImage:
          type: string
          format: url
          description: Badge image to display when a reward is able to be collected.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/collectible-badge.png
        lockedBadgeImage:
          type: string
          format: url
          description: Badge image to display when a reward is locked.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/locked-badge.png
        backgroundColor:
          type: string
          pattern: ^#[0-9a-fA-F]{6}$
          description: Reward calendar background color in hex format.
          example: '#101225'
        collectIconImage:
          type: string
          format: url
          description: Icon image displayed when a reward has been collected.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/collect-icon.png
        lockedIconImage:
          type: string
          format: url
          description: Icon image displayed when a reward is locked.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/locked-icon.png
        dayFontColor:
          type: string
          pattern: ^#[0-9a-fA-F]{6}$
          description: Day label font color in hex format.
          example: '#FFFFFF'
        subRewardBackgroundImage:
          type: string
          format: url
          description: Sub reward background image URL.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/sub-reward-background.png
        mainRewardBackgroundImage:
          type: string
          format: url
          description: Main reward background image URL.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/main-reward-background.png
        headerImage:
          type: string
          format: url
          description: Header image URL.
          example: >-
            https://media.appcharge.com/media/65cb7861ec8924a6b69a0f59/header.png
  securitySchemes:
    PublisherTokenAuth:
      type: apiKey
      in: header
      name: x-publisher-token
      description: Publisher token, as displayed in the Publisher Dashboard.

````