feat: add missing endpoints (Paged Members, Meeting Notifs) & address client gaps#327
Open
feat: add missing endpoints (Paged Members, Meeting Notifs) & address client gaps#327
Conversation
added 2 commits
March 25, 2026 10:56
Contributor
There was a problem hiding this comment.
Pull request overview
Adds missing Bot Framework/Teams API surface area to the Python SDK and aligns several models/clients with observed backend response shapes.
Changes:
- Added new API clients/models for batch conversation operations and meeting notifications.
- Added paged conversation members support and updated member/activity return types.
- Fixed/extended model field aliasing (AAD object ID variants,
userRole) and addedtenant_idtoTeamDetails; adjusted team conversations response parsing.
Reviewed changes
Copilot reviewed 27 out of 27 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/apps/src/microsoft_teams/apps/routing/activity_context.py | Removes deprecated/unused bot param from CreateConversationParams usage. |
| packages/apps/src/microsoft_teams/apps/contexts/function_context.py | Removes deprecated/unused bot param from CreateConversationParams usage. |
| packages/api/tests/unit/test_meeting_client.py | Adds tests for MeetingClient.send_notification(). |
| packages/api/tests/unit/test_conversation_client.py | Updates conversation tests for removed fields and adds paged members tests. |
| packages/api/tests/unit/test_batch_client.py | Adds unit tests for new BatchClient. |
| packages/api/tests/conftest.py | Extends mock transport with batch, meeting notification, paged members, and team conversations response shape. |
| packages/api/src/microsoft_teams/api/models/team_details.py | Adds tenant_id to TeamDetails. |
| packages/api/src/microsoft_teams/api/models/meetings/meeting_notification.py | Introduces meeting notification request/response models. |
| packages/api/src/microsoft_teams/api/models/meetings/init.py | Exports meeting notification models. |
| packages/api/src/microsoft_teams/api/models/conversation/paged_members_result.py | Introduces PagedMembersResult model for paged members API. |
| packages/api/src/microsoft_teams/api/models/conversation/init.py | Exports PagedMembersResult. |
| packages/api/src/microsoft_teams/api/models/batch/batch_operation_result.py | Introduces BatchOperationResult model. |
| packages/api/src/microsoft_teams/api/models/batch/init.py | Exports batch models module. |
| packages/api/src/microsoft_teams/api/models/account.py | Adds alias handling for aadObjectId vs objectId and maps role to userRole. |
| packages/api/src/microsoft_teams/api/models/init.py | Exposes batch models from the top-level models package. |
| packages/api/src/microsoft_teams/api/clients/team/client.py | Updates get_conversations() to read from response.json()[\"conversations\"]. |
| packages/api/src/microsoft_teams/api/clients/meeting/client.py | Adds send_notification() API. |
| packages/api/src/microsoft_teams/api/clients/conversation/params.py | Removes unused conversation list/get response types and trims create params. |
| packages/api/src/microsoft_teams/api/clients/conversation/member.py | Adds get_paged() and removes member delete operation. |
| packages/api/src/microsoft_teams/api/clients/conversation/client.py | Adds members().get_paged() and removes conversations list get(). |
| packages/api/src/microsoft_teams/api/clients/conversation/activity.py | Adjusts activity members return type to TeamsChannelAccount. |
| packages/api/src/microsoft_teams/api/clients/conversation/init.py | Updates exports after removing get/list params/response. |
| packages/api/src/microsoft_teams/api/clients/batch/params.py | Adds request param models for batch conversation endpoints. |
| packages/api/src/microsoft_teams/api/clients/batch/client.py | Adds BatchClient with send-to-users/tenant/team/channels operations. |
| packages/api/src/microsoft_teams/api/clients/batch/init.py | Exports the batch client and params. |
| packages/api/src/microsoft_teams/api/clients/api_client.py | Wires BatchClient into the top-level ApiClient. |
| packages/api/src/microsoft_teams/api/clients/init.py | Exposes batch client from the top-level clients package. |
packages/api/src/microsoft_teams/api/clients/conversation/member.py
Outdated
Show resolved
Hide resolved
packages/api/src/microsoft_teams/api/models/conversation/paged_members_result.py
Outdated
Show resolved
Hide resolved
added 2 commits
March 25, 2026 14:32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issues Addressed
rolein TeamsChannelAccount comes in asuserRoleinstead. updated to bestrinstead of fixed value, matching BE.aadObjectIdis either returned asaadObjectIdorobjectId(scenario dependent)GET v3/teams/{id}/conversations, needed to index intoresponse.json()["conversations"].I manually tested this.tenant_idinTeamDetailsDELETE v3/conversations/{id}/members/{id}GET v3/conversations/{id}/activities/{id}/membersreturnsTeamsChannelAccount, notAccounttopicandbotinCreateConversationParamsfor{service_url}/v3/conversationsGET v3/conversations routeNew Endpoints
Paged Conversation Members
Added get_paged() to ConversationMemberClient. Supports optional page_size and continuation_token query params.
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.Chatand ECS flag enabled for the tenant/bot.