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).
Teams — /api/org/{slug}/teams
Section titled “Teams — /api/org/{slug}/teams”| Method · Route | Purpose | Source |
|---|---|---|
GET / | List teams | ReportingEndpoints.cs:23 |
POST / | Create a team (Name, Kind?, LeadConnectedId?, ParentTeamId? — teams nest) | :111 |
PUT /{teamId}/lead | Set/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}/members | Team members (?includeSubTeams=true) | :170 |
POST /{teamId}/members | Add 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).
Reporting tree & edges
Section titled “Reporting tree & edges”| Method · Route | Purpose | Source |
|---|---|---|
GET /api/org/{slug}/reporting/graph | The full tree — people + teams + all three edge types | :36 |
POST /api/org/{slug}/relationships | Add 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.