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

# CalendarEventCatalog

> What a calendar event can be: its types, the agenda item kinds that give it behavior, and the limits writes enforce. New kinds are added here as they ship, so read it before creating or editing events.

**Required scopes:** [`calendar_events_read`](/docs/api-reference/v3/reference/scopes#scope-calendar_events_read)

<ResponseField name="agendaItemKinds" type={<a href="/docs/api-reference/v3/reference/commerce-agent/calendar-event-catalog-agenda-item-kind">[CalendarEventCatalogAgendaItemKind!]!</a>} required>
  Every agenda item kind this API writes field by field. Stored kinds missing here are read as CalendarUnknownAgendaItem.

  <Expandable title="fields" lazyRender>
    <ResponseField name="description" type="String!" required>
      What an item of this kind does, including how the Commerce Agent uses it.
    </ResponseField>

    <ResponseField name="displayName" type="String!" required>
      The merchant-facing name of the kind.
    </ResponseField>

    <ResponseField name="kind" type={<a href="/docs/api-reference/v3/reference/commerce-agent/calendar-agenda-item-kind">CalendarAgendaItemKind!</a>} required>
      The kind, as `kind` on a read agenda item.
    </ResponseField>

    <ResponseField name="payloadKey" type="String!" required>
      The key on CalendarAgendaItemInput that carries this kind's fields, such as `promotion`. Set exactly one key per item.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="commerceAgentContextMaxEvents" type="Int!" required>
  The most events the Commerce Agent reads at once: those in its window with the earliest start. Later ones are left out until earlier ones end.
</ResponseField>

<ResponseField name="commerceAgentContextWindowDays" type="Int!" required>
  The Commerce Agent reads events that overlap this many days before and after the current time, when it answers shoppers and when it writes outbound marketing messages. Events further out are not in its context yet.
</ResponseField>

<ResponseField name="eventTypes" type={<a href="/docs/api-reference/v3/reference/commerce-agent/calendar-event-catalog-event-type">[CalendarEventCatalogEventType!]!</a>} required>
  Every event type createCalendarEvent accepts.

  <Expandable title="fields" lazyRender>
    <ResponseField name="agendaItemKinds" type={<a href="/docs/api-reference/v3/reference/commerce-agent/calendar-agenda-item-kind">[CalendarAgendaItemKind!]!</a>} required>
      Agenda item kinds an event of this type can carry. Adding any other kind returns AGENDA\_ITEM\_KIND\_NOT\_ALLOWED.
    </ResponseField>

    <ResponseField name="description" type="String!" required>
      What events of this type are for.
    </ResponseField>

    <ResponseField name="displayName" type="String!" required>
      The merchant-facing name of the type.
    </ResponseField>

    <ResponseField name="type" type={<a href="/docs/api-reference/v3/reference/commerce-agent/calendar-event-type">CalendarEventType!</a>} required>
      Pass as `type` to createCalendarEvent.
    </ResponseField>

    <ResponseField name="visibleToCommerceAgent" type="Boolean!" required>
      Whether the Commerce Agent reads events of this type as context, within `commerceAgentContextWindowDays` of now.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="maxAgendaItemsPerEvent" type="Int!" required>
  The most agenda items a write may leave on one event. A create or update that goes past it returns TOO\_MANY\_AGENDA\_ITEMS; an event already over it, from the merchant app, can still be edited without adding items.
</ResponseField>


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