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

# SegmentConditionCatalog

> Static grammar for dynamic segment conditions. Same for every store except that some activities are platform-specific. Does not include live tags, products, or customers — those come from segmentTokenFieldOptions.

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

<ResponseField name="conditionKinds" type={<a href="/docs/api-reference/v3/reference/marketing/segment-condition-kind">[SegmentConditionKind!]!</a>} required>
  Allowed `type` values on each condition.
</ResponseField>

<ResponseField name="conditionsJsonSchema" type={<a href="/docs/api-reference/v3/reference/common/json">JSON!</a>} required>
  JSON Schema for the `conditions` object accepted by createDynamicSegment and updateDynamicSegment, generated from the same Zod schema the writer validates.
</ResponseField>

<ResponseField name="conjunctions" type={<a href="/docs/api-reference/v3/reference/marketing/segment-conjunction">[SegmentConjunction!]!</a>} required>
  Allowed `conjunction` (tree) and `operator` (block) values.
</ResponseField>

<ResponseField name="customEvent" type={<a href="/docs/api-reference/v3/reference/marketing/segment-catalog-custom-event">SegmentCatalogCustomEvent!</a>} required>
  The CUSTOM\_EVENT condition shape.

  <Expandable title="fields" lazyRender>
    <ResponseField name="countOperators" type="[String!]!" required>
      Stored `count.operator` values.
    </ResponseField>

    <ResponseField name="description" type="String!" required>
      How to use this condition kind.
    </ResponseField>

    <ResponseField name="eventNameNeedsTokenOptions" type="Boolean!" required>
      If true, list `eventName` values with segmentTokenFieldOptions(kind: CUSTOM\_EVENT, field: "eventName").
    </ResponseField>

    <ResponseField name="timeframeTypes" type="[String!]!" required>
      Stored `timeframe.type` values.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="customerActivities" type={<a href="/docs/api-reference/v3/reference/marketing/segment-catalog-activity">[SegmentCatalogActivity!]!</a>} required>
  Activity kinds for CUSTOMER\_ACTIVITY conditions, including platform variants.

  <Expandable title="fields" lazyRender>
    <ResponseField name="category" type={<a href="/docs/api-reference/v3/reference/marketing/segment-condition-category">SegmentConditionCategory!</a>} required>
      Grouping in the builder.
    </ResponseField>

    <ResponseField name="countOperators" type="[String!]!" required>
      Stored `count.operator` values (numeric compare).
    </ResponseField>

    <ResponseField name="description" type="String!" required>
      What the activity records.
    </ResponseField>

    <ResponseField name="fields" type={<a href="/docs/api-reference/v3/reference/marketing/segment-catalog-field">[SegmentCatalogField!]!</a>} required>
      Filters on the activity (`event_filters`). Empty when the activity has no filterable properties.

      <Expandable title="fields" lazyRender>
        <ResponseField name="category" type={<a href="/docs/api-reference/v3/reference/marketing/segment-condition-category">SegmentConditionCategory!</a>} required>
          Grouping in the builder.
        </ResponseField>

        <ResponseField name="dataType" type={<a href="/docs/api-reference/v3/reference/marketing/segment-field-data-type">SegmentFieldDataType!</a>} required>
          Which comparison object `whereCondition` must use.
        </ResponseField>

        <ResponseField name="description" type="String!" required>
          What the field measures.
        </ResponseField>

        <ResponseField name="id" type="String!" required>
          Stable id to put on `whereCondition.dimension` (attributes) or `event_filters[].dimension` (activities).
        </ResponseField>

        <ResponseField name="name" type="String!" required>
          Merchant-facing name.
        </ResponseField>

        <ResponseField name="needsTokenOptions" type="Boolean!" required>
          If true, list allowed values with `segmentTokenFieldOptions` before writing the condition.
        </ResponseField>

        <ResponseField name="operators" type="[String!]!" required>
          Stored `comparison.operator` values for this data type. Empty for boolean and custom-field (those pick a nested comparison).
        </ResponseField>

        <ResponseField name="tokenPrerequisiteCount" type="Int">
          Parent tokens required in `prerequisiteValues`. Null: none. 0 (custom-fields): list declarations with no prerequisites, then pass `[declarationId]` to list values. Country before state is 1; country+state before city is 2.
        </ResponseField>

        <ResponseField name="unit" type={<a href="/docs/api-reference/v3/reference/marketing/segment-field-unit">SegmentFieldUnit</a>}>
          How to present a numeric value. Null when not numeric.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="id" type="String!" required>
      Stored as `event` on a customer\_activity condition.
    </ResponseField>

    <ResponseField name="name" type="String!" required>
      Merchant-facing name, including platform when relevant.
    </ResponseField>

    <ResponseField name="source" type={<a href="/docs/api-reference/v3/reference/marketing/segment-catalog-source">SegmentCatalogSource!</a>} required>
      Platform that emits this activity.
    </ResponseField>

    <ResponseField name="timeframeTypes" type="[String!]!" required>
      Stored `timeframe.type` values for this activity.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="customerAttributes" type={<a href="/docs/api-reference/v3/reference/marketing/segment-catalog-field">[SegmentCatalogField!]!</a>} required>
  Fields for CUSTOMER\_ATTRIBUTE conditions.

  <Expandable title="fields" lazyRender>
    <ResponseField name="category" type={<a href="/docs/api-reference/v3/reference/marketing/segment-condition-category">SegmentConditionCategory!</a>} required>
      Grouping in the builder.
    </ResponseField>

    <ResponseField name="dataType" type={<a href="/docs/api-reference/v3/reference/marketing/segment-field-data-type">SegmentFieldDataType!</a>} required>
      Which comparison object `whereCondition` must use.
    </ResponseField>

    <ResponseField name="description" type="String!" required>
      What the field measures.
    </ResponseField>

    <ResponseField name="id" type="String!" required>
      Stable id to put on `whereCondition.dimension` (attributes) or `event_filters[].dimension` (activities).
    </ResponseField>

    <ResponseField name="name" type="String!" required>
      Merchant-facing name.
    </ResponseField>

    <ResponseField name="needsTokenOptions" type="Boolean!" required>
      If true, list allowed values with `segmentTokenFieldOptions` before writing the condition.
    </ResponseField>

    <ResponseField name="operators" type="[String!]!" required>
      Stored `comparison.operator` values for this data type. Empty for boolean and custom-field (those pick a nested comparison).
    </ResponseField>

    <ResponseField name="tokenPrerequisiteCount" type="Int">
      Parent tokens required in `prerequisiteValues`. Null: none. 0 (custom-fields): list declarations with no prerequisites, then pass `[declarationId]` to list values. Country before state is 1; country+state before city is 2.
    </ResponseField>

    <ResponseField name="unit" type={<a href="/docs/api-reference/v3/reference/marketing/segment-field-unit">SegmentFieldUnit</a>}>
      How to present a numeric value. Null when not numeric.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="operatorSets" type={<a href="/docs/api-reference/v3/reference/marketing/segment-operator-set">[SegmentOperatorSet!]!</a>} required>
  Operator lists keyed by field data type.

  <Expandable title="fields" lazyRender>
    <ResponseField name="dataType" type={<a href="/docs/api-reference/v3/reference/marketing/segment-field-data-type">SegmentFieldDataType!</a>} required>
      The field data type these operators apply to.
    </ResponseField>

    <ResponseField name="operators" type="[String!]!" required>
      Stored operator strings for this data type.
    </ResponseField>
  </Expandable>
</ResponseField>


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