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

# CalendarPromotionAgendaItem

> A sale or offer running during the event, described in free text: what is discounted, for whom, and any code shoppers should use. The Commerce Agent reads it as merchant-provided context and may share it with shoppers. It does not create a discount, so a code it mentions must already exist. Promotions found on the brand's homepage carry `detection` and are kept up to date until the event is edited.

<ResponseField name="details" type="String">
  The promotion as the Commerce Agent reads it: what is discounted, for whom, and any code to use. The agent may repeat it to shoppers.
</ResponseField>

<ResponseField name="detection" type={<a href="/docs/api-reference/v3/reference/commerce-agent/calendar-detected-promotion">CalendarDetectedPromotion</a>}>
  Set when Redo found this promotion on the brand's homepage, and kept if the details are edited later. Null when the promotion was added by the merchant or through this API.

  <Expandable title="fields" lazyRender>
    <ResponseField name="discountCode" type="String">
      The discount code the page showed, if any.
    </ResponseField>

    <ResponseField name="lastSeenAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
      When Redo last saw the promotion on the page.
    </ResponseField>

    <ResponseField name="sourceUrl" type="String!" required>
      The page the promotion was found on.
    </ResponseField>

    <ResponseField name="statedEndsAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime</a>}>
      The end date the page stated, if any.
    </ResponseField>

    <ResponseField name="status" type={<a href="/docs/api-reference/v3/reference/commerce-agent/calendar-detected-promotion-status">CalendarDetectedPromotionStatus!</a>} required>
      Whether the page still showed the promotion.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="id" type="ID!" required>
  The id of this agenda item. Pass it to an `update` or `remove` agenda operation on updateCalendarEvent.
</ResponseField>

<ResponseField name="kind" type={<a href="/docs/api-reference/v3/reference/commerce-agent/calendar-agenda-item-kind">CalendarAgendaItemKind!</a>} required>
  What this item adds to the event.
</ResponseField>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.