chore: 🐝 Update SDK - Generate 0.3.0 - #43
Merged
Merged
Conversation
* `base_data_client.advertiser.ingest_advertiser_data()`: * `request.ttd_auth` **Removed** (Breaking⚠️ ) * `response.failed_lines[].error_code.enum(invalid_timestamp_utc)` **Added** (Breaking⚠️ ) * `error.failed_lines[].error_code.enum(invalid_timestamp_utc)` **Added** (Breaking⚠️ ) * `base_data_client.third_party.ingest_third_party_data()`: * `request.ttd_auth` **Removed** (Breaking⚠️ ) * `response.failed_lines[].error_code.enum(invalid_timestamp_utc)` **Added** (Breaking⚠️ ) * `error.failed_lines[].error_code.enum(invalid_timestamp_utc)` **Added** (Breaking⚠️ ) * `base_data_client.ip_address.ingest_first_party_ip_address_data()`: * `request.ttd_auth` **Removed** (Breaking⚠️ ) * `response.failed_lines[].error_code.enum(invalid_timestamp_utc)` **Added** (Breaking⚠️ ) * `error.failed_lines[].error_code.enum(invalid_timestamp_utc)` **Added** (Breaking⚠️ ) * `base_data_client.ip_address.ingest_third_party_ip_address_data()`: * `request.ttd_auth` **Removed** (Breaking⚠️ ) * `response.failed_lines[].error_code.enum(invalid_timestamp_utc)` **Added** (Breaking⚠️ ) * `error.failed_lines[].error_code.enum(invalid_timestamp_utc)` **Added** (Breaking⚠️ ) * `base_data_client.offline_conversion.ingest_offline_conversion_data()`: `request.ttd_auth` **Removed** (Breaking⚠️ ) * `base_data_client.deletion_opt_out.data_subject_request_advertiser_data()`: `request.ttd_auth` **Removed** (Breaking⚠️ ) * `base_data_client.deletion_opt_out.data_subject_request_merchant_data()`: `request.ttd_auth` **Removed** (Breaking⚠️ ) * `base_data_client.deletion_opt_out.data_subject_request_third_party_data()`: `request.ttd_auth` **Removed** (Breaking⚠️ )
The regen hoisted ttd_auth from a per-request arg to a BaseDataClient constructor param, but the hand-written ClientConfig had no field for it. from_config() rebuilds via fields(config), so it silently produced an unauthenticated client. Add ttd_auth to ClientConfig, recovering it from sdk_configuration.security. A callable credential is rewrapped rather than called, so reading .config never triggers a token refresh and rotation survives a round trip. The same hoist left every documented example calling the SDK with an argument it no longer accepts. Move ttd_auth to the client constructor throughout, and drop it from the docs/sdks parameter tables. USAGE.md had also been committed with six unresolved merge-conflict blocks from the generator's persistent-edits merge; resolved here. Also fixes a pre-existing README bug where RetryConfig was passed positionally after a keyword argument, which does not parse.
adithyasamavedhi-ttd
force-pushed
the
speakeasy-sdk-regen-1788369003
branch
from
September 2, 2026 22:51
bf42f01 to
3fddc22
Compare
Every code block in the READMEs, USAGE.md and docs/sdks/* is now executable by copy-paste. Verified by running all 42 blocks against a mocked transport and by hitting the live Data API. - Replace `with DataClient(...) as client:` with plain instantiation. DataClient is a wrapper and does not implement the context manager protocol; only the inner BaseDataClient does, so every one of these raised TypeError. - docs/sdks/* now import DataClient rather than BaseDataClient, which is not exported from ttd_data and raised ImportError. - Pass user_id_array_metadata_format in the offline conversion example. The API rejects user_id_array without it; the parameter is optional in the schema, so only a live request surfaced this. - The async example now awaits ingest_advertiser_data_async. It called the sync method inside async def main() and awaited nothing. - Rewrite the Resource Management section, which claimed DataClient implements the context manager protocol. - Hoist ttd_auth to the constructor, fix a positional-after-keyword RetryConfig call, and add a missing typing import.
ttd_auth moved from the call site to the DataClient constructor, so each of these raised TypeError on its first request. Call sites carried different token values (valid, invalid, empty), so each was hoisted into its own client rather than rewritten uniformly. Also drops `with DataClient(...)`, which DataClient does not support; only the inner BaseDataClient implements the context manager protocol. Verified against a live Data API: test_local.py 13/13, test_patch_hook.py 8/8, local_uid2_ingest_e2e.py exit 0 with all four PII-dropping assertions passing.
adithyasamavedhi-ttd
force-pushed
the
speakeasy-sdk-regen-1788369003
branch
from
September 2, 2026 23:27
ee90982 to
f950fce
Compare
Contributor
legrigonis
approved these changes
Sep 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

SDK update
Versioning
Version Bump Type: [patch] - 🤖 (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:
base_data_client.advertiser.ingest_advertiser_data():request.ttd_authRemoved (Breakingresponse.failed_lines[].error_code.enum(invalid_timestamp_utc)Added (Breakingerror.failed_lines[].error_code.enum(invalid_timestamp_utc)Added (Breakingbase_data_client.third_party.ingest_third_party_data():request.ttd_authRemoved (Breakingresponse.failed_lines[].error_code.enum(invalid_timestamp_utc)Added (Breakingerror.failed_lines[].error_code.enum(invalid_timestamp_utc)Added (Breakingbase_data_client.ip_address.ingest_first_party_ip_address_data():request.ttd_authRemoved (Breakingresponse.failed_lines[].error_code.enum(invalid_timestamp_utc)Added (Breakingerror.failed_lines[].error_code.enum(invalid_timestamp_utc)Added (Breakingbase_data_client.ip_address.ingest_third_party_ip_address_data():request.ttd_authRemoved (Breakingresponse.failed_lines[].error_code.enum(invalid_timestamp_utc)Added (Breakingerror.failed_lines[].error_code.enum(invalid_timestamp_utc)Added (Breakingbase_data_client.offline_conversion.ingest_offline_conversion_data():request.ttd_authRemoved (Breakingbase_data_client.deletion_opt_out.data_subject_request_advertiser_data():request.ttd_authRemoved (Breakingbase_data_client.deletion_opt_out.data_subject_request_merchant_data():request.ttd_authRemoved (Breakingbase_data_client.deletion_opt_out.data_subject_request_third_party_data():request.ttd_authRemoved (BreakingView full SDK changelog
OpenAPI Change Summary
View full report
Linting Report
0 errors, 0 warnings, 1 hintsView full report
PYTHON CHANGELOG
core: 6.0.36 - 2026-08-12
🐝 New Features
Based on Speakeasy CLI 1.794.0
Last updated by Speakeasy workflow