Skip to content

Org Chart

The org chart provides a visual hierarchy of your engineering organization, showing team relationships, sizes, and managers.

Navigate to Organization > Org Chart to see the tree visualization.

The org chart displays:

  • Team nodes with name and member count
  • Parent-child relationships as tree connections
  • Manager for each team (if assigned)
  • Total member count including all descendant teams
  • Root teams at the top level (no parent)

The org chart automatically identifies the team manager by looking for members with these roles (in priority order):

  1. owner
  2. manager
  3. lead
  4. team_lead

The first match is displayed as the team’s manager.

The org chart supports drag-and-drop reorganization (admin only):

  1. Click on a team node
  2. Drag it to a new parent team
  3. Confirm the change

Bulk update team relationships:

Terminal window
curl -X PUT https://shoehorn.example.com/api/v1/admin/org-chart \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"updates": [
{"team_id": "<team-a-uuid>", "parent_team_id": "<new-parent-uuid>"},
{"team_id": "<team-b-uuid>", "parent_team_id": null}
]
}'

Setting parent_team_id to null promotes the team to a root-level team.

  • No circular references: A team cannot be its own ancestor. The system validates this with a recursive check before applying changes.
  • Atomic updates: When bulk updating, all changes succeed or all fail.
  • Soft updates: Changing a parent does not affect team members or owned entities.

The org chart API returns all teams in a flat list with relationship data:

Terminal window
curl https://shoehorn.example.com/api/v1/organization/org-chart \
-H "Authorization: Bearer <token>"

Each team in the response includes:

FieldDescription
idTeam UUID
nameDisplay name
slugURL slug
parent_team_idParent team UUID (null for root)
sub_team_idsArray of child team UUIDs
member_countDirect members only
total_member_countDirect + all descendants
manager_user_idPrimary manager UUID
manager_roleManager’s role (owner/manager/lead)