Skip to content

feat: upgrade notification services controller to v4 api#9384

Draft
zelkibuilds wants to merge 8 commits into
mainfrom
feat/upgrade-to-notif-api-v4
Draft

feat: upgrade notification services controller to v4 api#9384
zelkibuilds wants to merge 8 commits into
mainfrom
feat/upgrade-to-notif-api-v4

Conversation

@zelkibuilds

Copy link
Copy Markdown
Contributor

Explanation

@metamask/notification-services-controller currently targets Notification API v3, which uses fixed notification_type values ("on-chain" / "platform") to distinguish notification shapes. The backend has moved to v4, where notification_type and notification_subtype are producer-set database fields (e.g. "wallet_activity" + "eth_sent" for on-chain, "perps" + "position_liquidated" for platform). Without this change, the controller continues calling v3 endpoints and types responses using the old discriminator model.

  • Switch list/mark-as-read endpoints to /api/v4/notifications and /api/v4/notifications/mark-as-read
  • Regenerate schema.ts from the latest Notification API OpenAPI spec (v4 + legacy v1–v3 schemas)
  • Bind application types to v4 shapes (NotificationOutputV4, PlatformNotificationV4, OnChainNotificationV4)
  • Add exported type guards isOnChainNotification() / isPlatformNotification() — on-chain is identified by notification_type === "wallet_activity"
  • Update toRawAPINotification() to normalize v4 responses into the existing internal model:
    • On-chain: set internal type from payload.data.kind (preserves existing processor routing)
    • Platform: set internal type to TRIGGER_TYPES.PLATFORM regardless of producer notification_type (e.g. "perps"), so processNotification() routing continues to work
  • Update mocks to v4 field shapes

References

https://consensyssoftware.atlassian.net/browse/GE-330

  • Notification API OpenAPI spec (source of truth for schema.ts regeneration)
  • Prior v3 migration for context: #7102
  • Breaking change: consumers checking notification_type === "on-chain" | "platform" must migrate to v4 values and/or use isOnChainNotification() / isPlatformNotification()

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

