Skip to content

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 GraphQL assignee field), never flattened into owner_id/owner_name. owner is None when unowned.
  • Related entities are nested refs too: an issue's parent meeting is meeting: MeetingRef | None, not flattened into meeting_id/meeting_name.
  • Datetimes use the _date suffix (created_date, due_date, completed_date, archived_date) and are always timezone-aware UTC datetime objects, converted from the API's unix-seconds floats.
  • Notes: description text is exposed as notes: str | None, computed from the underlying note pad. notes_id is 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).