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

> The static segment condition grammar: fields, operators, and the JSON Schema for `conditions`. Does not include this store's tags, products, or customers.

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

## Returns

<ResponseField name="segmentConditionCatalog" type={<a href="/docs/api-reference/v3/reference/marketing/segment-condition-catalog">SegmentConditionCatalog!</a>} required>
  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.

  <Expandable title="fields" lazyRender>
    <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>
  </Expandable>
</ResponseField>

## Example

```graphql theme={null}
query {
  segmentConditionCatalog {
    conditionKinds
    conditionsJsonSchema
    conjunctions
  }
}
```


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