Skip to content

feat: add missing endpoints (Paged Members, Meeting Notifs) & address client gaps#516

Merged
lilyydu merged 7 commits intomainfrom
lilyydu/client-gaps
Apr 14, 2026
Merged

feat: add missing endpoints (Paged Members, Meeting Notifs) & address client gaps#516
lilyydu merged 7 commits intomainfrom
lilyydu/client-gaps

Conversation

@lilyydu
Copy link
Copy Markdown
Contributor

@lilyydu lilyydu commented Apr 9, 2026

equivalent to python: microsoft/teams.py#327

  • went through the list of gaps and differences betw our clients vs. backend implementation
  • added in the missing endpoints from BF, verified that these exist in backend codebase, and manually had Claude verify them w/ my test bot

Issues Addressed

  • in TeamsChannelAccount, userRole updated to be str instead of fixed value, matching BE.
  • aadObjectId is either returned as aadObjectId or objectId (scenario dependent, created helper fn to map this)
  • for GET v3/teams/{id}/conversations, needed to index into response.json()["conversations"]. I manually tested this.
  • missing tenant_id in TeamDetails
  • No DELETE member route for DELETE v3/conversations/{id}/members/{id} -> DEPRECATED
  • GET v3/conversations/{id}/activities/{id}/members returns TeamsChannelAccount, not Account
  • Extra parameters topic and bot in CreateConversationParams for {service_url}/v3/conversations -> DEPRECATED
  • No GET v3/conversations route -> DEPRECATED
  • removed is_group from CreateConversationParams - ignored on backend -> DEPRECATED

New Endpoints

  1. Paged Conversation Members
    Added get_paged() to ConversationMemberClient. Supports optional page_size and continuation_token query params.
    For pageSize to work, the minimum is 50, by default its 200, and max is 500.

  2. Meeting Notifications
    Added send_notification() to MeetingClient. Sends a targeted in-meeting notification to specific recipients on specified surfaces (e.g. meetingTabIcon, meetingStage). This is different from targeted messages, this was introduced in 2022. Requires this RSC permission OnlineMeetingNotification.Send.Chat and ECS flag enabled for the tenant/bot.

@lilyydu lilyydu requested a review from corinagum April 9, 2026 23:30
Comment thread packages/api/src/clients/conversation/member.ts
Comment thread packages/api/src/clients/conversation/member.ts
Comment thread packages/api/src/clients/meeting.ts
Comment thread packages/api/src/clients/meeting.ts
Comment thread packages/api/src/clients/conversation/activity.ts Outdated
Copilot AI review requested due to automatic review settings April 13, 2026 21:52
corinagum
corinagum previously approved these changes Apr 13, 2026
Copy link
Copy Markdown
Collaborator

@corinagum corinagum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR closes several API gaps between the SDK and the Teams backend by adding missing endpoints (paged conversation members and meeting notifications), normalizing inconsistent backend payload fields, and aligning a few response shapes/types with what the backend actually returns.

Changes:

  • Add ConversationMemberClient.getPaged() plus PagedMembersResult model and export wiring.
  • Add MeetingClient.sendNotification() plus meeting-notification models and exports.
  • Normalize aadObjectId vs objectId discrepancies and fix TeamClient.getConversations() response shape handling.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
packages/apps/src/utils/function-context.ts Stops sending deprecated fields when creating 1:1 conversations.
packages/apps/src/contexts/activity.ts Stops sending deprecated fields when creating 1:1 conversations during group-chat SSO flow.
packages/api/src/models/team-details.ts Adds optional tenantId to TeamDetails.
packages/api/src/models/role.ts Extends Role union with 'skill'.
packages/api/src/models/meeting/meeting-notification.ts Adds models for targeted meeting notifications.
packages/api/src/models/meeting/index.ts Exports meeting-notification models.
packages/api/src/models/conversation/paged-members-result.ts Adds model for paged conversation members responses.
packages/api/src/models/conversation/index.ts Exports PagedMembersResult.
packages/api/src/models/account.ts Updates userRole typing and adds resolveAadObjectId() normalization helper.
packages/api/src/clients/team.ts Fixes conversations response parsing to use data.conversations.
packages/api/src/clients/team.spec.ts Updates mock shape for conversations response.
packages/api/src/clients/meeting.ts Adds sendNotification() endpoint wrapper.
packages/api/src/clients/meeting.spec.ts Adds tests for meeting notifications and URL-encoding.
packages/api/src/clients/conversation/members.spec.ts Updates mocks and adds coverage for getPaged().
packages/api/src/clients/conversation/member.ts Normalizes aadObjectId in member APIs and adds getPaged().
packages/api/src/clients/conversation/index.ts Exposes members().getPaged() and adds deprecation annotations.
packages/api/src/clients/conversation/activity.ts Returns TeamsChannelAccount-shaped members and normalizes aadObjectId.
packages/api/src/clients/conversation/activity.spec.ts Updates mocks and adds test for aadObjectId normalization.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/apps/src/utils/function-context.ts
Comment thread packages/api/src/models/account.ts Outdated
Comment thread packages/api/src/clients/conversation/member.ts Outdated
Comment thread packages/api/src/clients/conversation/member.ts Outdated
Comment thread packages/api/src/clients/conversation/activity.ts Outdated
Comment thread packages/api/src/clients/meeting.ts
Copy link
Copy Markdown
Collaborator

@corinagum corinagum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, thanks for the typings updates :)

@lilyydu lilyydu merged commit dc3b3c5 into main Apr 14, 2026
7 checks passed
@lilyydu lilyydu deleted the lilyydu/client-gaps branch April 14, 2026 22:42
@heyitsaamir heyitsaamir mentioned this pull request Apr 16, 2026
heyitsaamir added a commit that referenced this pull request Apr 16, 2026
## Summary
- Merges all changes from `main` since v2.0.7 into `release`
- Sets `version.json` to stable `2.0.8`

### What's included
- **feat:** Sovereign cloud support (GCCH, DoD, China) (#500)
- **feat:** Add missing endpoints — Paged Members, Meeting Notifications
& client gaps (#516)
- **feat:** Graceful stream cancellation on 403 (#513)
- **feat:** GitHub issue analysis → Teams notification workflow (#517)
- **fix:** Improve error message when app credentials are missing (#527)
- **fix:** Surface Graph API error body in GraphError (#524)
- **fix:** Resolve missing deps, broken JSON, type errors, and typos in
CLI templates (#521)
- **fix:** Drain entire queue per flush cycle (#520)
- **fix:** Merge User-Agent headers when cloning HTTP client (#508)
- Dependency bumps: hono, axios, vite, @hono/node-server

## Post-merge
1. Trigger the [release
pipeline](https://dev.azure.com/DomoreexpGithub/Github_Pipelines/_build?definitionId=52&_a=summary)
for `release` with **Public** publish type
2. Bump `version.json` on `main` to `2.0.9-preview.{height}`

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants