circle
Represents a hierarchical organizational circle that can contain members, roles, and child circles. Circles organize teams and responsibilities within an organization.
Fields
| Field | Type | Description |
|---|---|---|
id | uuid | Unique identifier for the circle |
orgId | uuid | Reference to the organization |
roleId | uuid | Reference to the role associated with this circle |
parentId | uuid | Reference to the parent circle (optional, null for top-level circles) |
archivedAt | Timestamp | When the circle was archived; null if active |
createdAt | Timestamp | When the circle was created |
Relationships
Object Relationships:
org— The organization this circle belongs toparent— The parent circle (if any)role— The role that defines this circle’s purpose and accountabilities
Array Relationships:
children— Child circles within this circlemembers— Circle membershipsleaders— Circle leadership assignmentsparticipants— All participants (including inherited from child circles)meetings— Meetings associated with this circlemeetings_recurring— Recurring meetings for this circletasks— Tasks assigned to this circledecisions— Decisions made within this circlethreads— Discussion threads in this circlehostCircleLinks— Links where this circle hosts other circlesinvitedCircleLinks— Links where this circle is invited to other circles
Query Examples
List Circles in an Organization
query GetCircles($orgId: uuid!) {
circle(where: { orgId: { _eq: $orgId } }) {
id
role {
name
purpose
}
members {
member {
name
}
}
children {
id
role {
name
}
}
parent {
id
role {
name
}
}
}
}
Get a Specific Circle
query GetCircle($id: uuid!) {
circle_by_pk(id: $id) {
id
role {
name
}
}
}
Mutation Examples
Create a Circle
mutation CreateCircle {
insert_circle_one(
object: {
orgId: "your-org-id"
roleId: "role-id"
parentId: "parent-circle-id"
}
) {
id
role {
name
}
}
}
Move a Circle
A circle’s only directly updatable field is its parentId (moving it under another circle).
mutation MoveCircle {
update_circle_by_pk(
pk_columns: { id: "circle-id" }
_set: { parentId: "new-parent-circle-id" }
) {
id
parentId
}
}
archivedAt is not writable on a circle directly. Archiving a circle is a
nested operation handled by the application: it archives the role, members,
invited roles, meetings, recurring meetings, topics, tasks and decisions of
the whole subtree together, and is reversible from the history.
Permissions
Circle access follows the organization’s governanceMode. In Free mode any member can modify the org chart. In Agile mode a circle’s leaders modify it directly. In Strict mode structural changes go through proposals, while organization owners can always edit.
Circles form a hierarchical tree through the parentId relationship. Each
circle must have an associated role that defines its purpose and
accountabilities. Circle participants include direct members plus leaders of
child and linked circles. Meetings, tasks, and decisions are organized within
circles.