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

# Matchers

> Available matchers for schedule adjustments

Matchers define which orders in the schedule should be affected by an adjustment.

## Cycle

<Card icon="repeat" horizontal>
  Match orders by billing cycle number.
</Card>

**Use cases:**

* Target a specific future order (e.g., "skip the 3rd order")
* Apply adjustment to a known cycle

**Input:**

| Field   | Type    | Required | Description                     |
| ------- | ------- | -------- | ------------------------------- |
| `cycle` | integer | Yes      | Target cycle number (0-indexed) |

```json theme={null}
{
  "type": "CYCLE",
  "input": {
    "cycle": 3
  }
}
```

<Info>
  Cycle numbers start at 0. Cycle 0 is the first/current cycle.
</Info>

***

## Date

<Card icon="calendar" horizontal>
  Match orders by their scheduled date.
</Card>

**Use cases:**

* Skip all orders on a specific date (e.g., holiday)
* Target orders regardless of cycle number

**Input:**

| Field  | Type   | Required | Description            |
| ------ | ------ | -------- | ---------------------- |
| `date` | string | Yes      | Target date (ISO 8601) |

```json theme={null}
{
  "type": "DATE",
  "input": {
    "date": "2025-01-01T00:00:00Z"
  }
}
```

***

## Cycle and date

<Card icon="calendar-plus" horizontal>
  Match orders by both cycle number and scheduled date.
</Card>

**Use cases:**

* Precise targeting when both cycle and date matter
* Disambiguate when multiple orders could match

**Input:**

| Field   | Type    | Required | Description                     |
| ------- | ------- | -------- | ------------------------------- |
| `cycle` | integer | Yes      | Target cycle number (0-indexed) |
| `date`  | string  | Yes      | Target date (ISO 8601)          |

```json theme={null}
{
  "type": "CYCLE_AND_DATE",
  "input": {
    "cycle": 2,
    "date": "2025-03-15T00:00:00Z"
  }
}
```

***

## Compatibility

Not all matchers work with all actions:

| Action                  | CYCLE | DATE | CYCLE\_AND\_DATE |
| ----------------------- | :---: | :--: | :--------------: |
| SKIP\_ORDER             |   ✓   |   ✓  |         ✓        |
| CHANGE\_DATE            |   ✓   |   ✗  |         ✗        |
| UPDATE\_SHIPPING        |   ✓   |   ✓  |         ✓        |
| UPDATE\_PAYMENT\_METHOD |   ✓   |   ✓  |         ✓        |
| UPDATE\_PRODUCTS        |   ✓   |   ✓  |         ✓        |
| APPLY\_DISCOUNT         |   ✓   |   ✗  |         ✗        |
