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 equality
Section titled “4. Select variant equality”Find tasks that are currently in progress.
Filter:
{"Task.status": {"eq": "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": {"eq": "In Progress"}}}'The eq operator on a Select field matches the variant name exactly. You can also use bare string shorthand: {"Task.status": "In Progress"}.
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": {"exists": false}}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": {"exists": false}}}'{"exists": false} matches thogits where the field has no value. You can also use bare null as shorthand: {"Task.assignee": null}.
7. Negation
Section titled “7. Negation”Find all tasks that are not done.
Filter:
{"not": {"Task.status": {"eq": "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": {"eq": "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": {"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": {"gte": "In Progress"}}}'When you use gt, gte, lt, or lte with a string value on a Select field, comparison is by ordinal position in the schema’s variants array. 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": {"eq": "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": {"eq": "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": {"regex": "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": {"regex": "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 Select/MultiSelect variants.
12. Regex patterns
Section titled “12. Regex patterns”Find thogits whose name starts with “Bug:”.
Filter:
{"name": {"regex": "^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": {"regex": "^Bug:"}}}'The regex operator works on the thogit’s name field directly (not a tag field). It uses ECMAScript regex syntax.
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 | String, Number, Boolean, Date, Select | Exact equality |
neq | String, Number, Boolean, Date, Select | Not equal |
gt, gte, lt, lte | Number, Date, String, Select (ordinal) | Comparison |
regex | String, Select, MultiSelect | ECMAScript regex match |
in | String, Number, Select, MultiSelect | Value is in provided set |
exists | Any field | Field is non-null (true) or null (false) |
has_tag | Thogit | Tag is attached |
search | Thogit | Full-text search on name/description |
and, or, not | Filter | Logical combinators |