Skip to content

Teams & reporting

A team is a ConnectedId with Type=Group (see Connected ID). Reporting structure is modeled as edges between ConnectedIds, not columns — three relationship types: member_of (team membership), reporting (reports-to), reference (dotted-line).

Method · RoutePurposeSource
GET /List teamsReportingEndpoints.cs:23
POST /Create a team (Name, Kind?, LeadConnectedId?, ParentTeamId? — teams nest):111
PUT /{teamId}/leadSet/clear the team lead (null clears). Re-syncs every member’s auto reporting line (member → Lead) and emits reporting.team.lead_changed:142
GET /{teamId}/membersTeam members (?includeSubTeams=true):170
POST /{teamId}/membersAdd a member (ConnectedIdId). May return needsResolution when a reporting conflict needs the add/replace/none choice:186
DELETE /{teamId}/members/{memberId}Remove a member:224

When a member is added to a team with a lead, an automatic reporting edge (member → lead) is created. If the member already has a manager, the response carries needsResolution + existingManagers; the client resolves with Resolution = add / replace / none (:266).

Method · RoutePurposeSource
GET /api/org/{slug}/reporting/graphThe full tree — people + teams + all three edge types:36
POST /api/org/{slug}/relationshipsAdd a reporting or reference edge (SourceConnectedId, TargetConnectedId, Type):52
DELETE /api/org/{slug}/relationships?sourceId=&targetId=&type=Remove an edge:84

member_of edges are managed through the team-members endpoints above; /relationships handles reporting/reference only (:254). Edges are many-to-many and nestable. Related: Members, Roles & permissions.