@zelkibuilds

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.3-preview-429f86194
@metamask-previews/accounts-controller@39.0.4-preview-429f86194
@metamask-previews/address-book-controller@7.1.2-preview-429f86194
@metamask-previews/ai-controllers@0.7.0-preview-429f86194
@metamask-previews/analytics-controller@1.2.1-preview-429f86194
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-429f86194
@metamask-previews/announcement-controller@8.1.0-preview-429f86194
@metamask-previews/app-metadata-controller@2.0.1-preview-429f86194
@metamask-previews/approval-controller@9.0.2-preview-429f86194
@metamask-previews/assets-controller@10.0.1-preview-429f86194
@metamask-previews/assets-controllers@109.3.0-preview-429f86194
@metamask-previews/authenticated-user-storage@3.0.0-preview-429f86194
@metamask-previews/base-controller@9.1.0-preview-429f86194
@metamask-previews/base-data-service@0.1.3-preview-429f86194
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-429f86194
@metamask-previews/bridge-controller@77.3.2-preview-429f86194
@metamask-previews/bridge-status-controller@74.0.2-preview-429f86194
@metamask-previews/build-utils@3.0.4-preview-429f86194
@metamask-previews/chain-agnostic-permission@1.6.2-preview-429f86194
@metamask-previews/chomp-api-service@3.1.0-preview-429f86194
@metamask-previews/claims-controller@0.5.3-preview-429f86194
@metamask-previews/client-controller@1.0.1-preview-429f86194
@metamask-previews/client-utils@0.0.0-preview-429f86194
@metamask-previews/compliance-controller@2.1.0-preview-429f86194
@metamask-previews/composable-controller@12.0.1-preview-429f86194
@metamask-previews/config-registry-controller@0.4.1-preview-429f86194
@metamask-previews/connectivity-controller@0.2.0-preview-429f86194
@metamask-previews/controller-utils@12.3.0-preview-429f86194
@metamask-previews/core-backend@6.5.0-preview-429f86194
@metamask-previews/delegation-controller@3.0.2-preview-429f86194
@metamask-previews/earn-controller@12.2.2-preview-429f86194
@metamask-previews/eip-5792-middleware@3.0.4-preview-429f86194
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-429f86194
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-429f86194
@metamask-previews/ens-controller@19.1.5-preview-429f86194
@metamask-previews/eth-block-tracker@15.0.1-preview-429f86194
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-429f86194
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-429f86194
@metamask-previews/foundryup@1.0.1-preview-429f86194
@metamask-previews/gas-fee-controller@26.2.4-preview-429f86194
@metamask-previews/gator-permissions-controller@4.2.2-preview-429f86194
@metamask-previews/geolocation-controller@0.1.3-preview-429f86194
@metamask-previews/java-tron-up@1.0.0-preview-429f86194
@metamask-previews/json-rpc-engine@10.5.0-preview-429f86194
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-429f86194
@metamask-previews/keyring-controller@27.1.0-preview-429f86194
@metamask-previews/local-node-utils@1.0.0-preview-429f86194
@metamask-previews/logging-controller@8.0.2-preview-429f86194
@metamask-previews/message-manager@14.1.2-preview-429f86194
@metamask-previews/messenger@1.2.0-preview-429f86194
@metamask-previews/messenger-cli@0.2.0-preview-429f86194
@metamask-previews/money-account-balance-service@2.1.2-preview-429f86194
@metamask-previews/money-account-controller@0.3.3-preview-429f86194
@metamask-previews/money-account-upgrade-controller@2.2.1-preview-429f86194
@metamask-previews/multichain-account-service@11.1.0-preview-429f86194
@metamask-previews/multichain-api-middleware@4.0.0-preview-429f86194
@metamask-previews/multichain-network-controller@3.2.1-preview-429f86194
@metamask-previews/multichain-transactions-controller@7.1.1-preview-429f86194
@metamask-previews/name-controller@9.1.2-preview-429f86194
@metamask-previews/network-controller@34.0.0-preview-429f86194
@metamask-previews/network-enablement-controller@5.4.1-preview-429f86194
@metamask-previews/notification-services-controller@24.3.0-preview-429f86194
@metamask-previews/passkey-controller@2.0.1-preview-429f86194
@metamask-previews/permission-controller@13.1.1-preview-429f86194
@metamask-previews/permission-log-controller@5.1.0-preview-429f86194
@metamask-previews/perps-controller@9.2.0-preview-429f86194
@metamask-previews/phishing-controller@17.2.0-preview-429f86194
@metamask-previews/platform-api-docs@0.0.0-preview-429f86194
@metamask-previews/polling-controller@16.0.8-preview-429f86194
@metamask-previews/preferences-controller@23.1.0-preview-429f86194
@metamask-previews/profile-metrics-controller@4.0.1-preview-429f86194
@metamask-previews/profile-sync-controller@28.2.0-preview-429f86194
@metamask-previews/ramps-controller@15.0.0-preview-429f86194
@metamask-previews/rate-limit-controller@7.0.1-preview-429f86194
@metamask-previews/react-data-query@0.2.1-preview-429f86194
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-429f86194
@metamask-previews/sample-controllers@5.0.3-preview-429f86194
@metamask-previews/seedless-onboarding-controller@10.0.3-preview-429f86194
@metamask-previews/selected-network-controller@26.1.5-preview-429f86194
@metamask-previews/shield-controller@5.1.2-preview-429f86194
@metamask-previews/signature-controller@39.2.7-preview-429f86194
@metamask-previews/smart-transactions-controller@24.2.4-preview-429f86194
@metamask-previews/snap-account-service@1.0.0-preview-429f86194
@metamask-previews/social-controllers@2.3.1-preview-429f86194
@metamask-previews/solana-test-validator-up@1.0.0-preview-429f86194
@metamask-previews/stellar-quickstart-up@0.0.0-preview-429f86194
@metamask-previews/storage-service@1.0.2-preview-429f86194
@metamask-previews/subscription-controller@6.2.0-preview-429f86194
@metamask-previews/transaction-controller@68.2.2-preview-429f86194
@metamask-previews/transaction-pay-controller@23.17.4-preview-429f86194
@metamask-previews/user-operation-controller@41.2.6-preview-429f86194
@metamask-previews/wallet@6.0.0-preview-429f86194
@metamask-previews/wallet-cli@0.0.0-preview-429f86194

@zelkibuilds zelkibuilds self-assigned this Jul 3, 2026
@zelkibuilds zelkibuilds added the team-notifications Notification Team changes. https://github.com/orgs/MetaMask/teams/notifications label Jul 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

team-notifications Notification Team changes. https://github.com/orgs/MetaMask/teams/notifications

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant