Skip to content

Add initial version of Web PubSub Chat service client - #50347

Open
yzt (Y-Sindo) wants to merge 4 commits into
Azure:mainfrom
Y-Sindo:azure-sdk-for-java-chat-serviceclient
Open

Add initial version of Web PubSub Chat service client#50347
yzt (Y-Sindo) wants to merge 4 commits into
Azure:mainfrom
Y-Sindo:azure-sdk-for-java-chat-serviceclient

Conversation

@Y-Sindo

@Y-Sindo yzt (Y-Sindo) commented Sep 3, 2026

Copy link
Copy Markdown
Member

Description

Add an initial version of Web PubSub Chat service client.

ApiView Link: https://spa.apiview.dev/review/8465e7e6e391403e97e5411ae37ffb7e?activeApiRevisionId=774995090eb445f98b998b35168e84ac&activeSamplesRevisionId=6d1a0217058447daabcc88665e08435a

Generated from Spec

  1. Initial Spec PR: Add Web PubSub Chat project azure-rest-api-specs#41187
  2. Follow-up Spec PR to correct spec in main branch (in-progress): Fix Web PubSub Chat spec azure-rest-api-specs#44881

All SDK Contribution checklist:

  • The pull request does not introduce [breaking changes]
  • CHANGELOG is updated for new features, bug fixes or other significant changes.
  • I have read the contribution guidelines.

General Guidelines and Best Practices

  • Title of the pull request is clear and informative.
  • There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

  • Pull request includes test coverage for the included changes.

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
34 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@Y-Sindo yzt (Y-Sindo) changed the title Azure sdk for java chat serviceclient Add initial version of Web PubSub Chat service client Sep 3, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

The new builder’s connection-string validation logic can allow invalid inputs and then fail with confusing downstream exceptions.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR introduces the initial Java client library for Azure Web PubSub Chat under sdk/webpubsub/azure-messaging-webpubsub-chat, along with CI/test wiring and test-resource updates to provision a Chat-enabled hub with persistent storage.

Changes:

  • Added the new azure-messaging-webpubsub-chat Maven module with generated service clients/models plus handwritten auth, reverse-proxy, and client-access-token helpers.
  • Added unit tests, live/playback tests, and samples/README for the new Chat client library.
  • Updated webpubsub service-area CI/test pipelines and Bicep test resources to include the new package and Chat hub + storage dependencies.
