Data Discovery Guide
How to find IDs and data buried in Microsoft Teams.
"How do I find which teams I'm in?"
exo-teams list-teams
Output shows team names and all their channels with IDs. The group ID (for SharePoint/files) is in the JSON:
exo-teams list-teams --json | jq '.[].teamSiteInformation.groupId'
"How do I find a channel ID?"
exo-teams list-teams
# Look for: #channel-name 19:abc123@thread.tacv2
Channel IDs look like 19:abc123@thread.tacv2. Pass them directly to get-messages.
"How do I find a conversation/chat ID?"
exo-teams list-chats
# Look for: [DM] Person Name 19:abc@unq.gbl.spaces
Chat IDs look like 19:abc@unq.gbl.spaces. Pass them to send, get-chat, mark-read, send-file.
"How do I find a file in SharePoint?"
# List default drive
exo-teams files "Team Name"
# List a specific subfolder
exo-teams files "Team Name" --path "General/Week 1"
# See class materials (education teams)
exo-teams files "Team Name" --drive "Class Materials"
# See ALL drives at once
exo-teams files "Team Name" --all-drives
The file path shown in files output is what you pass to --path for download.
"How do I find assignment details?"
# List all classes
exo-teams assignments --classes
# List all assignments with status
exo-teams assignments
# Get full JSON including classId, assignment ID, submission ID
exo-teams assignments --json
Assignment status icons:
[ ]- not submitted[~]- working / in progress[x]- submitted[>]- returned (graded)
"How do I check unread messages?"
# Quick overview
exo-teams unread
# Full list with IDs
exo-teams list-chats
# * prefix = unread
Unread is based on isRead == false in chat metadata. Note: isRead can be null (treated as read) or bool.
"How do I find someone's user ID?"
# Try new-dm - it will print the found user ID to stderr
exo-teams new-dm "their name" "test" 2>&1 | head
# stderr: found user: Alice Smith (alice@school.edu)
# stderr: conversation created: 19:...
# Or search via JSON
exo-teams list-chats --json | jq '.[].members[] | select(.friendlyName | test("Alice"))'
# Returns: {"mri":"8:orgid:uuid-here","friendlyName":"Alice Smith","role":"User"}
MRI format is 8:orgid:<uuid>. The UUID is the Azure AD object ID used in Graph API calls.
"How do I find what I submitted for an assignment?"
exo-teams assignments --json | jq '.[] | select(.displayName | test("Essay")) | {status: .submissionStatus, submitted: .submittedDateTime, resources: .submittedResources}'
Or just run exo-teams assignments - submitted resources are printed under each assignment.
"How do I see all my classes?"
exo-teams assignments --classes
# Output: ClassName class-uuid
The class UUID is what the assignments API uses internally.
ID Format Reference
| ID type | Format example | Where to get it |
|---|---|---|
| Channel ID | 19:abc@thread.tacv2 |
list-teams |
| Chat/DM ID | 19:abc@unq.gbl.spaces |
list-chats |
| Group ID (team) | UUID | list-teams --json -> teamSiteInformation.groupId |
| User MRI | 8:orgid:uuid |
list-chats --json -> members[].mri |
| Class ID | UUID | assignments --classes |
| Assignment ID | UUID | assignments --json -> id |
| Submission ID | UUID | assignments --json -> submissionId |