v2 Models¶
Pydantic models returned by client.v2 operations. See the
v2 guide for how these fit into the wider
SDK.
Conventions¶
These conventions apply uniformly across every v2 model:
- Aliases are camelCase, matching the GraphQL field names verbatim (e.g.
Field(alias="dateCreated")) — unlike v1's PascalCase REST aliases. - Owners are nested refs: an entity's assignee is exposed as
owner: UserRef | None(aliased from the GraphQLassigneefield), never flattened intoowner_id/owner_name.ownerisNonewhen unowned. - Related entities are nested refs too: an issue's parent meeting is
meeting: MeetingRef | None, not flattened intomeeting_id/meeting_name. - Datetimes use the
_datesuffix (created_date,due_date,completed_date,archived_date) and are always timezone-aware UTCdatetimeobjects, converted from the API's unix-seconds floats. - Notes: description text is exposed as
notes: str | None, computed from the underlying note pad.notes_idis kept alongside it — see Description ("notes") behavior in the v2 guide.
Reference types¶
UserRef
¶
Bases: GqlBaseModel
Minimal reference to a user, as nested inside other v2 entities.
This is what GraphQL assignee { id fullName } projections return; use
User for the full user/users query result.
MeetingRef
¶
Bases: GqlBaseModel
Minimal reference to a meeting, as nested inside other v2 entities.
This is what GraphQL meeting { id name } projections return; use
Meeting for the full meeting query result.
Users¶
User
¶
Bases: GqlBaseModel
Model for a full v2 user, from the user/users queries.
Meetings¶
MeetingListItem
¶
Bases: GqlBaseModel
Model for a meeting list item, from user(id){ meetingsListLookup }.
Meeting
¶
Bases: GqlBaseModel
Model for full meeting details, from the meeting(id) query.
Issues¶
Issue
¶
Bases: GqlBaseModel
Model for an issue, from the issue(id)/meeting(id){ issues } queries.
Headlines¶
Headline
¶
Bases: GqlBaseModel
Model for a headline, from headline(id)/meeting(id){ headlines } queries.
To-dos¶
Todo
¶
Bases: GqlBaseModel
Model for a to-do, from the todo(id) query and the to-do list queries.
Goals and milestones¶
GoalStatus
¶
Bases: StrEnum
Status of a v2 goal (rock), matching the GraphQL API's gqlGoalStatus values.
Distinct from bloomy.models.GoalStatus (v1's REST enum), whose values
(on, off, complete) do not match these.
Milestone
¶
Bases: GqlBaseModel
Model for a goal milestone, from goal(id){ milestones }.
There is no root milestone(id) query in the GraphQL API: a milestone is
only reachable through its parent goal (goal_id).
Goal
¶
Bases: GqlBaseModel
Model for a goal (rock), from the goal(id)/goals(userId) queries.
Metrics¶
MetricUnit
¶
Bases: StrEnum
Display unit for a v2 metric's scores, matching gqlUnitType.
MetricRule
¶
Bases: StrEnum
Comparison rule between a v2 metric's score and its goal.
Matches the GraphQL API's gqlLessGreater values.
Symbols: GREATER_THAN = >=, GREATER_THAN_NOT_EQUAL = >,
LESS_THAN = <, LESS_THAN_OR_EQUAL = <=, EQUAL_TO = ==,
BETWEEN = min_goal <= score <= max_goal.
MetricFrequency
¶
Bases: StrEnum
Scoring cadence for a v2 metric, matching gqlMetricFrequency.
Metric
¶
Bases: GqlBaseModel
Model for a metric (KPI), from the metric(id)/meeting(id){ metrics } queries.
id is always the Measurable id (aliased from measurableId). On
meeting(id){ metrics } the raw id field is instead a meeting-link id
(not the metric id), so this SDK never selects it -- see
bloomy.v2.operations.metric.
MetricScore
¶
Bases: GqlBaseModel
Model for a metric score, from metric(id){ scoresNonPaginated }.
There is no root score(id) query: a score is only reachable through
its parent metric (metric_id).