Skip to content

feat(py-sdk): add TurboPartner module - #18

Merged
nicolasiscoding merged 8 commits into
mainfrom
feat/py-sdk-turbopartner
Feb 16, 2026
Merged

feat(py-sdk): add TurboPartner module#18
nicolasiscoding merged 8 commits into
mainfrom
feat/py-sdk-turbopartner

Conversation

@nicolasiscoding

Copy link
Copy Markdown
Member

Summary

  • TurboPartner module: Full partner portal API support (25 methods) for the Python SDK
    • Organization management (CRUD, entitlements)
    • Organization user management (add, update role, remove, resend invitation)
    • Organization API key management (create, update, revoke)
    • Partner API key management (create, update, revoke with scoped permissions)
    • Partner user management (add, update permissions, remove, resend invitation)
    • Audit logs
  • PartnerHttpClient with partner-specific authentication (Bearer token)
  • patch() and delete() methods added to HttpClient
  • 22 scope constants exported from package root
  • 42 unit tests (85 total pass)
  • E2E tested against staging API
  • Full parity with JS, PHP, and Go implementations

Test plan

  • All 85 unit tests pass (pytest)
  • E2E integration test passes against staging
  • Method names, signatures, and behavior verified against JS/PHP/Go SDKs

🤖 Generated with Claude Code

nicolasiscoding and others added 2 commits February 16, 2026 16:37
- Add PartnerHttpClient with partner-specific auth (TDXP- key + partner ID)
- Add patch() and delete() methods to base HttpClient
- Add TurboPartner module with all 25 partner management methods
- Add 22 scope constants exported from package root
- Add 42 unit tests (85 total tests pass)
- Add 2 example scripts (basic org lifecycle, API keys & audit logs)
- Update README with TurboPartner documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename resend_organization_invitation → resend_organization_invitation_to_user
- Rename resend_partner_portal_invitation → resend_partner_portal_invitation_to_user
- Make permissions required in add_user_to_partner_portal
- Remove unnecessary x-partner-id header from PartnerHttpClient

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Comment thread packages/py-sdk/tests/test_turbopartner.py Fixed
Comment thread packages/py-sdk/tests/test_turbopartner.py Fixed
Comment thread packages/py-sdk/src/turbodocx_sdk/http.py Fixed
nicolasiscoding and others added 6 commits February 16, 2026 17:03
- Fix __version__ to match pyproject.toml (0.1.0 → 0.1.6)
- Fix configure() base_url default to Optional[None] so TURBODOCX_BASE_URL env var is respected
- Add tracking param to update_organization_entitlements() for parity with JS/PHP/Go
- Fix docstring role values to list all valid roles
- Fix README: wrong deps (aiohttp/requests → httpx/pydantic)
- Fix README: remove references to nonexistent TurboSignSync
- Fix README: remove references to nonexistent turbodocx_sdk.types

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove unused SCOPE_ORG_USERS_READ import from tests
- Remove unused result variable in test_create_organization_with_features
- Add explanatory comment to empty except blocks in error handlers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…mples

- Remove false Pydantic models feature claim
- Fix sync wrapper claim to reflect actual async-only architecture
- Remove nonexistent timeout param from configure example
- Add required org_id/sender_email to FastAPI example
- Fix e.message to str(e) in error handling examples
- Remove unused pydantic dependency from pyproject.toml
- Fix examples referencing nonexistent TurboSign.send() method

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix TEST_FILE_PATH to TEST_PDF_PATH to match manual_test.py
- Add get_audit_trail() to "What It Tests" list
- Define missing FILE_URL variable in manual_test.py
- Fix documentation URL in pyproject.toml to match other SDKs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@nicolasiscoding
nicolasiscoding merged commit 03bb6c8 into main Feb 16, 2026
4 checks passed
nicolasiscoding pushed a commit that referenced this pull request Jul 29, 2026
…ns (#50)

Resolves all 6 open high-severity Dependabot alerts in this repo:

| Package         | Alerts   | Was     | Now     | Advisory            |
|-----------------|----------|---------|---------|---------------------|
| brace-expansion | #17, #35 | 1.1.12  | 1.1.16  | GHSA-3jxr-9vmj-r5cp |
| js-yaml         | #18, #36 | 3.14.2  | 3.15.0  | GHSA-52cp-r559-cp3m |
| minimatch       | #3,  #21 | 3.1.2   | 3.1.5   | GHSA-7r86-cg39-jmmj |

Each alert is filed twice, once per lockfile (root and
packages/js-sdk), so both lockfiles are updated.

All three are dev-only transitive dependencies of the Jest/ts-jest test
toolchain — none is a direct dependency, none appears in any
package.json, and the JS SDK has zero runtime dependencies, so nothing
here ships to consumers.

No manifest change was needed: every patched version already satisfies
the existing semver range its consumers declare (minimatch ^3.1.1,
brace-expansion ^1.1.x, js-yaml ^3.13.x), so a plain `npm update`
resolves them. No `overrides` pin is used, which keeps future patch
releases flowing normally.

Verified: `npm ci`, `npm run build:js` (tsc), and `npm run test:js`
(271/271 tests) all pass.

Co-authored-by: yacineKahlerras <kahlerasse@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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