Skip to content

feat(subscriptions): channel mode + reset (PR 7/7)#519

Open
sarthak688 wants to merge 2 commits into
feat/subscriptions-publisher-updatesfrom
feat/subscriptions-mode-reset
Open

feat(subscriptions): channel mode + reset (PR 7/7)#519
sarthak688 wants to merge 2 commits into
feat/subscriptions-publisher-updatesfrom
feat/subscriptions-mode-reset

Conversation

@sarthak688

Copy link
Copy Markdown

PR 7/7 — final PR in the Notification SDK stack. Stacked on top of #518. Completes the 15-method onboarding.

Adds the last two Subscriptions methods: channel activation and restore-defaults.

Methods Added

Layer Method Signature
Service subscriptions.updateMode() updateMode(tenantId: string, publisherId: string, mode: AllowedMode): Promise<SubscriptionUpdateModeResponse>
Service subscriptions.reset() reset(tenantId: string, publisherId: string): Promise<SubscriptionGetResponse>

Endpoints Called

Method HTTP Endpoint OAuth Scope
updateMode() POST notificationservice_/usersubscriptionservice/api/v1/UserSubscription/UpdateMode NotificationService
reset() POST notificationservice_/usersubscriptionservice/api/v1/UserSubscription/Reset NotificationService
  • updateMode activates/deactivates a single channel (Email/Slack/Teams) for a publisher. The mode argument is { name: NotificationMode, isActive: boolean }. Pair with getSupportedChannels first to avoid activating a channel that's disabled at the tenant level.
  • reset is special among the writes — it returns the publisher's post-reset subscription state (same shape as getAll), not an empty operation response. Useful for refreshing client state after a reset without an extra round-trip.

Example Usage

import { NotificationMode } from '@uipath/uipath-typescript/notifications';

// Activate email delivery for a publisher
await subscriptions.updateMode(tenantId, '<publisherId>', {
  name: NotificationMode.Email,
  isActive: true,
});

// Restore a publisher's subscriptions to defaults; response includes new state
const { publishers } = await subscriptions.reset(tenantId, '<publisherId>');

API Response vs SDK Response

Method SDK Response
updateMode { success: true, data: { publisherId, mode } }
reset { publishers: [...] } (same shape as getAll/getPublishers)

Verification

Check Status
npm run typecheck ✅ clean
npm run lint ✅ 0 warnings, 0 errors
npm run test:unit ✅ 1833 tests across 65 files (36 in notification suite — full PR 1→7 coverage)
npm run build dist/notifications/index.{mjs,cjs,d.ts} produced

Integration: reset round-trip — call reset on the first visible publisher, confirm the response includes that publisher. updateMode is unit-only because it needs an active Slack/Teams channel on the test tenant to exercise the full path.

Files

Area Files
Endpoint constants src/utils/constants/endpoints/notification.ts (UPDATE_MODE, RESET)
Models src/models/notification/subscriptions.models.ts (SubscriptionUpdateModeResponse + ServiceModel methods)
Service src/services/notification/subscriptions.ts
Unit tests tests/unit/services/notification/subscriptions.test.ts (+5 tests)
Integration tests tests/integration/shared/notification/subscriptions.integration.test.ts (+1 reset test)
Docs docs/oauth-scopes.md

End-of-Stack Summary

This PR closes the 7-PR stack onboarding the Notifications + Subscriptions services:

# Branch Methods PR
1 feat/notifications-sdk getAll #512
2 feat/notifications-mark-read markRead, markUnread, markAllRead #513
3 feat/notifications-delete deleteNotifications, deleteAll #514
4 feat/subscriptions-sdk getAll, getPublishers, getSupportedChannels #516
5 feat/subscriptions-topic-updates updateTopic, updateCategory #517
6 feat/subscriptions-publisher-updates updatePublisher, updateTopicGroup #518
7 feat/subscriptions-mode-reset (this PR) updateMode, reset

Total: 15 methods, 36 unit tests, 11 integration tests across 7 reviewable PRs. Each PR builds on the previous one; merge top-down.

Replaces #500.

🤖 Generated with Claude Code

Final two methods completing the Subscriptions service:
- updateMode: activate/deactivate a notification channel (Email/Slack/Teams)
  for a publisher. Check getSupportedChannels first.
- reset: restore a publisher's subscriptions to its defaults, returning
  the post-reset state.

Adds UPDATE_MODE + RESET endpoints, SubscriptionUpdateModeResponse type,
oauth-scopes entries, 5 new unit tests, and a reset integration test.

This completes the 7-PR stack onboarding the Notification + Subscriptions
services (15 methods total).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@claude

claude Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

✅ No issues found. Checked for bugs and CLAUDE.md compliance.

…pes entries

Final piece of the @internal treatment across the 7-PR stack.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@claude

claude Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

✅ No issues found. Checked for bugs and CLAUDE.md compliance.

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.

1 participant