SqueakQL fields
SqueakQL exposes stable Work Item concepts, not database column names or tenant internals. Field names are resolved through Hamstik’s application registry.
| Field | Type | Meaning | Nullable | Operators |
|---|---|---|---|---|
key |
string | Public Work Item key, such as APP-42 |
No | =, <>, !=, IN, NOT IN, LIKE, NOT LIKE, ILIKE, NOT ILIKE |
project_key |
string | Project key | No | Same as key |
title |
string | Work Item title | No | Same as key |
description |
string | Current Markdown description, with legacy fallback | Yes | Same as key, plus IS NULL / IS NOT NULL |
type |
enum | task, bug, story, feature, or epic |
No | =, <>, !=, <, <=, >, >=, IN, NOT IN, BETWEEN, NOT BETWEEN |
status |
enum | backlog, todo, in_progress, in_review, or done |
No | Same as type |
priority |
enum | low, medium, high, or urgent |
No | Same as type |
assignee |
user | Public user identity assigned to the item | Yes | =, <>, !=, IN, NOT IN, IS NULL, IS NOT NULL |
sprint |
string | Sprint name | Yes | String operators, plus IS NULL / IS NOT NULL |
parent |
string | Non-deleted parent Work Item key within the Project | Yes | String operators, plus IS NULL / IS NOT NULL |
release_version_id |
string | Membership in any canonical Release Version UUID | Yes | =, <>, !=, IN, NOT IN, IS NULL, IS NOT NULL |
release_version_name |
string | Membership by PROJECT/Name, including archived versions |
Yes | Same as release_version_id |
created_at |
timestamp | Creation time | No | =, <>, !=, <, <=, >, >=, IN, NOT IN, BETWEEN, NOT BETWEEN |
updated_at |
timestamp | Last update time | No | Same as created_at |
due_date |
timestamp | Due time | Yes | Same as created_at, plus IS NULL / IS NOT NULL |
story_points |
integer | Estimate | Yes | Same as created_at, plus IS NULL / IS NOT NULL |
vote_count |
integer | Retained unique Work Item vote count; zero when no one has voted | No | Same as created_at (no IS NULL) |
effort_risk |
enum | none, blocked, or at_risk — the manual effort-risk signal |
No | =, <>, !=, IN, NOT IN, IS NULL, IS NOT NULL (never NULL in practice) |
String operators are =, <>, !=, IN, NOT IN, LIKE, NOT LIKE,
ILIKE, and NOT ILIKE. Only sortable fields can appear in ORDER BY.
assignee accepts CURRENT_USER or a stable usr_ public user ID, including
in IN lists. It never accepts an email, username, or internal UUID. Usernames
are scoped to an Organization and are not suitable as cross-Organization
identities. Unassigned Work Items have NULL assignees.
story_points is a nullable nonnegative integer, with no fractional estimates.
Query integer literals range from 0 to 2,147,483,647; write APIs may impose a
smaller estimate limit. parent IS NULL includes top-level items and items
whose parent is no longer visible because it was deleted.Release Version predicates use membership semantics: one Work Item may match
more than one version. IS NULL finds items without any version; <> and
NOT IN exclude items with the named version while retaining items assigned
to other versions. Name values require a Project key prefix to avoid ambiguity
across Projects, for example release_version_name = 'APP/2026.09'. The
canonical UUID form is release_version_id = '00000000-0000-4000-8000-000000000001'.
effort_risk is the manual planning risk signal: blocked and at_risk are
set by Work Item writers with a required nonempty reason (up to 1,000
characters), and none is the default. It is never derived, never changes a
workflow status, and never auto-clears when estimates change.
Examples
type = 'bug'AND project_key = 'APP'parent IS NULLAND story_points >= 5vote_count >= 1ORDER BY vote_count DESCsprint ILIKE '%launch%'Internal numeric primary keys, tenant ids, secrets, deleted-only metadata, and arbitrary columns are not SqueakQL fields.
Organization-governed Attributes are also queryable through the bounded
attribute_<key> and membership syntax. Their keys and
option keys are resolved at authorized execution time, so the available fields
depend on the Organization and Projects you can access.
