meeting
Represents a scheduled meeting within a circle. Meetings support structured steps, attendee tracking, and video conferencing integration, and can be one-time or part of a recurring series.
Fields
| Field | Type | Description |
|---|---|---|
id | uuid | Unique identifier for the meeting |
orgId | uuid | Reference to the organization |
circleId | uuid | Reference to the circle |
title | String | Title of the meeting |
summary | String | Summary or notes from the meeting |
startDate | Timestamp | When the meeting starts |
endDate | Timestamp | When the meeting ends |
createdAt | Timestamp | When the meeting was created |
ended | Boolean | Whether the meeting has ended (default: false) |
archived | Boolean | Whether the meeting is archived (default: false) |
private | Boolean | Whether the meeting is private (default: false) |
invitedReadonly | Boolean | Whether invited members are read-only (default: false) |
currentStepId | uuid | ID of the current active step (optional) |
stepsConfig | [meeting_step_config] | Configuration array defining the meeting structure |
videoConf | videoconf | Video conferencing details (optional) |
recurringId | uuid | Reference to the recurring meeting configuration (optional) |
recurringDate | Timestamp | Date in the recurring series (optional) |
Relationships
Object Relationships:
orgβ The organization this meeting belongs tocircleβ The circle this meeting is associated withrecurringβ The recurring meeting configuration (if part of a series)
Array Relationships:
meeting_attendeesβ Members attending the meetingstepsβ Steps or agenda items in the meeting
Query Examples
List Meetings for an Organization
query GetMeetings($orgId: uuid!) {
meeting(where: { archived: { _eq: false }, orgId: { _eq: $orgId } }) {
id
title
startDate
endDate
ended
circle {
role {
name
}
}
meeting_attendees {
member {
name
}
present
}
steps {
id
data
}
videoConf
}
}
Get a Specific Meeting
query GetMeeting($id: uuid!) {
meeting_by_pk(id: $id) {
id
title
startDate
endDate
circle {
role {
name
}
}
}
}
Mutation Examples
Create a Meeting
mutation CreateMeeting {
insert_meeting_one(
object: {
orgId: "your-org-id"
circleId: "circle-id"
title: "Weekly Team Sync"
startDate: "2024-01-15T10:00:00Z"
endDate: "2024-01-15T11:00:00Z"
summary: "Team sync meeting"
stepsConfig: [
{ id: "step-1", type: Tour, title: "Notes" }
{ id: "step-2", type: Threads, title: "Topics" }
{ id: "step-3", type: Checklist, title: "Checklist" }
{ id: "step-4", type: Indicators, title: "Indicators" }
{ id: "step-5", type: Tasks, title: "Tasks" }
]
private: false
invitedReadonly: false
meeting_attendees: {
data: [{ memberId: "member-id-1" }, { memberId: "member-id-2" }]
}
}
) {
id
title
startDate
}
}
Update Meeting Status
mutation UpdateMeeting {
update_meeting_by_pk(
pk_columns: { id: "meeting-id" }
_set: { ended: true, summary: "Meeting notes and outcomes..." }
) {
id
ended
summary
}
}
Permissions
Meeting access is controlled by multiple factors:
- Circle participants: Can access and manage their circleβs meetings
- Private meetings: Only visible to circle participants and invited attendees
- Organization members: Can access non-private meetings
- Invited attendees: Can participate based on the
invitedReadonlysetting
Notes
Meetings support structured agendas through the stepsConfig array. Video
conferencing can be integrated with various providers. Recurring meetings are
managed via the meeting_recurring entity. The combination of private and
invitedReadonly settings enables flexible access control.