> For the complete documentation index, see [llms.txt](https://docs.ledge.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ledge.co/api-reference/transactions/querying.md).

# Querying

Ledge uses a simple composable typed filter.

### SearchQuery

```json
{
  "path": "string",
  "search": {}
}
```

| Attribute                                               | Definition                                      |
| ------------------------------------------------------- | ----------------------------------------------- |
| <p><strong>path</strong><br><em>string</em></p>         | Name of transaction field to apply the query to |
| <p><strong>search</strong><br><em>SearchFilter</em></p> | Search filter to apply, see below.              |

### SearchFilter

The SearchFilter object can be any one of the following:

#### Text filter

```json
{
  "type": "string",
  "value": "string"|[],
  "exact" : true,
}
```

| Attribute                                       | Definition                                                                                                                     |                                  |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- |
| <p><strong>type</strong><br><em>string</em></p> | One of the following values: `string`, `boolean`, `number`, `money`, `date.` For the text filter, this is a constant `string`. |                                  |
| <p><strong>value</strong><br><em>string</em>    | <em>string\[]</em></p>                                                                                                         | The text or texts to search for. |

#### Boolean filter

```json
{
  "type": "boolean",
  "value" : true
}
```

| Attribute                                         | Definition                                                                                                                        |
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong>type</strong><br><em>string</em></p>   | One of the following values: `string`, `boolean`, `number`, `money`, `date`.For the boolean filter, this is a constant `boolean`. |
| <p><strong>value</strong><br><em>boolean</em></p> | The filter value to apply.                                                                                                        |

#### Date filter

<pre><code><strong>{
</strong>  "type": "date",
  "value" : {}
}
</code></pre>

| Attribute                                             | Definition                                                                                                                       |
| ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong>type</strong><br><em>string</em></p>       | One of the following values: `string`, `boolean`, `number`, `money`, `date`. For the number filter, this is a constant `number`. |
| <p><strong>value</strong><br><em>NumberRange</em></p> | A NumberRange filter (see below). All numbers in millseconds.                                                                    |

#### Number filter

<pre class="language-json"><code class="lang-json"><strong>{
</strong>  "type": "number",
  "value" : 0|[]|{}
}
</code></pre>

| Attribute                                       | Definition                                                                                                                       |                           |                          |                                                                                                                |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ------------------------ | -------------------------------------------------------------------------------------------------------------- |
| <p><strong>type</strong><br><em>string</em></p> | One of the following values: `string`, `boolean`, `number`, `money`, `date`. For the number filter, this is a constant `number`. |                           |                          |                                                                                                                |
| <p><strong>value</strong><br><em>number</em>    | <em>number\[]</em>                                                                                                               | <em>NumberExpression</em> | <em>NumberRange</em></p> | The filter value to apply, which can be a single value, multiple values, or more specific filters (see below). |

#### Money filter

```json
{
  "type": "money"
  "currencies" : [],
  "value" : []
}
```

| Attribute                                             | Definition                                                                                                                     |                           |                          |                                                                                                                |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------- | ------------------------ | -------------------------------------------------------------------------------------------------------------- |
| <p><strong>type</strong><br><em>string</em></p>       | One of the following values: `string`, `boolean`, `number`, `money`, `date`. For the money filter, this is a constant `money`. |                           |                          |                                                                                                                |
| <p><strong>currencies</strong><br><em>string</em></p> | <p>A collection of ISO 4217 currency code.<br><em>optional</em></p>                                                            |                           |                          |                                                                                                                |
| <p><strong>value</strong><br><em>number</em>          | <em>number\[]</em>                                                                                                             | <em>NumberExpression</em> | <em>NumberRange</em></p> | The filter value to apply, which can be a single value, multiple values, or more specific filters (see below). |

#### NumberExpression

```json
{
  "operator": "string",
  "value": 0
}
```

| Attribute                                           | Definition                                                          |
| --------------------------------------------------- | ------------------------------------------------------------------- |
| <p><strong>operator</strong><br><em>string</em></p> | One of the following operator values: `ne`, `ge`, `gt`, `le`, `lt`. |
| <p><strong>value</strong><br><em>number</em></p>    | The filter value to apply.                                          |

#### NumberRange

```json
{
  "start": 0,
  "end": 0,
  "includeStart": true,
  "includeEnd": true,
}
```

| Attribute                                                | Definition                                                   |
| -------------------------------------------------------- | ------------------------------------------------------------ |
| <p><strong>start</strong><br><em>number</em></p>         | The minimum value in the range.                              |
| <p><strong>end</strong><br><em>number</em></p>           | <p>The maximum value in the range.<br></p>                   |
| <p><strong>includeStart</strong><br><em>boolean</em></p> | <p>Is inclusive on the lower bound.<br><em>optional</em></p> |
| <p><strong>includeEnd</strong><br><em>boolean</em></p>   | <p>Is inclusive on the upper bound.<br><em>optional</em></p> |
