Skip to content

chore: regenerate SDK from latest API spec - #193

Merged
Koosha-Owji merged 1 commit into
mainfrom
chore/regenerate-sdk
Aug 12, 2026
Merged

chore: regenerate SDK from latest API spec#193
Koosha-Owji merged 1 commit into
mainfrom
chore/regenerate-sdk

Conversation

@Koosha-Owji

Copy link
Copy Markdown
Contributor

Explain your changes

Syncs the generated management client with the live management API spec

Checklist

🛟 If you need help, consider asking for advice over in the Kinde community.

@Koosha-Owji
Koosha-Owji requested a review from a team as a code owner July 10, 2026 18:53
@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 50f787d3-5c58-428e-a7b8-8a80030c41f7

📥 Commits

Reviewing files that changed from the base of the PR and between 6e7f1bd and 2168a68.

⛔ Files ignored due to path filters (59)
  • kinde_sdk/management/api/__init__.py is excluded by !kinde_sdk/management/api/**
  • kinde_sdk/management/api/apis_api.py is excluded by !kinde_sdk/management/api/**
  • kinde_sdk/management/api/billing_entitlements_api.py is excluded by !kinde_sdk/management/api/**
  • kinde_sdk/management/api/directories_api.py is excluded by !kinde_sdk/management/api/**
  • kinde_sdk/management/api/environments_api.py is excluded by !kinde_sdk/management/api/**
  • kinde_sdk/management/api/organizations_api.py is excluded by !kinde_sdk/management/api/**
  • kinde_sdk/management/api/roles_api.py is excluded by !kinde_sdk/management/api/**
  • kinde_sdk/management/api/search_api.py is excluded by !kinde_sdk/management/api/**
  • kinde_sdk/management/api/users_api.py is excluded by !kinde_sdk/management/api/**
  • kinde_sdk/management/models/__init__.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/create_connection_request_options_one_of.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/create_connection_request_options_one_of1.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/create_connection_request_options_one_of2.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/create_directory_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/create_directory_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/create_organization_invite_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/create_organization_invite_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/create_organization_invite_response_invite.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/create_organization_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/delete_directory_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/directory.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_directories_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_directory_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_environment_response_environment.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_organization_invite_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_organization_invite_response_roles_inner.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_organization_invites_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_organization_passkey200_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_organization_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_organization_role_users_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_organization_role_users_response_users_inner.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_passkey200_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_role_users_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_role_users_response_users_inner.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/get_system_permissions_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/identity.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/organization_invite.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/replace_connection_request_options_one_of.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/replace_connection_request_options_one_of1.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/replace_mfa_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/replace_organization_mfa_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/role_system_permissions_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/set_user_password_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/system_permissions.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_connection_request_options.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_connection_request_options_one_of.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_connection_request_options_one_of1.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_directory_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_directory_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_organization_passkey200_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_organization_passkey_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_organization_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_passkey200_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_passkey_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_role_system_permissions_request.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_role_system_permissions_request_system_permissions_inner.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/update_role_system_permissions_response.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/users_response_users_inner.py is excluded by !kinde_sdk/management/models/**
  • kinde_sdk/management/models/users_response_users_inner_identities_inner.py is excluded by !kinde_sdk/management/models/**
📒 Files selected for processing (5)
  • .openapi-generator/FILES
  • kinde_sdk/management/__init__.py
  • kinde_sdk/management/api_client.py
  • kinde_sdk/management/configuration.py
  • testv2/testv2_management/test_management_client.py

Walkthrough

The management SDK was regenerated with additional directory, organization invite, passkey, permission, update, and identity artifacts. Package exports and API exposure tests were expanded, while generator and SDK version metadata changed from 2.0.0 to 2.3.0.

Changes

Management SDK regeneration

Layer / File(s) Summary
Generated management artifacts
.openapi-generator/FILES
Registers documentation, Python models, and tests for directories, organization invites, passkeys, permissions, updates, and user identities.
Management package exports
kinde_sdk/management/__init__.py
Exports and imports the newly generated APIs and model types.
SDK generator version metadata
kinde_sdk/management/api_client.py, kinde_sdk/management/configuration.py
Updates the user-agent and debug report version strings to 2.3.0.
Management API exposure validation
testv2/testv2_management/test_management_client.py
Adds the directories API to expected exposures and verifies every generated API class is exposed on ManagementClient.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: dtoxvanilla1991

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: regenerating the SDK from the latest API spec.
Description check ✅ Passed The description is directly related to the changeset and accurately states the management client was synced to the live spec.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/regenerate-sdk

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Jul 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@KomanRudden

Copy link
Copy Markdown
Contributor

I am busy with a regression test on these changes currently

@KomanRudden

KomanRudden commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Live-tested the new organization invite listing endpoint successfully:

client.organizations_api.get_organization_invites(
    org_code=org_code,
    page_size=10,
)

The endpoint requires Allow invitations to be enabled with an interactive Invite application selected. An M2M application cannot be selected for that purpose, although its credentials are still used to call the Management API. After configuring both applications, the generated SDK call and response deserialization passed.

@KomanRudden

Copy link
Copy Markdown
Contributor

Live-test finding: create_directory() creates the resource but returns 409

The new DirectoriesApi.create_directory() method sends one POST:

client.directories_api.create_directory(
    CreateDirectoryRequest(
        org_code=org_code,
        directory_name="sdk-pr193-test",
        provider_code="custom_scim_v2",
        enterprise_connection_id=connection_id,
    )
)

but returns:

POST requests sent: 1
HTTP response: 409 DIRECTORY_EXISTS
Matching directory created: 1

The generated client correctly expects 201 CreateDirectoryResponse, matching the OpenAPI spec. Despite returning 409, the backend creates the directory. Subsequent get, list, update, and delete calls all succeeded.

This appears to be a backend responseissue rather than a generated Python SDK defect, but it prevents callers from receiving the successful create response through this new PR API. Not sure if a backend management fix should be applied by the Kinde team??

@KomanRudden

Copy link
Copy Markdown
Contributor

Tests completed

Completed
Authentication/API exposure

kinde_sdk/management/management_client.py
kinde_sdk/management/api/__init__.py

Directory read/get/update/delete

kinde_sdk/management/api/directories_api.py
kinde_sdk/management/models/directory.py
kinde_sdk/management/models/update_directory_request.py

Organization invite create/get/list/delete

kinde_sdk/management/api/organizations_api.py
kinde_sdk/management/models/create_organization_invite_request.py
kinde_sdk/management/models/organization_invite.py

Environment and organization passkeys

kinde_sdk/management/api/environments_api.py
kinde_sdk/management/api/organizations_api.py
kinde_sdk/management/models/update_passkey_request.py
kinde_sdk/management/models/update_organization_passkey_request.py

System permissions, role permissions, and role users

kinde_sdk/management/api/roles_api.py
kinde_sdk/management/models/system_permissions.py
kinde_sdk/management/models/role_system_permissions_response.py
kinde_sdk/management/models/get_role_users_response.py
kinde_sdk/management/models/get_organization_role_users_response.py

Organization response fields

kinde_sdk/management/models/get_organization_response.py

User identity deserialization

kinde_sdk/management/api/users_api.py
kinde_sdk/management/models/users_response_users_inner.py
kinde_sdk/management/models/users_response_users_inner_identities_inner.py
kinde_sdk/management/models/identity.py

Environment response fields

kinde_sdk/management/models/get_environment_response_environment.py

Stress, cleanup, redaction, and harness validation

examples/live_management_test/scenarios.py
examples/live_management_test/runner.py
examples/live_management_test/config.py
testv2/testv2_management/test_live_test_harness.py

Outstanding API finding
Directory creation returns 409 despite creating the resource

kinde_sdk/management/api/directories_api.py
kinde_sdk/management/models/create_directory_request.py
kinde_sdk/management/models/create_directory_response.py

@KomanRudden

Copy link
Copy Markdown
Contributor

PBKDF2 password import

kinde_sdk/management/models/set_user_password_request.py
kinde_sdk/management/api/users_api.py
examples/live_management_test/scenarios.py
testv2/testv2_management/test_pr193_changed_models.py

MFA recovery-code settings

kinde_sdk/management/models/replace_mfa_request.py
kinde_sdk/management/models/replace_organization_mfa_request.py
examples/live_management_test/scenarios.py
testv2/testv2_management/test_pr193_changed_models.py

Organization MFA was skipped due to the tenant plan. Environment MFA was not mutated because no GET endpoint supports safe restoration.

Organization model updates

kinde_sdk/management/models/create_organization_request.py
kinde_sdk/management/models/update_organization_request.py
kinde_sdk/management/models/get_organization_response.py
kinde_sdk/management/api/organizations_api.py
examples/live_management_test/scenarios.py
testv2/testv2_management/test_pr193_changed_models.py

Connection option changes

kinde_sdk/management/models/create_connection_request_options_one_of*.py
kinde_sdk/management/models/update_connection_request_options*.py
kinde_sdk/management/models/replace_connection_request_options_one_of*.py
kinde_sdk/management/api/connections_api.py
testv2/testv2_management/test_connection_request_options.py

SDK version metadata

kinde_sdk/management/configuration.py
kinde_sdk/management/api_client.py
kinde_sdk/_version.py
testv2/testv2_core/test_version_sync.py

Final management-suite verification

testv2/testv2_management/

Result: 105 passed

@KomanRudden

Copy link
Copy Markdown
Contributor
Test Result
Generated API exposure PASS
Management API authentication PASS
PBKDF2 password import and user cleanup PASS
Organization create, auto-membership update, suspend and unsuspend PASS
Existing SAML connection read PASS
Connection option models, enums, oneOf and serialization PASS
PR #193 changed-model contracts PASS
SDK version metadata synchronization PASS
Full Management SDK regression suite PASS
Disposable user, organization and directory cleanup PASS
Organization MFA recovery codes SKIPPED, tenant plan lacks Advanced Organizations

@Koosha-Owji
Koosha-Owji merged commit 3c195a5 into main Aug 12, 2026
9 checks passed
@Koosha-Owji
Koosha-Owji deleted the chore/regenerate-sdk branch August 12, 2026 05:01
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