Filter Cookbook
Every recipe below is a complete, copy-pasteable filter you can use with the search endpoint. All examples assume you have a Task tag with fields: status (Select: Backlog, Todo, In Progress, In Review, Done), priority (Number), due_date (Date), assignee (Reference), and project (Reference). A Project tag has name (String) and lead (Reference).
1. All items with a specific tag
Section titled “1. All items with a specific tag”Find every thogit that has the “Task” tag attached, regardless of field values.
Filter:
{"has_tag": "Task"}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{"filter": {"has_tag": "Task"}}'The has_tag operator checks for tag presence by name. It does not inspect any field values.
2. Full-text search
Section titled “2. Full-text search”Search thogit names and descriptions for a keyword.
Filter:
{"search": "deploy"}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{"filter": {"search": "deploy"}}'Full-text search matches against the thogit’s name and description fields. It is case-insensitive and matches partial words.
3. Field equals value
Section titled “3. Field equals value”Find tasks where priority is exactly 1.
Filter:
{"Task.priority": 1}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{"filter": {"Task.priority": 1}}'When you provide a bare value (not wrapped in an operator object), it is treated as an equality check. This is shorthand for {"Task.priority": {"eq": 1}}.
4. Select variant match
Section titled “4. Select variant match”Find tasks that are currently in progress.
Filter:
{"Task.status": {"match": "In Progress"}}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{"filter": {"Task.status": {"match": "In Progress"}}}'The match operator checks which variant is selected. It matches the variant name exactly.
5. Date range
Section titled “5. Date range”Find tasks due in January 2024.
Filter:
{ "and": [ {"Task.due_date": {"gte": "2024-01-01"}}, {"Task.due_date": {"lt": "2024-02-01"}} ]}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{ "filter": { "and": [ {"Task.due_date": {"gte": "2024-01-01"}}, {"Task.due_date": {"lt": "2024-02-01"}} ] } }'Use gte (inclusive start) + lt (exclusive end) for clean date ranges with no overlap. Dates use YYYY-MM-DD format.
6. Null field check
Section titled “6. Null field check”Find unassigned tasks — where the assignee field is null or not set.
Filter:
{"Task.assignee": {"is_null": true}}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{"filter": {"Task.assignee": {"is_null": true}}}'is_null: true matches thogits where the field has no value. Use is_null: false to find thogits where the field is set.
7. Negation
Section titled “7. Negation”Find all tasks that are not done.
Filter:
{"not": {"Task.status": {"match": "Done"}}}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{"filter": {"not": {"Task.status": {"match": "Done"}}}}'The not operator inverts any inner filter. It works with any filter type — field comparisons, has_tag, search, or even nested and/or groups.
8. Ordinal comparison on Select
Section titled “8. Ordinal comparison on Select”Find tasks that are at least “In Progress” — meaning In Progress, In Review, or Done.
Filter:
{"Task.status": {"select_gte": "In Progress"}}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{"filter": {"Task.status": {"select_gte": "In Progress"}}}'Select variants have a defined order based on their position in the schema. The ordinal operators select_gt, select_gte, select_lt, and select_lte compare based on that position. This is useful for workflow progression filters.
9. Multi-condition filter
Section titled “9. Multi-condition filter”Find high-priority active tasks: has the Task tag, priority is 2 or less, and not done.
Filter:
{ "and": [ {"has_tag": "Task"}, {"Task.priority": {"lte": 2}}, {"not": {"Task.status": {"match": "Done"}}} ]}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{ "filter": { "and": [ {"has_tag": "Task"}, {"Task.priority": {"lte": 2}}, {"not": {"Task.status": {"match": "Done"}}} ] } }'The and operator requires all conditions to be true. Use or when any condition matching is sufficient.
10. Reference traversal
Section titled “10. Reference traversal”Find tasks on projects whose name contains “API”.
Filter:
{"Task.project->Project.name": {"contains": "API"}}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{"filter": {"Task.project->Project.name": {"contains": "API"}}}'The -> operator traverses a Reference field. Task.project is the Reference field on the Task tag, and Project.name is the field to filter on the referenced thogit. See the reference traversal guide for multi-hop examples.
11. Set membership
Section titled “11. Set membership”Find tasks with priority 1 or 2.
Filter:
{"Task.priority": {"in": [1, 2]}}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{"filter": {"Task.priority": {"in": [1, 2]}}}'The in operator matches if the field value is any of the provided values. Works with numbers, strings, and other scalar types.
12. String patterns
Section titled “12. String patterns”Find thogits whose name starts with “Bug:”.
Filter:
{"name": {"starts_with": "Bug:"}}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{"filter": {"name": {"starts_with": "Bug:"}}}'The starts_with operator works on the thogit’s name field directly (not a tag field). The contains operator is also available for substring matching.
13. Combine search with filters
Section titled “13. Combine search with filters”Find thogits mentioning “authentication” that are tagged as Tasks.
Filter:
{ "and": [ {"search": "authentication"}, {"has_tag": "Task"} ]}curl:
curl -X POST https://app.thogits.com/api/thogits/search \ -H "Content-Type: application/json" \ -b cookies.txt -c cookies.txt \ -d '{ "filter": { "and": [ {"search": "authentication"}, {"has_tag": "Task"} ] } }'You can combine search with any other filter using and. This narrows full-text results to a specific tag, status, or any other condition.
Quick reference: all operators
Section titled “Quick reference: all operators”| Operator | Works on | Description |
|---|---|---|
eq / bare value | Any field | Exact equality |
neq | Any field | Not equal |
gt, gte, lt, lte | Number, Date | Numeric/date comparisons |
select_gt, select_gte, select_lt, select_lte | Select | Ordinal comparison by variant position |
match | Select | Exact variant name match |
contains | String, name | Substring match |
starts_with | String, name | Prefix match |
in | Any scalar | Value is in provided set |
is_null | Any field | Field is null (true) or set (false) |
exists | Any field | Field exists in the data |
has_tag | Thogit | Tag is attached |
search | Thogit | Full-text search on name/description |
and, or, not | Filter | Logical combinators |