File summaries
File Description
sdk/webpubsub/tests.yml Adds azure-messaging-webpubsub-chat to the service-area test pipeline artifacts.
sdk/webpubsub/test-resources.bicep Provisions storage + role assignments + Chat persistent storage and Chat-enabled hub; updates Web PubSub resource API version/identity.
sdk/webpubsub/ci.yml Adds azure-messaging-webpubsub-chat to CI/release matrix parameters and artifacts.
sdk/webpubsub/azure-messaging-webpubsub-chat/tsp-location.yaml Defines the TypeSpec source location for Chat SDK generation.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/WebPubSubChatServiceClientBuilderTests.java Unit tests for builder behaviors (credentials, connection string, reverse proxy, validation).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/WebPubSubChatClientAccessTokenTests.java Unit tests for Chat client access-token generation semantics.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/models/ChatRolesAndPermissionsTests.java Verifies built-in role/permission wire values.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/WebPubSubChatServiceClientTestBase.java Generated test base for reference (disabled generated tests).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/UpdateMessageTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/ListRoomMembersTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/ListRolesTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/ListMessagesTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/GetUserTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/GetRoomTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/GetRoleTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/GetConversationTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/DeleteUserTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/DeleteRoomTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/DeleteRoomMemberTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/DeleteRoleTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/DeleteMessageTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceUserTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRoomTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRoomMemberTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRoleTests.java Generated reference test (disabled).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/ChatServiceClientTestBase.java Shared base for recorded/live Chat tests using TestProxy.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/ChatServiceClientLiveTests.java Sync live/playback tests for roles/rooms/users/messages.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/ChatServiceAsyncClientLiveTests.java Async live/playback tests for roles/rooms/users/messages.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/ChatMessageSeeder.java WebSocket-based helper to seed messages for message-history tests.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/WebPubSubChatSamples.java README snippet source demonstrating typical client usage.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/ReadmeSamples.java Generated placeholder snippet file for docs tooling.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/UpdateMessage.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/ListRoomMembers.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/ListRoles.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/ListMessages.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/GetUser.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/GetRoom.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/GetRole.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/GetConversation.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/DeleteUser.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/DeleteRoomMember.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/DeleteRoom.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/DeleteRole.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/DeleteMessage.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceUser.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRoomMember.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRoom.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRole.java Generated reference sample.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/resources/META-INF/azure-messaging-webpubsub-chat_metadata.json Generator metadata describing produced API surface and mappings.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/resources/azure-messaging-webpubsub-chat.properties SDK name/version properties for user-agent and diagnostics.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/module-info.java Java module definition (requires azure-core + nimbus-jose-jwt).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubTokenGenerator.java Shared JWT signing helper for key-based auth and local token generation.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubClientAccessTokenFactory.java Implements Chat client-access token creation (local signing vs service delegation).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubChatServiceVersion.java Defines the supported REST API version enum.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubChatServiceClientBuilder.java Builder wiring for endpoint/hub, key/connection-string, Entra ID, reverse proxy, pipeline.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubAuthenticationPolicy.java Key-based auth policy for Chat REST operations.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/ReverseProxyPolicy.java Per-call policy to route requests through a reverse proxy endpoint.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/package-info.java Package-level JavaDoc for the Chat client package.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/WebPubSubClientAccessToken.java Public model for token + WebSocket URL returned by getClientAccessToken.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/package-info.java Package-level JavaDoc for Chat models.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/MessageContent.java Generated model for message content (text/binary) including merge-patch support.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/HumanChatUser.java Generated discriminated subtype for chat user payloads.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/GetClientAccessTokenOptions.java Handwritten options type for Chat client access-token creation.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatUserKind.java Generated discriminator enum for user kinds.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatUser.java Generated base model for users with discriminator handling.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatRoomMember.java Generated model for room membership.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatRoom.java Generated model for rooms.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatRole.java Generated model for roles.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatPermission.java Generated permission enum values (ExpandableStringEnum).
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatMessage.java Generated model for messages including merge-patch support.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatConversation.java Generated model for conversations.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/BuiltInChatRoles.java Handwritten constants for built-in Chat role names.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/implementation/package-info.java Implementation package JavaDoc.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/implementation/models/package-info.java Implementation-models package JavaDoc.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/implementation/models/GenerateClientTokenResponse.java Generated internal model for service token response payload.
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/implementation/JsonMergePatchHelper.java Generated helper enabling merge-patch serialization behavior.
sdk/webpubsub/azure-messaging-webpubsub-chat/README.md New package README (auth, concepts, examples, links).
sdk/webpubsub/azure-messaging-webpubsub-chat/pom.xml New module POM with dependencies and build configuration.
sdk/webpubsub/azure-messaging-webpubsub-chat/customization/src/main/java/WebPubSubChatCustomization.java Post-generation customizations (builder shape, token API, paging sample fixes).
sdk/webpubsub/azure-messaging-webpubsub-chat/customization/pom.xml Customization project POM.
sdk/webpubsub/azure-messaging-webpubsub-chat/customization.md Post-generation instructions/reference behavior for the Chat SDK.
sdk/webpubsub/azure-messaging-webpubsub-chat/checkstyle-suppressions.xml Adds the standard ReverseProxyPolicy suppression, matching service SDK pattern.
sdk/webpubsub/azure-messaging-webpubsub-chat/CHANGELOG.md Introduces changelog for the new package (1.0.0-beta.1).
sdk/webpubsub/azure-messaging-webpubsub-chat/assets.json Adds assets tag metadata for test recordings.
eng/ignore-links.txt Temporarily ignores new package links until published/available.
Review details

Suppressed comments (2)

sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubChatServiceClientBuilder.java:394

  • The JavaDoc @return tag is incorrect here (@return null ...). This method returns the builder instance, so the JavaDoc should not claim it returns null.
     *
     * @param connectionString The Web PubSub connection string.
     * @return null The updated builder.
     */

sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubChatServiceClientBuilder.java:425

  • The JavaDoc @return tag is incorrect here (@return null ...). This method returns the builder instance, so the JavaDoc should not claim it returns null.
     * Sets the reverse proxy endpoint.
     *
     * @param reverseProxyEndpoint The reverse proxy endpoint.
     * @return null The updated builder.
     */
  • Files reviewed: 52/88 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment thread sdk/webpubsub/tests.yml Outdated
@Y-Sindo
yzt (Y-Sindo) force-pushed the azure-sdk-for-java-chat-serviceclient branch from b89ea7f to b1577b5 Compare September 3, 2026 12:28
@Y-Sindo
yzt (Y-Sindo) force-pushed the azure-sdk-for-java-chat-serviceclient branch from b1577b5 to b7a3f22 Compare September 3, 2026 12:52
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.

2 participants