meeting
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) |
archivedAt | Timestamp | When the meeting was archived; null if active |
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: { archivedAt: { _is_null: true }, 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: "Discussions" } { 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.