Skip to content

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).


Find every thogit that has the “Task” tag attached, regardless of field values.

Filter:

{"has_tag": "Task"}

curl:

Terminal window
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.


Search thogit names and descriptions for a keyword.

Filter:

{"search": "deploy"}

curl:

Terminal window
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.


Find tasks where priority is exactly 1.

Filter:

{"Task.priority": 1}

curl:

Terminal window
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}}.


Find tasks that are currently in progress.

Filter:

{"Task.status": {"match": "In Progress"}}

curl:

Terminal window
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.


Find tasks due in January 2024.

Filter:

{
"and": [
{"Task.due_date": {"gte": "2024-01-01"}},
{"Task.due_date": {"lt": "2024-02-01"}}
]
}

curl:

Terminal window
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.


Find unassigned tasks — where the assignee field is null or not set.

Filter:

{"Task.assignee": {"is_null": true}}

curl:

Terminal window
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.


Find all tasks that are not done.

Filter:

{"not": {"Task.status": {"match": "Done"}}}

curl:

Terminal window
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.


Find tasks that are at least “In Progress” — meaning In Progress, In Review, or Done.

Filter:

{"Task.status": {"select_gte": "In Progress"}}

curl:

Terminal window
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.


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:

Terminal window
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.


Find tasks on projects whose name contains “API”.

Filter:

{"Task.project->Project.name": {"contains": "API"}}

curl:

Terminal window
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.


Find tasks with priority 1 or 2.

Filter:

{"Task.priority": {"in": [1, 2]}}

curl:

Terminal window
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.


Find thogits whose name starts with “Bug:”.

Filter:

{"name": {"starts_with": "Bug:"}}

curl:

Terminal window
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.


Find thogits mentioning “authentication” that are tagged as Tasks.

Filter:

{
"and": [
{"search": "authentication"},
{"has_tag": "Task"}
]
}

curl:

Terminal window
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.


OperatorWorks onDescription
eq / bare valueAny fieldExact equality
neqAny fieldNot equal
gt, gte, lt, lteNumber, DateNumeric/date comparisons
select_gt, select_gte, select_lt, select_lteSelectOrdinal comparison by variant position
matchSelectExact variant name match
containsString, nameSubstring match
starts_withString, namePrefix match
inAny scalarValue is in provided set
is_nullAny fieldField is null (true) or set (false)
existsAny fieldField exists in the data
has_tagThogitTag is attached
searchThogitFull-text search on name/description
and, or, notFilterLogical combinators