- Features:
- Planhat: add
Time_EntryandTimesheetmodels (timeentriesandtimesheets). - Planhat: add
duplicate()on the time entry model for bulk duplicate-by-id.
- Planhat: add
- Fixes:
- Planhat: correct Objective resource path from
onjectivestoobjectives. - Planhat: fix Conversation model YAML so
docstringis applied.
- Planhat: correct Objective resource path from
- Documentation:
- Nest Planhat under Interfaces in the Sphinx sidebar (
interfaces.rst+planhat.rst). - Align Planhat documentation links with https://www.planhat.com/developers.
- Nest Planhat under Interfaces in the Sphinx sidebar (
- Features:
- Added multipart file upload support to
create()andupdate()methods via a newfilesparameter. Accepts urllib3 field tuples formultipart/form-datauploads.
- Added multipart file upload support to
- Updates:
- Modernized project tooling: migrated from setup.cfg/setup.py to pyproject.toml and adopted uv for dependency management.
- Aligned urllib3 usage with current best practices.
- Updated SonarQube scan action from v4 to v6.
- Minimum supported Python version is now 3.10.
- Fixes:
- Enhanced response handling in Planhat bulk upsert logic to skip non-dictionary types.
- Fixes:
- Version bump to resolve PyPI version conflict with 1.4.0.
- Features:
- Updated supported Python versions for 3.9 to 3.12. Python 3.8 is no longer supported.
- URLLib3 2.5.0 is now supported, and updated SSL Certificate Verification.
- OAuth2 state is now transparently encrypted and decrypted to prevent token leakage.
- OAuth2 now supports the Authorization Code flow with state parameter for CSRF protection.
- PlanHat auto-chunk support for large datasets
- Features:
- Planhat Create Activity bulk mode to upload multiple entries in one request.
- Features:
- Planhat Bulk Upsert response is now a single dictionary instead of a list of dictionaries. The values of all response are summaries or extended together.
- Fixes:
- Correct the method used by the Planhat interfaces bulk_insert_metrics.
- Fixes:
- Allow Any data type to be serialized and deserialized to JSON.
- Corrected the Planhat Metric model to correctly use bulk_insert_metrics.
- Planhat bulk_upsert method required replace argument to be set to True.
- Fixes:
- Adjust the setup so Interfaces are included in the package.
- Update to Authorization in request_headers to stop concatenation.
- Updates:
- Renamed the
AuthAbstract Base Class toAuthABC. - Made the PoolManager or ProxyManger attribute
managerpublic. - Made the HTTPHeaderDict attribute
request_headerspublic. - Retries applies to all URLLib3 retry types instead of only connect.
- Added 'Request Timeout' and 'Too Early' default retry status codes.
- status_whitelist renamed to status_ignore for better representation.
- Renamed the
- Features:
- OAuth 2.0 Rich Authorization Requests (RFC 9396)
- Features:
- Initial implmentation of OAuth 2.0 Authorization Grant
- Resource Owner Password Credientals (Section 1.3.3 RFC 6749)
- Client Credentials (Section 1.3.4 RFC 6749)
- Refresh tokens will be used if included in the response from the server. (Section 1.5 RFC 6749)
In the CRUDs package, Interfaces can now be generated through YAML Configuration files. This is for APIs that have many models with common request types.