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

# Lists the built-in retailer connectors, optionally filtered by vertical.

> Available retailer connectors

### Query parameters

<ParamField query="category" type="string">
  Retail vertical, e.g. beauty
</ParamField>

### Response

`Connector[]` — each element:

<ResponseField name="category" type="string">
  Retail vertical, e.g. `beauty`, `department`, `club`, `off-price`. Lets callers narrow the catalog (a beauty vendor wants the beauty channels).
</ResponseField>

<ResponseField name="delimiters" type="Delimiters">
  <Expandable title="Delimiters">
    <ResponseField name="component" type="string" required />

    <ResponseField name="element" type="string" required />

    <ResponseField name="repetition" type="string" />

    <ResponseField name="segment" type="string" required />
  </Expandable>
</ResponseField>

<ResponseField name="display_name" type="string" required />

<ResponseField name="inbound_sets" type="string[]" required>
  Transaction sets the retailer sends us (we parse and acknowledge).
</ResponseField>

<ResponseField name="name" type="string" required>
  Stable lookup key, e.g. `walmart`.
</ResponseField>

<ResponseField name="notes" type="string" required />

<ResponseField name="outbound_sets" type="string[]" required>
  Transaction sets we send the retailer.
</ResponseField>

<ResponseField name="partner_isa_qualifier" type="string" required>
  The retailer's typical ISA interchange ID qualifier (01 DUNS, 08 UCC/EAN, 12 phone, ZZ mutually defined). Override per relationship.
</ResponseField>

<ResponseField name="validation" type="PartnerValidation" required>
  <Expandable title="PartnerValidation">
    <ResponseField name="accepted_inbound" type="string[]">
      If non-empty, inbound transaction sets not in this list are rejected (e.g. `['850', '860']` for a partner that only sends orders).
    </ResponseField>

    <ResponseField name="conditional_rules" type="ConditionalRule[]">
      If-then rules, e.g. 'when BEG02 is SA, a DTM segment is required'.

      <Expandable title="ConditionalRule">
        <ResponseField name="equals" type="string[]">
          Trigger values. Empty means 'when the element is present (non-empty)'.
        </ResponseField>

        <ResponseField name="require_element" type="object" />

        <ResponseField name="require_segment" type="string">
          Then this segment must be present somewhere in the transaction.
        </ResponseField>

        <ResponseField name="when_element" type="integer" required />

        <ResponseField name="when_segment" type="string" required>
          Trigger: segment tag + 1-based element position.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="count_checks" type="object">
      Count-balancing rules per inbound transaction set — `CTT01` must equal the number of `PO1` segments and friends. Checked only when the counter segment is present (pair with `required_segments` to mandate it).
    </ResponseField>

    <ResponseField name="element_constraints" type="ElementConstraint[]">
      Element-level constraints applied to matching segments anywhere in an inbound document — e.g. pin PO1-03 (unit of measure) to an allowed set.

      <Expandable title="ElementConstraint">
        <ResponseField name="allowed" type="string[]">
          If non-empty, the element must be one of these values.
        </ResponseField>

        <ResponseField name="element" type="integer" required>
          1-based element position, e.g. `3` for the PO1 unit of measure.
        </ResponseField>

        <ResponseField name="format" type="object" />

        <ResponseField name="max_len" type="integer">
          Maximum length (in characters) when the element is present.
        </ResponseField>

        <ResponseField name="min_len" type="integer">
          Minimum length (in characters) when the element is present.
        </ResponseField>

        <ResponseField name="required" type="boolean">
          If true, the element must be present (non-empty).
        </ResponseField>

        <ResponseField name="segment" type="string" required>
          Segment tag, e.g. `PO1`.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="required_qualified" type="object">
      Qualified-segment requirements per inbound transaction set — the guide staple `required_references` can't reach beyond REF: 'a DTM\*002 (delivery date) must be present', 'an N1 loop with N101=ST'. The `'*'` key applies to every set.
    </ResponseField>

    <ResponseField name="required_references" type="object">
      REF qualifiers that must be present per inbound transaction set, e.g. `&#123;'850': ['DP']&#125;` to require a department-number reference on every PO.
    </ResponseField>

    <ResponseField name="required_segments" type="object">
      Segment tags that must be present per inbound transaction set, e.g. `&#123;'850': ['DTM', 'REF']&#125;` to require a date and reference on every PO. The `'*'` key applies to every inbound set.
    </ResponseField>

    <ResponseField name="segment_cardinality" type="object">
      Occurrence bounds per inbound transaction set, e.g. `&#123;'850': [&#123;'segment': 'BEG', 'min': 1, 'max': 1&#125;]&#125;` for 'exactly one BEG' or a guide's 'max 200 PO1 lines'. The `'*'` key applies to every set; a set-specific rule for the same segment takes precedence.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="version" type="string" required>
  GS08 version/release, e.g. `004010`.
</ResponseField>

### Status codes

| Code  | Meaning                       |
| ----- | ----------------------------- |
| `200` | Available retailer connectors |
| `403` | Admin credential required     |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://edi.stateset.com/v1/connectors' \
    --header 'Authorization: Bearer YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  [
    {
      "category": "standard",
      "delimiters": {
        "component": ">",
        "element": "*",
        "repetition": "string",
        "segment": "~"
      },
      "display_name": "Ada Lovelace",
      "inbound_sets": [
        "string"
      ],
      "name": "Two-Person Tent",
      "notes": "Two-person tent, green — replacement for damaged pole set.",
      "outbound_sets": [
        "string"
      ],
      "partner_isa_qualifier": "string",
      "validation": {
        "accepted_inbound": [],
        "conditional_rules": [],
        "count_checks": {},
        "element_constraints": [],
        "required_qualified": {},
        "required_references": {},
        "required_segments": {},
        "segment_cardinality": {}
      },
      "version": "2026-08-01"
    }
  ]
  ```
</ResponseExample>
