Skip to content

feat(mgmt-scim): concrete OutboundSCIMConfigurationData TypedDict#1624

Merged
dorsha merged 2 commits into
dorsha/outbound-scim-mgmtfrom
dorsha/outbound-scim-mgmt-typed-config
Jul 16, 2026
Merged

feat(mgmt-scim): concrete OutboundSCIMConfigurationData TypedDict#1624
dorsha merged 2 commits into
dorsha/outbound-scim-mgmtfrom
dorsha/outbound-scim-mgmt-typed-config

Conversation

@dorsha

@dorsha dorsha commented Jul 16, 2026

Copy link
Copy Markdown
Member

Summary

  • Match the typed configuration shape shipped in go-sdk#798 / node-sdk#765.
  • New `descope/management/outbound_scim_types.py` defines TypedDict shapes mirroring the SCIM connector template (`content/connectors/templates/scim/metadata.json`): `baseUrl`, `ignoreUnverifiedPhones/Emails`, `userMapping`, `authentication` (tagged by `method`, per-method sub-shapes for `bearerToken` / `apiKey` / `basicAuth` / `oauth2ClientCredentials`), `headers`, `hmacSecret`, `aws*` signing, `rfc9421*` signing, `insecure`.
  • `create_configuration` / `update_configuration` (sync + async) accept the TypedDict so callers get IDE / mypy completion.
  • Runtime behavior unchanged — TypedDict is validation-free.

Test plan

  • `uv run pytest tests/management/test_outbound_scim.py` — 30 passed (15 tests × sync+async).
  • `uv run mypy descope/management/outbound_scim.py descope/management/outbound_scim_async.py descope/management/outbound_scim_types.py descope/management/_outbound_scim_base.py` — no issues.

🤖 Generated with Claude Code

Match the typed configuration shape shipped in go-sdk#798 / node-sdk#765.
Add descope/management/outbound_scim_types.py with TypedDict definitions
mirroring the SCIM connector template
(content/connectors/templates/scim/metadata.json): baseUrl,
ignoreUnverifiedPhones/Emails, userMapping, authentication (tagged by
method, per-method sub-shapes for bearerToken / apiKey / basicAuth /
oauth2ClientCredentials), headers, hmacSecret, aws* signing, rfc9421*
signing, insecure. create_configuration / update_configuration signatures
(sync + async) accept the TypedDict so callers get IDE/mypy completion.
Runtime behavior unchanged — TypedDict is validation-free.

Docstrings call out which fields are secret-typed and returned masked on
Load.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@shuni-bot

shuni-bot Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

🐕 Review complete — View session on Shuni Portal 🐾

@shuni-bot shuni-bot Bot 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.

🐕 Shuni's Review

Adds a concrete OutboundSCIMConfigurationData TypedDict and wires it into create_/update_configuration. Runtime behavior unchanged — clean, focused change with good bones.

Sniffed out 1 issue:

  • 1 🟡 MEDIUM: NotRequired imported but never used (dead conditional import)

See inline comment for details. Woof!

Comment thread descope/management/outbound_scim_types.py Outdated
@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown

Coverage report

The coverage rate went from 98.26% to 98.28% ⬆️

100% of new lines are covered.

Diff Coverage details (click to unfold)

descope/management/outbound_scim_types.py

100% of new lines are covered (100% of the complete file).

descope/management/outbound_scim.py

100% of new lines are covered (100% of the complete file).

descope/management/outbound_scim_async.py

100% of new lines are covered (100% of the complete file).

descope/management/_outbound_scim_base.py

100% of new lines are covered (100% of the complete file).

Shuni review — every TypedDict uses total=False, never NotRequired, so the
sys/typing_extensions import guard was dead code and tripped ruff F401 in
CI. On the declared 3.9 floor the else-branch would also have pulled in
typing_extensions, which isn't a declared dependency. Literal and TypedDict
are both stdlib since 3.8 — plain from-typing import is enough.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@dorsha
dorsha requested a review from aviadl July 16, 2026 08:22
@dorsha
dorsha merged commit 2c614e9 into dorsha/outbound-scim-mgmt Jul 16, 2026
32 checks passed
@dorsha
dorsha deleted the dorsha/outbound-scim-mgmt-typed-config branch July 16, 2026 09:17
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