Skip to content

Support mixed identity webhook subscriptions across SDKs and CLI - #185

Draft
dimavrem22 wants to merge 1 commit into
mainfrom
feat/identity-webhook-subscriptions
Draft

dimavrem22 wants to merge 1 commit into
mainfrom
feat/identity-webhook-subscriptions

Conversation

@dimavrem22

@dimavrem22 dimavrem22 commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Executive Summary

Support identity-owned subscriptions combining notification events across email, SMS, iMessage, calls, and A2A in the Python, TypeScript, and Rust SDKs and CLI.

Description

Accept mixed notification families under a canonical identity while retaining mutually exclusive legacy owner inputs. Subscription revision enables optional conditional update/delete, and event-list updates keep full-replacement semantics.

Delivery history exposes canonical targets and replay availability without losing original subscription IDs. Examples, reference docs, bundled skills, and release versions are updated to 0.7.2.

Reason

A subscription should follow an identity across channel provisioning changes. Clients also need a revision precondition to safely preserve concurrent event selections during reconciliation.

Decisions

  • Keep existing public method signatures and legacy response parsing compatible. Rust conditional operations use additive helpers.
  • Incoming-call actions remain separate synchronous call-control configuration.
  • All existing notification types are allowed; this does not automatically select every event.
  • Server validation remains authoritative for exact event membership. No wildcard subscription behavior is added.
  • Release order: Publish 0.7.2 only after the compatible API is available; publish the TypeScript SDK before the CLI. The existing 0.7.1 release already includes custom signatures and remains unchanged.
  • Rollout: No consolidation job is planned. Installed plugins may keep their existing separate event-family subscriptions; upgrading them is not a prerequisite for the ownership migration.

Testing

  • Python: 1,127 passed, 3 skipped; Ruff passed.
  • TypeScript: 1,126 passed, 3 skipped; build and packed-bundle verification passed.
  • CLI: 150 passed, including actual local HTTP create/update/delete wire requests.
  • Rust: 357 unit tests and 3 doctests passed, 1 doctest ignored; all-target/all-feature Clippy with warnings denied passed.
  • Python wheel/sdist and npm tarball reproduced byte-for-byte across two builds; the TypeScript packed-bundle check passed. No live API calls or deployments.
  • Rebased onto 8bafc65d after custom-signature support shipped as 0.7.1; the suites above cover both signature and webhook APIs at b5667e7e. Existing signature code, skill examples, and changelog history are preserved. Bundled Codex skills advance to plugin version 0.1.7.
  • Exercise webhooks.subscriptions.create with mixed identity events, update/delete with an expected revision, and delivery-history parsing: mixed selections are accepted, stale writes return the API conflict, and original history IDs remain available.
  • Hosted CI at this head: Python, TypeScript, Rust, CLI, plugin validation, and notification-format tests passed; Rust CodeQL analysis is still running. Live integration jobs are skipped while this PR is draft.

This PR remains draft; live integration testing and package publication are separate, unperformed steps.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

@dimavrem22
dimavrem22 force-pushed the feat/identity-webhook-subscriptions branch from df6807c to b5667e7 Compare September 16, 2026 06:43
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