chore: 🐝 Update SDK - Generate 8.3.0#61
Conversation
✅ Approve — automated reviewAll previously identified correctness issues (V3Connector.config type mismatch, Bitstamp union shadowing, io.IOBase serializer gap, HookContext backward-incompatible constructor, and HTTP 304 handling in the capabilities endpoint) were raised and fully discussed in prior automated review threads, all of which are marked resolved. The current independent review found no new, non-duplicative issues beyond those already covered. There is nothing remaining that warrants blocking or commenting on this PR. No findings. |
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 1 new inline finding.
Summary: #61 (comment)
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 2 new inline findings.
Summary: #61 (comment)
44a5f2c to
b0644e8
Compare
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 2 new inline findings.
Summary: #61 (comment)
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 3 new inline findings.
Summary: #61 (comment)
c40c1f3 to
ad880dd
Compare
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 3 new inline findings.
Summary: #61 (comment)
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 3 new inline findings.
Summary: #61 (comment)
bd5949c to
3f12d30
Compare
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 3 new inline findings.
Summary: #61 (comment)
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 1 new inline finding.
Summary: #61 (comment)
958b577 to
93d54e1
Compare
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 3 new inline findings.
Summary: #61 (comment)
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 3 new inline findings.
Summary: #61 (comment)
* `sdk.payments.v3.get_account()`: `response.data.raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v3.get_connector_config()`: `response.data.union(V3KrakenproConfig)` **Added** (Breaking⚠️ ) * `sdk.payments.v1.create_account()`: `response.data.raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v1.create_payment()`: `response.data` **Changed** (Breaking⚠️ ) * `sdk.payments.v1.get_account_payments()`: `response.data.raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v1.get_payment()`: `response.data` **Changed** (Breaking⚠️ ) * `sdk.payments.v1.list_accounts_payments()`: `response.cursor.data[].raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v1.list_payments()`: `response.cursor.data[]` **Changed** (Breaking⚠️ ) * `sdk.payments.v3.create_account()`: `response.data.raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v3.create_payment()`: `response.data.adjustments[].raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v3.list_payments()`: `response.cursor.data[].adjustments[].raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v3.get_order()`: `response.data.adjustments[].raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v3.list_payment_initiation_related_payments()`: `response.cursor.data[].adjustments[].raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v3.get_payment()`: `response.data.adjustments[].raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v3.list_orders()`: `response.cursor.data[].adjustments[].raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v3.list_accounts()`: `response.cursor.data[].raw` **Changed** (Breaking⚠️ ) * `sdk.payments.v3.list_connectors()`: `response.cursor.data[].capabilities` **Added** * `sdk.payments.v3.install_connector()`: * `request.v3connector_config.union(V3KrakenproConfig)` **Added** * `sdk.payments.v3.get_connector_capabilities()`: **Added** * `sdk.payments.v3.list_connector_capabilities()`: **Added** * `sdk.payments.v3.v3update_connector_config()`: * `request.v3connector_config.union(V3KrakenproConfig)` **Added**
5f0d0b1 to
d713738
Compare
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot posted 3 new inline findings.
Summary: #61 (comment)
| provider: str | ||
| reference: str | ||
| scheduled_for_deletion: bool | ||
| capabilities: NotRequired[List[V3Capability]] |
There was a problem hiding this comment.
🔴 [blocker] Connector config field type mismatch causes ResponseValidationError on list_connectors()
reported by codex, NumaryBot
The config field on V3Connector is still declared as the empty Config BaseModel, but the updated 8.3 API returns config as an array of capability strings. Every call to list_connectors() against the new API will fail with a Pydantic ResponseValidationError before any data can be read, including the newly added capabilities field.
Suggestion: Update the config field declaration to match the new array type returned by the API (e.g. config: List[str]), or use a Union that tolerates both the old and new shapes during a transition period.
| class V2ImportLogsRequest(BaseModel): | ||
| v2_import_logs_request: Annotated[ | ||
| Union[bytes, IO[bytes], io.BufferedReader], FieldMetadata(request=True) | ||
| Union[bytes, IO[bytes], io.IOBase], FieldMetadata(request=True) |
There was a problem hiding this comment.
🟠 [major] Accepted io.IOBase raw body types not handled by serializer
reported by codex, NumaryBot
The request model accepts io.IOBase subclasses (e.g. io.FileIO) as a valid raw body type, but serialize_request_body() only handles bytes, bytearray, BytesIO, and BufferedReader. Passing an io.FileIO or other IOBase subclass will pass model validation and then raise an error during serialization inside import_logs(), making the documented interface misleading and causing runtime failures.
Suggestion: Either restrict the accepted types in the model annotation to match what the serializer supports (bytes, bytearray, BytesIO, BufferedReader), or update serialize_request_body() to handle the full io.IOBase hierarchy (e.g. by calling .read() on any IOBase instance that is not already a BytesIO/BufferedReader).
| raw_response=http_res, | ||
| headers=utils.get_response_headers(http_res.headers), | ||
| ) | ||
| if utils.match_response(http_res, "304", "*"): |
There was a problem hiding this comment.
🟠 [major] HTTP 304 response from capabilities endpoint raises 'Unexpected response' error
reported by codex, NumaryBot
When a client sends an If-None-Match header and the server returns the documented 304 Not Modified, the response handler never matches the branch because utils.match_response does not treat "*" as a wildcard for content-type matching and 304 responses typically carry no Content-Type header. The code falls through to the 'Unexpected response received' error path. Both the sync and async variants of the method are affected.
Suggestion: Add an explicit status-code check for 304 before the media-type matching step, returning the documented empty/not-modified response object directly. For example: if http_res.status_code == 304: return models.GetCapabilitiesResponse(...)
NumaryBot
left a comment
There was a problem hiding this comment.
NumaryBot review complete: no remaining inline findings.
Resolved 6 stale NumaryBot review threads (6 fixed, 0 outdated).
Summary: #61 (comment)
SDK update
Versioning
Version Bump Type: [minor] - 🤖 (automated)
Tip
If updates to your OpenAPI document introduce breaking changes, be sure to update the
info.versionfield to trigger the correct version bump.Speakeasy supports manual control of SDK versioning through multiple methods.
Python SDK Changes:
sdk.payments.v3.get_account():response.data.rawChanged (Breakingsdk.payments.v3.get_connector_config():response.data.union(V3KrakenproConfig)Added (Breakingsdk.payments.v1.create_account():response.data.rawChanged (Breakingsdk.payments.v1.create_payment():response.dataChanged (Breakingsdk.payments.v1.get_account_payments():response.data.rawChanged (Breakingsdk.payments.v1.get_payment():response.dataChanged (Breakingsdk.payments.v1.list_accounts_payments():response.cursor.data[].rawChanged (Breakingsdk.payments.v1.list_payments():response.cursor.data[]Changed (Breakingsdk.payments.v3.create_account():response.data.rawChanged (Breakingsdk.payments.v3.create_payment():response.data.adjustments[].rawChanged (Breakingsdk.payments.v3.list_payments():response.cursor.data[].adjustments[].rawChanged (Breakingsdk.payments.v3.get_order():response.data.adjustments[].rawChanged (Breakingsdk.payments.v3.list_payment_initiation_related_payments():response.cursor.data[].adjustments[].rawChanged (Breakingsdk.payments.v3.get_payment():response.data.adjustments[].rawChanged (Breakingsdk.payments.v3.list_orders():response.cursor.data[].adjustments[].rawChanged (Breakingsdk.payments.v3.list_accounts():response.cursor.data[].rawChanged (Breakingsdk.payments.v3.list_connectors():response.cursor.data[].capabilitiesAddedsdk.payments.v3.install_connector():request.v3connector_config.union(V3KrakenproConfig)Addedsdk.payments.v3.get_connector_capabilities(): Addedsdk.payments.v3.list_connector_capabilities(): Addedsdk.payments.v3.v3update_connector_config():request.v3connector_config.union(V3KrakenproConfig)AddedView full SDK changelog
OpenAPI Change Summary
View full report
Linting Report
0 errors, 0 warnings, 27 hintsView full report
PYTHON CHANGELOG
additionalProperties: 1.0.2 - 2026-07-08
🐛 Bug Fixes
core: 6.0.34 - 2026-07-02
🐝 New Features
core: 6.0.33 - 2026-06-26
🐛 Bug Fixes
core: 6.0.32 - 2026-06-26
🐛 Bug Fixes
core: 6.0.31 - 2026-06-19
🐝 New Features
core: 6.0.30 - 2026-06-12
🐛 Bug Fixes
core: 6.0.28 - 2026-06-10
🐛 Bug Fixes
core: 6.0.27 - 2026-06-08
🐛 Bug Fixes
core: 6.0.26 - 2026-06-05
🐝 New Features
core: 6.0.25 - 2026-06-05
🐝 New Features
errors: 3.4.4 - 2026-06-22
🐛 Bug Fixes
errors: 3.4.3 - 2026-06-22
🐛 Bug Fixes
errors: 3.4.2 - 2026-06-18
🐝 New Features
errors: 3.4.1 - 2026-06-17
🐝 New Features
errors: 3.4.0 - 2026-06-15
🐝 New Features
retries: 3.0.7 - 2026-06-17
🐝 New Features
retries: 3.0.6 - 2026-05-27
🐝 New Features
sdkHooks: 1.3.0 - 2026-06-22
🐝 New Features
sdkHooks: 1.2.2 - 2026-06-16
🐝 New Features
unions: 3.1.7 - 2026-06-25
🐛 Bug Fixes
unions: 3.1.6 - 2026-06-11
🐛 Bug Fixes
uploadStreams: 1.0.3 - 2026-06-09
🐛 Bug Fixes
Based on Speakeasy CLI 1.791.0
Last updated by Speakeasy workflow