> For the complete documentation index, see [llms.txt](https://docs.exto360.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.exto360.com/integration/data-api/filter-master-record-custom-module-records.md).

# Filter Master Record/Custom Module Records

The `filter` query parameter allows you to retrieve specific records by applying conditional expressions on fields. It supports filtering on numeric, string, date, and primitive fields using various operators. The filter supports AND and OR  logical operators to create complex queries.\
\
When filtering on `DATE` fields, you must pass the `localTimeZone` query parameter.\
Without this, the system may not return the correct records because of timezone differences in date comparison. `localTimeZone` must be in IANA timezone format (Example: `America/Los_Angeles`)

### API Example for Master Record

{% code fullWidth="true" %}

```ruby
<
```

{% endcode %}

### API Example for Module Record

{% code fullWidth="true" %}

```ruby
GET /api/v1/module-record/{moduleName}?pageSize=1000&page=1&filter=number2:gt:2:and:email_id:cn:john
```

{% endcode %}

### Filter Syntax

```ruby
fieldName:fieldType:operator:value
```

* `fieldName`: Field to filter on.
* `fieldType`: Supported field types: `NUMBER`, `STRING`, `DATE` `PRIMITIVE`
* `operator`: Comparison operator (explained below).
* `value`: Value to compare against.

Combining Conditions with:&#x20;

* AND
* OR

```ruby
number1:eq:6:and:number2:eq:1:or:contact:eq:1234
```

Translates to: (number1 = 6 AND number2 = 1) OR (contact = 1234)

### Supported Operators and Examples

<table><thead><tr><th>Data Type</th><th>Operator</th><th>Meaning/Usage</th><th width="268.40625">Example</th></tr></thead><tbody><tr><td>NUMBER</td><td>eq</td><td>Equals</td><td><code>number_field:eq:1234</code></td></tr><tr><td>NUMBER</td><td>ne</td><td>Not Equals</td><td><code>number_field:ne:4</code></td></tr><tr><td>NUMBER</td><td>ge</td><td>Greater than or equal</td><td><code>number_field:ge:2</code></td></tr><tr><td>NUMBER</td><td>gt</td><td>Greater than</td><td><code>number_field:gt:2</code></td></tr><tr><td>NUMBER</td><td>le</td><td>Less than or equal</td><td><code>number_field:le:2</code></td></tr><tr><td>NUMBER</td><td>lt</td><td>Less than</td><td><code>number_field:lt:2</code></td></tr><tr><td>NUMBER</td><td>eq:null</td><td>Field is blank</td><td><code>number_field:eq:null</code></td></tr><tr><td>NUMBER</td><td>ne:null</td><td>Field is not blank</td><td><code>number_field:ne:null</code></td></tr><tr><td>STRING</td><td>eq</td><td>Equals</td><td><code>email_id:eq:abc@xyz.com</code></td></tr><tr><td>STRING</td><td>cn</td><td>Contains</td><td><code>email_id:cn:m</code></td></tr><tr><td>STRING</td><td>sw</td><td>Starts With</td><td><code>email_id:sw:d</code></td></tr><tr><td>STRING</td><td>ew</td><td>Ends With</td><td><code>email_id:ew:m</code></td></tr><tr><td>STRING</td><td>nc</td><td>Does Not Contain</td><td><code>email_id:nc:com</code></td></tr><tr><td>STRING</td><td>eq:null</td><td>Field is blank</td><td><code>email_id:eq:null</code></td></tr><tr><td>STRING</td><td>ne:null</td><td>Field is not blank</td><td><code>email_id:ne:null</code></td></tr><tr><td>PRIMITIVE</td><td>ne</td><td>Not Equals</td><td><code>addition:ne:0</code></td></tr><tr><td>DATE</td><td>eq</td><td>Equals (format: yyyy-MM-dd)</td><td><code>createdDate:eq:2024-03-22 &#x26;localTimeZone=America/Los_Angeles</code></td></tr><tr><td>DATE</td><td>ne</td><td>Not Equals</td><td><code>createdDate:ne:2024-03-22&#x26;localTimeZone=America/Los_Angeles</code></td></tr><tr><td>DATE</td><td>gt</td><td>After Date</td><td><code>createdDate:gt:2024-01-01&#x26;localTimeZone=America/Los_Angeles</code></td></tr><tr><td>DATE</td><td>lt</td><td>Before Date</td><td><code>createdDate:lt:2024-03-01&#x26;localTimeZone=America/Los_Angeles</code></td></tr><tr><td>DATE</td><td>ge</td><td>On or After Date</td><td><code>createdDate:ge:2024-02-01&#x26;localTimeZone=America/Los_Angeles</code></td></tr><tr><td>DATE</td><td>le</td><td>On or Before Date</td><td><code>createdDate:le:2024-03-31&#x26;localTimeZone=America/Los_Angeles</code></td></tr></tbody></table>

### Combining AND and OR Conditions

| Logic Type | Symbol | Example                                       | Meaning                       |
| ---------- | ------ | --------------------------------------------- | ----------------------------- |
| AND        | `and`  | `number_field_1:eq:6:and:number_field_2:eq:1` | Both conditions must be true  |
| OR         | `or`   | `number_field_1:eq:6:or:number_field_2:eq:1`  | Either conditions can be true |

### **Examples of Filter Usage**

#### Example 1 - `AND` Condition

```ruby
number_field_1:eq:6:and:number_field_2:eq:1
```

Records where `number_field_1 = 6` AND `number_field_2 = 1`

***

#### &#x20;Example 2 - `OR` Condition

```ruby
number_field_1:eq:2124:or:contact:eq:896543
```

Records where `number_field_1 = 2124` OR `contact = 896543`

***

#### &#x20;Example 3 - `in` Operator (Multiple Values)

```ruby
number_field_1:in:2|10|15
```

Records where `number_field_1` is **2**, **10**, or **15**

***

#### Example 4 - Date Comparison

```ruby
createdDate:ge:2024-03-01:and:createdDate:le:2024-03-31&localTimeZone=America/Los_Angeles
```

Records created **between March 1, 2024, and March 31, 2024**

***

#### Example 5 - Null and Not Null Checks

```ruby
number_field_1:eq:null
```

Records where `number_field_1` is blank

```ruby
email_id:ne:null
```

Records where `email_id` is not blank

### **Important Notes**

* `filter` is optional but powerful for targeted queries
* Use the correct **fieldType** as per your data model
* `in:` operator values must be **separated by `|` (pipe symbol)**
* Date format must be **YYYY-MM-DD**
* Supports up to **1,000 records per request**

### Common Use Cases

| Scenario                         | Example Filter                                                                                                                         |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Get approved records             | `status:eq:Approved`                                                                                                                   |
| Filter by serial number          | `serial_number:eq:1234`                                                                                                                |
| Filter by multiple number values | `number_field_1:in:2`                                                                                                                  |
| Filter by date range             | `createdDate:ge:2024-03-01:and:createdDate:le:2024-03-31`                                                                              |
| Check for blank number           | `number_field_1:eq:null`                                                                                                               |
| Match text containing a string   | `email_id:cn:m`                                                                                                                        |
| Multiple conditions with AND/OR  | <p><code>number\_field\_1:eq:10:and:number\_field\_2:eq:20</code><br><code>number\_field\_1:eq:10:or:number\_field\_2:eq:20</code></p> |
|                                  |                                                                                                                                        |

### **Summary**

The `filter` parameter provides a flexible querying mechanism with:

* Support for **AND** and **OR** conditions
* **Numeric**, **String**, **Primitive**, and **Date** field filtering
* **Range filtering**, **null checks**, and **list matching (`in`)**
* Easy filtering by date ranges for audit or time-based queries
