Skip to content

Squads API

GET /api/squads

Returns squads scoped by access level. Executive/Head see all; Managers see squads they manage; Employees see their own squad.

Response fields: id, name, description, dm_user_id, lead_user_id, colour, kickoff_day, kickoff_time, focus_note, member_count, open_action_count, last_session_date, Slack channel fields.

GET /api/squads/:id

Returns full squad detail including members, recent sessions, and DM/lead names.

PUT /api/squads/:id

Permission: Executive for existing fields, Manager+ for new fields.

Body: description, dm_user_id, lead_user_id, colour, kickoff_day, kickoff_time, focus_note, plus existing Slack channel fields.

GET /api/squads/:id/performance

Combined endpoint returning utilisation grid, time entry flags, AI adoption breakdown, and scorecard summary for the squad.

GET /api/squads/:id/sessions

Returns sessions newest first. Employee/Lead access returns limited fields (no 4P notes).

Query params: limit, page

POST /api/squads/:id/sessions

Creates a new session for the given week. If a session already exists for this week (UNIQUE constraint), returns the existing session.

Body: session_date (ISO date, Monday), week_ending (ISO date, Friday), facilitator_id (optional)

Captures snapshots at creation: utilisation, AI adoption, pending time entries, open actions, employee context.

GET /api/squads/:id/sessions/:sessionId

Full session detail. Employee/Lead access omits 4P notes. Includes linked actions.

PATCH /api/squads/:id/sessions/:sessionId

Body: progress_notes, plans_notes, problems_notes, promotions_notes, attendees (JSON array), facilitator_id

POST /api/squads/:id/sessions/:sessionId/complete

Sets status to completed, records completed_at and completed_by.

POST /api/squads/:id/sessions/:sessionId/generate

Gathers context (utilisation, time entries, Granola meetings, open actions, client health, per-employee data) and calls Claude to generate a 4P draft.

Response: { progress, plans, problems, promotions } — draft text for each section.

GET /api/squads/:id/actions

Query params: completed (boolean), session_id

POST /api/squads/:id/actions

Body: title, assigned_to (user ID), due_date, notes, session_id

Also creates a mirrored action_items record.

PATCH /api/squad-actions/:actionId

Body: title, assigned_to, due_date, notes

POST /api/squad-actions/:actionId/complete

Marks the action and its mirrored action_items record as completed.

Squad CRUD is also available via the admin API (/api/admin/squads), which requires Executive access.