From 12679a4969c23ca39053f4f12ead82501a411c23 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Mon, 6 Jul 2026 02:15:55 +0000 Subject: [PATCH] =?UTF-8?q?##=20Python=20SDK=20Changes:=20*=20`base=5Fdata?= =?UTF-8?q?=5Fclient.deletion=5Fopt=5Fout.data=5Fsubject=5Frequest=5Fadver?= =?UTF-8?q?tiser=5Fdata()`:=20=20=20*=20=20`response.failed=5Flines[]`=20*?= =?UTF-8?q?*Changed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`er?= =?UTF-8?q?ror.failed=5Flines[]`=20**Changed**=20(Breaking=20=E2=9A=A0?= =?UTF-8?q?=EF=B8=8F)=20*=20`base=5Fdata=5Fclient.deletion=5Fopt=5Fout.dat?= =?UTF-8?q?a=5Fsubject=5Frequest=5Fmerchant=5Fdata()`:=20=20=20*=20=20`res?= =?UTF-8?q?ponse.failed=5Flines[]`=20**Changed**=20(Breaking=20=E2=9A=A0?= =?UTF-8?q?=EF=B8=8F)=20=20=20*=20=20`error.failed=5Flines[]`=20**Changed*?= =?UTF-8?q?*=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`base=5Fdata=5Fclient?= =?UTF-8?q?.deletion=5Fopt=5Fout.data=5Fsubject=5Frequest=5Fthird=5Fparty?= =?UTF-8?q?=5Fdata()`:=20=20=20*=20=20`response.failed=5Flines[]`=20**Chan?= =?UTF-8?q?ged**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`error.f?= =?UTF-8?q?ailed=5Flines[]`=20**Changed**=20(Breaking=20=E2=9A=A0=EF=B8=8F?= =?UTF-8?q?)=20*=20`base=5Fdata=5Fclient.advertiser.ingest=5Fadvertiser=5F?= =?UTF-8?q?data()`:=20=20=20*=20=20`response.failed=5Flines[].data=5Fnumbe?= =?UTF-8?q?r`=20**Added**=20=20=20*=20=20`error.failed=5Flines[].data=5Fnu?= =?UTF-8?q?mber`=20**Added**=20*=20`base=5Fdata=5Fclient.third=5Fparty.ing?= =?UTF-8?q?est=5Fthird=5Fparty=5Fdata()`:=20=20=20*=20=20`response.failed?= =?UTF-8?q?=5Flines[].data=5Fnumber`=20**Added**=20=20=20*=20=20`error.fai?= =?UTF-8?q?led=5Flines[].data=5Fnumber`=20**Added**?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .speakeasy/gen.lock | 98 +++++++++---------- .speakeasy/gen.yaml | 2 +- .speakeasy/out.openapi.yaml | 16 +++ .speakeasy/workflow.lock | 12 +-- RELEASES.md | 12 ++- .../advertiserdataserverresponseline.md | 3 +- docs/models/advertiserdsrfailedline.md | 3 +- docs/models/dsrerrorcode.md | 11 ++- docs/models/merchantdsrfailedline.md | 3 +- .../thirdpartydataserverresponseline.md | 3 +- docs/models/thirdpartydsrfailedline.md | 3 +- pyproject.toml | 4 +- src/ttd_data/_hooks/types.py | 14 ++- src/ttd_data/_version.py | 6 +- src/ttd_data/advertiser.py | 4 + src/ttd_data/deletionoptout.py | 12 +++ .../advertiserdataserverresponseline.py | 11 ++- .../models/advertiserdsrfailedline.py | 15 ++- src/ttd_data/models/dsrerrorcode.py | 1 + src/ttd_data/models/merchantdsrfailedline.py | 11 ++- .../thirdpartydataserverresponseline.py | 15 ++- .../models/thirdpartydsrfailedline.py | 18 +++- src/ttd_data/offlineconversion.py | 4 + src/ttd_data/thirdparty.py | 4 + uv.lock | 6 +- 25 files changed, 207 insertions(+), 84 deletions(-) diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 84510a0..c255872 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,24 +1,24 @@ lockVersion: 2.0.0 id: 1927f304-b110-462d-9e13-326cfa243f23 management: - docChecksum: 0e775b341d888f8e266a2f7f9829bd91 + docChecksum: 13b36b6f6adb751f98b0f73c5bc881bb docVersion: v0.1 - speakeasyVersion: 1.785.0 - generationVersion: 2.912.1 - releaseVersion: 0.2.3 - configChecksum: a1cf2214a18589fec6c94d566447a1b9 + speakeasyVersion: 1.788.1 + generationVersion: 2.915.1 + releaseVersion: 0.3.0 + configChecksum: 444a1d556f1b24ed450c59629dca0b08 repoURL: https://github.com/thetradedesk/ttd-data-python.git installationURL: https://github.com/thetradedesk/ttd-data-python.git published: true persistentEdits: - generation_id: a8c595af-6402-4333-b0ab-51ae2ec918cc - pristine_commit_hash: 9ae60a06ea9c9567b9435db892045222fd2a2657 - pristine_tree_hash: 46d405adb7dbd9102833a231fa00320aa4863ea5 + generation_id: c94ca90a-213a-4534-926c-4592d59d8f08 + pristine_commit_hash: d57eacb8f0aa63252d2d493e485c8fa055fb04c7 + pristine_tree_hash: ce3587a01c24bf6f232df034498d0d273f16e706 features: python: additionalDependencies: 1.1.0 constsAndDefaults: 1.0.7 - core: 6.0.31 + core: 6.0.34 defaultEnabledRetries: 0.2.0 devContainers: 3.0.0 enumUnions: 0.1.1 @@ -33,7 +33,7 @@ features: nullables: 1.0.2 responseFormat: 1.1.0 retries: 3.0.7 - sdkHooks: 1.2.2 + sdkHooks: 1.3.0 trackedFiles: .devcontainer/devcontainer.json: id: b34062a34eb1 @@ -98,12 +98,12 @@ trackedFiles: pristine_git_object: cb01974ce39a4bcbe04400a93f3f4c976b67c96c docs/models/advertiserdataserverresponseline.md: id: 721d3efda7ad - last_write_checksum: sha1:d7ef28c7b44faa60927e7218682d3120a2c25f49 - pristine_git_object: ad7cca700e16fbab25409985c9cd71736ebb9f0f + last_write_checksum: sha1:735ca9b0ce5dd2313bdb8a1b4503aae298f5aeec + pristine_git_object: 9eb3c7c81043e1f999ec6c6aac81e92dfa6a1c9d docs/models/advertiserdsrfailedline.md: id: 466acafd9dc5 - last_write_checksum: sha1:a83b52fc651fd21ccebf70ed18307a276cb0efe5 - pristine_git_object: 3787f86195647102a57ab3b7dc0395b10a07bd19 + last_write_checksum: sha1:95e5a79271225a56de4d9f0b87b9ba785eee1d59 + pristine_git_object: 8f3d02561f9f2b16cb9458f1e3b8dbee69a6eda9 docs/models/advertiserdsrrequest.md: id: cc9b99b40db7 last_write_checksum: sha1:5472aa827ff3f7ec12bf3d0b218ceccf1a40b30a @@ -162,8 +162,8 @@ trackedFiles: pristine_git_object: 1db922c056ead9349b76f4940d0edd69a34e98c1 docs/models/dsrerrorcode.md: id: 17e3fe030bf7 - last_write_checksum: sha1:fa6bdb6bf5481f8bad01d767da5b3cc974a8b3bc - pristine_git_object: 12a66943cdfe2ce5974ec139fc35f752dd4ae560 + last_write_checksum: sha1:ebd3954336c35af87fe3ca50a5b8b4ed573764ea + pristine_git_object: a281b7e0f23562067c26232554fe45630c9f5285 docs/models/httpmetadata.md: id: 7ca0a10e4586 last_write_checksum: sha1:09d9c91cf41e3b9e867647becda4e437f4f3e3c8 @@ -194,8 +194,8 @@ trackedFiles: pristine_git_object: 24dbd818140ef377e232d000f065a8ff2b2af15f docs/models/merchantdsrfailedline.md: id: 351a88f2bfe5 - last_write_checksum: sha1:7cf02d2e713aa42b0b23e0e3e41f7f3ac52ea755 - pristine_git_object: 87831454d04711fe80251c056ff0fad3613f43a4 + last_write_checksum: sha1:ce581c1d0f2fc755fecc7e245d9ba880c0b02a9c + pristine_git_object: 7636ce9fb79b77d6dbbfc197e0b15320df5a3409 docs/models/merchantdsrrequest.md: id: 58eb9bbd97d8 last_write_checksum: sha1:66d95504c7c4903fe1dbbf6de54c6babbf3ad16a @@ -250,12 +250,12 @@ trackedFiles: pristine_git_object: d5e84e66c247e07612f5afc72d6a15196abb8d6a docs/models/thirdpartydataserverresponseline.md: id: 4e10c467659e - last_write_checksum: sha1:d29c9458c6a8db940b37d5f4b38d66570d7e92d1 - pristine_git_object: d08bf1264a5e5630ab7d0ffa5262f61d564af366 + last_write_checksum: sha1:ed1ce1ba1f8dc4da4e5bb8afa95f630698389243 + pristine_git_object: 453ccd9227230762802da8dbc9d719374089d8e0 docs/models/thirdpartydsrfailedline.md: id: 1ea8dfdefda3 - last_write_checksum: sha1:f7e01e731d37b8d6747ce48bae8c8d18e333be76 - pristine_git_object: fa0e3e10f39730538d20b3f3345ddfd114e90fa5 + last_write_checksum: sha1:10e53b9566c2fdf2195564c6b9635b13038a31fe + pristine_git_object: 91128421de1dceff62c0d0de5f1091a20bab3b83 docs/models/thirdpartydsrrequest.md: id: 922d0673f906 last_write_checksum: sha1:e54a515f9e74a2195a1ab3aaaf4955b5cc774ba9 @@ -278,8 +278,8 @@ trackedFiles: pristine_git_object: f456032107a9387ba6c98afd1c981df2f4b3d636 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:c245295e0dafa117199d9394a7feca41f99be2e7 - pristine_git_object: 7d4c874462b3295e462aa87f4993cc61f8bfbfe6 + last_write_checksum: sha1:40326ccb78b4f6f9bbdb134a2f894893ef1f5396 + pristine_git_object: 72c9a2cc76d7ede8a41b8d6ea41372fc88d7dcd5 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:5a79be5a1346a05f9099f1177f4b3605849c3b6b @@ -302,24 +302,24 @@ trackedFiles: pristine_git_object: 631ae89669006263153e29627c0927978d59f11f src/ttd_data/_hooks/types.py: id: 9bc3634baba5 - last_write_checksum: sha1:cc91afcfbecfc3d5ee50dd65c46f45b5ebab97ab - pristine_git_object: 4056118bd6df7bb0989a9734404c082cfca19e09 + last_write_checksum: sha1:07382b0b70fe0434d02d49c882845023b68c727a + pristine_git_object: 4d1beeaa986919cd72ba7191f1b01a5670b3f38c src/ttd_data/_version.py: id: 7feb4586507e - last_write_checksum: sha1:8c5a356afda6f258b649756c1e379beef9966dd6 - pristine_git_object: 1122d76dc8dcbccd63fe45e2f4637fcd983221b3 + last_write_checksum: sha1:4d727a5efaa97f22c88d9364f0faa8b079ed56cc + pristine_git_object: 442832c01b2ea43d1a1a4e44e0d48165c8242b8a src/ttd_data/advertiser.py: id: 392ead635b4f - last_write_checksum: sha1:9785a00d7c0569cadfaf1726d9b6365f132afcb6 - pristine_git_object: e881b23d91e5a4bc420dcf36b3b6dc3b7d32d658 + last_write_checksum: sha1:db4154de6127aac2fc36c05a5561f49e349fbe84 + pristine_git_object: fb0f6dd940612b859d556af57720dddf9a59da0c src/ttd_data/basesdk.py: id: 28e634bcfb11 last_write_checksum: sha1:94fb8380b03b78312f2951f566bab98f1d0bceee pristine_git_object: b3e7ee7ab69e5875ef7bf64033f4198e51dc8995 src/ttd_data/deletionoptout.py: id: 8da72b51c89e - last_write_checksum: sha1:7740796884022379c38c29fef7899d2e44ccf667 - pristine_git_object: 50fdb2d4a66f871dbf4580c6798c34914e9448a6 + last_write_checksum: sha1:c84e71472efb5f62db1d93271c0fdb39fe1db009 + pristine_git_object: fab3b7c51f1074ad9ca0f291cb56a693893ddd01 src/ttd_data/errors/__init__.py: id: c4bbecf8701c last_write_checksum: sha1:8992fce5c10ff19811e66f6a85e3f761e241fd10 @@ -390,12 +390,12 @@ trackedFiles: pristine_git_object: 9e177d5ceb8e8cf7fe5ab664d74205342c556912 src/ttd_data/models/advertiserdataserverresponseline.py: id: d86dcc352741 - last_write_checksum: sha1:e17d2d3572598ff82b355b0f5edd0a91114ef529 - pristine_git_object: 3916abc3b9eac154120bfd24076c4768967c3979 + last_write_checksum: sha1:e442ab3fcd1c496fa6166c3e9a6563a9f0ac3cd7 + pristine_git_object: cd7c079283a4c2b9b128361be1f1e3c3de5c315b src/ttd_data/models/advertiserdsrfailedline.py: id: bac049718c62 - last_write_checksum: sha1:2be8e6dd13625aae617170d709954934fd72fbb1 - pristine_git_object: bb97732bf2e9ed068fb314273e94bf7bb65bb467 + last_write_checksum: sha1:e8dd5438702e205452eb91a51cb8e94c17193dde + pristine_git_object: 5390e90d5982164a99cf316c8a846bbe4605e8f1 src/ttd_data/models/advertiserdsrrequest.py: id: 547e907d3b1a last_write_checksum: sha1:8e99483bc9ee10e37e62d882ec12c987718e7ac3 @@ -442,8 +442,8 @@ trackedFiles: pristine_git_object: 39acf52aa7138ce3e6776ae023c0a80e6eede1c2 src/ttd_data/models/dsrerrorcode.py: id: 3d91ba4e034b - last_write_checksum: sha1:5cfbc175b0bf87444a569167343195331b2cef4b - pristine_git_object: d229b2db3c3eef7b742b746eed996afc26cf32e0 + last_write_checksum: sha1:415b46b7accf9179cd2cebeb1e927bea04fddf5a + pristine_git_object: 0d07b3186a31c8ced8479636330d084a0f129018 src/ttd_data/models/httpmetadata.py: id: 2b8260801700 last_write_checksum: sha1:be77609bcc6233a2ab0d9aed3c4ecbba55a80db2 @@ -462,8 +462,8 @@ trackedFiles: pristine_git_object: 3004d004cd1d869974be34828c0236a78a8be09c src/ttd_data/models/merchantdsrfailedline.py: id: 5100bc2ef724 - last_write_checksum: sha1:c60bacb6d41f011441024b58f9ff147c60bc0bc0 - pristine_git_object: 5d0a0c45291eba27f036a82cd68d1b2312950f61 + last_write_checksum: sha1:0697522e096ce8f24930d977de393d3586e0c4a2 + pristine_git_object: b3d21609ca1dbbebc44cf28ca0194d6db83c2d49 src/ttd_data/models/merchantdsrrequest.py: id: 4f8f69a30b61 last_write_checksum: sha1:cbd78b8b553f3bc2ce189cff37af1f9d8ccd8ca5 @@ -518,12 +518,12 @@ trackedFiles: pristine_git_object: 4c23aeca77104651d719fedb3b6165663fca71d1 src/ttd_data/models/thirdpartydataserverresponseline.py: id: 4a5fa4dcfd73 - last_write_checksum: sha1:cdba2f5937b515ff83b19202b0bbc9fad6a055d5 - pristine_git_object: 5edbbcb11a7256bf7e048f58a5bba262e183b8d7 + last_write_checksum: sha1:668e89311a464ab13bf04b216d5e06f50f245dc0 + pristine_git_object: b132fb0bbbceb14a2e288cf8c66731c7e70f8ef3 src/ttd_data/models/thirdpartydsrfailedline.py: id: 349404a49bbf - last_write_checksum: sha1:c83964c03ce130e3373909440056a0cf229b06a3 - pristine_git_object: 17753ee1fa5336f0cecffbf26a949af12a853572 + last_write_checksum: sha1:d4f65c4fdbd766eec81a2210165d3d634422649b + pristine_git_object: 982b85ab53dfcf2b05b2cfaed06099534dbf41ff src/ttd_data/models/thirdpartydsrrequest.py: id: 586497a7c7ed last_write_checksum: sha1:2dcf752fae00f966f16ef6cacb8bd98df042e8cc @@ -534,8 +534,8 @@ trackedFiles: pristine_git_object: b8960ee34603991114cae808f15a75001ac2c6a8 src/ttd_data/offlineconversion.py: id: 9cbf832f0f9b - last_write_checksum: sha1:2f1b7cd5aa5436062e2a23b842ae16862f90ae15 - pristine_git_object: 9dfbbd9e84f59bae1f0ecf26a189338528a8a318 + last_write_checksum: sha1:38da8b856f7454f1dc00c17bc81abf6c82d0c89e + pristine_git_object: 794367dd50b173853c38190c2beb944cb7f31981 src/ttd_data/py.typed: id: 6369ae030577 last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 @@ -550,8 +550,8 @@ trackedFiles: pristine_git_object: 914672ad7183223ef1b4fcaf06b06356fb5374c7 src/ttd_data/thirdparty.py: id: ad2d973ed3be - last_write_checksum: sha1:6558164f2d2f608f12b32207b0f768558fad268e - pristine_git_object: 561447f1376be2a0fe8420fa3f3723dcbda0c47a + last_write_checksum: sha1:a681eefa281c51cd863f6f0bc8fc7c612e475a81 + pristine_git_object: 22b6e83deff9f5671fd34742eab1230a44132cee src/ttd_data/types/__init__.py: id: 219a89572292 last_write_checksum: sha1:ec1219cdc8f39cd32347b66eda50794bc082c9d8 @@ -711,4 +711,4 @@ examples: application/json: {} examplesVersion: 1.0.2 generatedTests: {} -releaseNotes: "## Python SDK Changes:\n* `base_data_client.advertiser.ingest_advertiser_data()`: \n * `request.items[].utiq_id` **Added**\n * `error.status[401]` **Added**\n* `base_data_client.third_party.ingest_third_party_data()`: \n * `request.items[].utiq_id` **Added**\n * `error.status[401]` **Added**\n* `base_data_client.offline_conversion.ingest_offline_conversion_data()`: `error.status[401]` **Added**\n* `base_data_client.deletion_opt_out.data_subject_request_advertiser_data()`: \n * `request.items[].utiq_id` **Added**\n * `error.status[401]` **Added**\n* `base_data_client.deletion_opt_out.data_subject_request_merchant_data()`: \n * `request.items[].utiq_id` **Added**\n * `error.status[401]` **Added**\n* `base_data_client.deletion_opt_out.data_subject_request_third_party_data()`: \n * `request.items[].utiq_id` **Added**\n * `error.status[401]` **Added**\n" +releaseNotes: "## Python SDK Changes:\n* `base_data_client.deletion_opt_out.data_subject_request_advertiser_data()`: \n * `response.failed_lines[]` **Changed** (Breaking ⚠️)\n * `error.failed_lines[]` **Changed** (Breaking ⚠️)\n* `base_data_client.deletion_opt_out.data_subject_request_merchant_data()`: \n * `response.failed_lines[]` **Changed** (Breaking ⚠️)\n * `error.failed_lines[]` **Changed** (Breaking ⚠️)\n* `base_data_client.deletion_opt_out.data_subject_request_third_party_data()`: \n * `response.failed_lines[]` **Changed** (Breaking ⚠️)\n * `error.failed_lines[]` **Changed** (Breaking ⚠️)\n* `base_data_client.advertiser.ingest_advertiser_data()`: \n * `response.failed_lines[].data_number` **Added**\n * `error.failed_lines[].data_number` **Added**\n* `base_data_client.third_party.ingest_third_party_data()`: \n * `response.failed_lines[].data_number` **Added**\n * `error.failed_lines[].data_number` **Added**\n" diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 7146747..20771a7 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -35,7 +35,7 @@ generation: generateNewTests: false skipResponseBodyAssertions: false python: - version: 0.2.3 + version: 0.3.0 additionalDependencies: dev: {} main: diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index c243643..5ce288f 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -544,6 +544,9 @@ components: ItemNumber: type: "string" nullable: true + DataNumber: + type: "string" + nullable: true additionalProperties: false AdvertiserDsrFailedLine: type: "object" @@ -566,6 +569,9 @@ components: ItemNumber: type: "string" nullable: true + DataNumber: + type: "string" + nullable: true additionalProperties: false AdvertiserDsrRequest: type: "object" @@ -600,6 +606,7 @@ components: enum: - "Unknown" - "InvalidUserId" + - "ItemDeserializationError" - "Uid2Error" type: "string" MerchantDsrFailedLine: @@ -620,6 +627,9 @@ components: ItemNumber: type: "string" nullable: true + DataNumber: + type: "string" + nullable: true additionalProperties: false MerchantDsrRequest: type: "object" @@ -1085,6 +1095,9 @@ components: ItemNumber: type: "string" nullable: true + DataNumber: + type: "string" + nullable: true additionalProperties: false ThirdPartyDsrFailedLine: type: "object" @@ -1104,6 +1117,9 @@ components: ItemNumber: type: "string" nullable: true + DataNumber: + type: "string" + nullable: true additionalProperties: false ThirdPartyDsrRequest: type: "object" diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index c47bb3b..1b30cca 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,9 +1,9 @@ -speakeasyVersion: 1.785.0 +speakeasyVersion: 1.788.1 sources: Data API: sourceNamespace: data-api - sourceRevisionDigest: sha256:6b430c445933bb3902f4edf80b6619b17c10e4187264ceef91dd93cfaef33bdf - sourceBlobDigest: sha256:b405179104d27c6ac61cb7385eb9b5c1b6cf71f834c9c65bd41688b489071d7c + sourceRevisionDigest: sha256:f574768825bea432e794b95e0fe14447713d1960a335d1966a3cebfa05dd13b3 + sourceBlobDigest: sha256:28914e0e0c55910969c80591fd249ed97ae6e37afac07d19dfab7e1417d83c68 tags: - latest - v0.1 @@ -18,10 +18,10 @@ targets: data-api: source: Data API sourceNamespace: data-api - sourceRevisionDigest: sha256:6b430c445933bb3902f4edf80b6619b17c10e4187264ceef91dd93cfaef33bdf - sourceBlobDigest: sha256:b405179104d27c6ac61cb7385eb9b5c1b6cf71f834c9c65bd41688b489071d7c + sourceRevisionDigest: sha256:f574768825bea432e794b95e0fe14447713d1960a335d1966a3cebfa05dd13b3 + sourceBlobDigest: sha256:28914e0e0c55910969c80591fd249ed97ae6e37afac07d19dfab7e1417d83c68 codeSamplesNamespace: data-api-python-code-samples - codeSamplesRevisionDigest: sha256:3bba5c9729abb1474e02615293d58ebb0f80909088aa1a2b8a86f225c153ab04 + codeSamplesRevisionDigest: sha256:d5bc27984baea675d7f52a3796c86135dce6befb5a41a33299107ff82e24263e data-api-local: source: Data API Local sourceNamespace: data-api-local diff --git a/RELEASES.md b/RELEASES.md index fc6f3ad..e40c539 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -128,4 +128,14 @@ Based on: ### Generated - [python v0.2.3] . ### Releases -- [PyPI v0.2.3] https://pypi.org/project/ttd-data/0.2.3 - . \ No newline at end of file +- [PyPI v0.2.3] https://pypi.org/project/ttd-data/0.2.3 - . + +## 2026-07-06 02:14:32 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.788.1 (2.915.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.3.0] . +### Releases +- [PyPI v0.3.0] https://pypi.org/project/ttd-data/0.3.0 - . \ No newline at end of file diff --git a/docs/models/advertiserdataserverresponseline.md b/docs/models/advertiserdataserverresponseline.md index ad7cca7..9eb3c7c 100644 --- a/docs/models/advertiserdataserverresponseline.md +++ b/docs/models/advertiserdataserverresponseline.md @@ -9,4 +9,5 @@ | `data_name` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `error_code` | [Optional[models.AdvertiserDataResponseErrorCode]](../models/advertiserdataresponseerrorcode.md) | :heavy_minus_sign: | N/A | | `message` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `item_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `item_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `data_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/advertiserdsrfailedline.md b/docs/models/advertiserdsrfailedline.md index 3787f86..8f3d025 100644 --- a/docs/models/advertiserdsrfailedline.md +++ b/docs/models/advertiserdsrfailedline.md @@ -10,4 +10,5 @@ | `tdid` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `error_code` | [Optional[models.DsrErrorCode]](../models/dsrerrorcode.md) | :heavy_minus_sign: | N/A | | `message` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `item_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `item_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `data_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/dsrerrorcode.md b/docs/models/dsrerrorcode.md index 12a6694..a281b7e 100644 --- a/docs/models/dsrerrorcode.md +++ b/docs/models/dsrerrorcode.md @@ -11,8 +11,9 @@ value = DsrErrorCode.UNKNOWN ## Values -| Name | Value | -| ----------------- | ----------------- | -| `UNKNOWN` | Unknown | -| `INVALID_USER_ID` | InvalidUserId | -| `UID2_ERROR` | Uid2Error | \ No newline at end of file +| Name | Value | +| ---------------------------- | ---------------------------- | +| `UNKNOWN` | Unknown | +| `INVALID_USER_ID` | InvalidUserId | +| `ITEM_DESERIALIZATION_ERROR` | ItemDeserializationError | +| `UID2_ERROR` | Uid2Error | \ No newline at end of file diff --git a/docs/models/merchantdsrfailedline.md b/docs/models/merchantdsrfailedline.md index 8783145..7636ce9 100644 --- a/docs/models/merchantdsrfailedline.md +++ b/docs/models/merchantdsrfailedline.md @@ -9,4 +9,5 @@ | `tdid` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `error_code` | [Optional[models.DsrErrorCode]](../models/dsrerrorcode.md) | :heavy_minus_sign: | N/A | | `message` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `item_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `item_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `data_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/thirdpartydataserverresponseline.md b/docs/models/thirdpartydataserverresponseline.md index d08bf12..453ccd9 100644 --- a/docs/models/thirdpartydataserverresponseline.md +++ b/docs/models/thirdpartydataserverresponseline.md @@ -10,4 +10,5 @@ | `data_name` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `error_code` | [Optional[models.ThirdPartyDataResponseErrorCode]](../models/thirdpartydataresponseerrorcode.md) | :heavy_minus_sign: | N/A | | `message` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `item_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `item_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `data_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/thirdpartydsrfailedline.md b/docs/models/thirdpartydsrfailedline.md index fa0e3e1..9112842 100644 --- a/docs/models/thirdpartydsrfailedline.md +++ b/docs/models/thirdpartydsrfailedline.md @@ -9,4 +9,5 @@ | `tdid` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `error_code` | [Optional[models.DsrErrorCode]](../models/dsrerrorcode.md) | :heavy_minus_sign: | N/A | | `message` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `item_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `item_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `data_number` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 365f45e..d24a7c4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "ttd-data" -version = "0.2.3" +version = "0.3.0" description = "Python Client SDK for TTD Data API." authors = [{ name = "Speakeasy" },] readme = "README-PYPI.md" @@ -8,7 +8,7 @@ requires-python = ">=3.10" dependencies = [ "httpcore >=1.0.9", "httpx >=0.28.1", - "pydantic >=2.11.2", + "pydantic >=2.11.2,<2.13", "uid2-client >=2.9.0,<3.0.0", ] urls.repository = "https://github.com/thetradedesk/ttd-data-python.git" diff --git a/src/ttd_data/_hooks/types.py b/src/ttd_data/_hooks/types.py index 4056118..4d1beea 100644 --- a/src/ttd_data/_hooks/types.py +++ b/src/ttd_data/_hooks/types.py @@ -4,7 +4,7 @@ from abc import ABC, abstractmethod import httpx from ttd_data.sdkconfiguration import SDKConfiguration -from typing import Any, Callable, List, Optional, Tuple, Union +from typing import Any, Callable, Dict, List, Optional, Tuple, Union class HookContext: @@ -13,6 +13,8 @@ class HookContext: operation_id: str oauth2_scopes: Optional[List[str]] = None security_source: Optional[Union[Any, Callable[[], Any]]] = None + tags: Optional[List[str]] = None + extensions: Optional[Dict[str, Any]] = None def __init__( self, @@ -21,12 +23,16 @@ def __init__( operation_id: str, oauth2_scopes: Optional[List[str]], security_source: Optional[Union[Any, Callable[[], Any]]], + tags: Optional[List[str]], + extensions: Optional[Dict[str, Any]], ): self.config = config self.base_url = base_url self.operation_id = operation_id self.oauth2_scopes = oauth2_scopes self.security_source = security_source + self.tags = tags + self.extensions = extensions class BeforeRequestContext(HookContext): @@ -37,6 +43,8 @@ def __init__(self, hook_ctx: HookContext): hook_ctx.operation_id, hook_ctx.oauth2_scopes, hook_ctx.security_source, + hook_ctx.tags, + hook_ctx.extensions, ) @@ -48,6 +56,8 @@ def __init__(self, hook_ctx: HookContext): hook_ctx.operation_id, hook_ctx.oauth2_scopes, hook_ctx.security_source, + hook_ctx.tags, + hook_ctx.extensions, ) @@ -59,6 +69,8 @@ def __init__(self, hook_ctx: HookContext): hook_ctx.operation_id, hook_ctx.oauth2_scopes, hook_ctx.security_source, + hook_ctx.tags, + hook_ctx.extensions, ) diff --git a/src/ttd_data/_version.py b/src/ttd_data/_version.py index 1122d76..442832c 100644 --- a/src/ttd_data/_version.py +++ b/src/ttd_data/_version.py @@ -4,10 +4,10 @@ import importlib.metadata __title__: str = "ttd-data" -__version__: str = "0.2.3" +__version__: str = "0.3.0" __openapi_doc_version__: str = "v0.1" -__gen_version__: str = "2.912.1" -__user_agent__: str = "speakeasy-sdk/python 0.2.3 2.912.1 v0.1 ttd-data" +__gen_version__: str = "2.915.1" +__user_agent__: str = "speakeasy-sdk/python 0.3.0 2.915.1 v0.1 ttd-data" try: if __package__ is not None: diff --git a/src/ttd_data/advertiser.py b/src/ttd_data/advertiser.py index e881b23..fb0f6dd 100644 --- a/src/ttd_data/advertiser.py +++ b/src/ttd_data/advertiser.py @@ -103,6 +103,8 @@ def ingest_advertiser_data( operation_id="IngestAdvertiserData", oauth2_scopes=None, security_source=None, + tags=["Advertiser"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -227,6 +229,8 @@ async def ingest_advertiser_data_async( operation_id="IngestAdvertiserData", oauth2_scopes=None, security_source=None, + tags=["Advertiser"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), diff --git a/src/ttd_data/deletionoptout.py b/src/ttd_data/deletionoptout.py index 50fdb2d..fab3b7c 100644 --- a/src/ttd_data/deletionoptout.py +++ b/src/ttd_data/deletionoptout.py @@ -99,6 +99,8 @@ def data_subject_request_advertiser_data( operation_id="DataSubjectRequestAdvertiserData", oauth2_scopes=None, security_source=None, + tags=["DeletionOptOut"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -219,6 +221,8 @@ async def data_subject_request_advertiser_data_async( operation_id="DataSubjectRequestAdvertiserData", oauth2_scopes=None, security_source=None, + tags=["DeletionOptOut"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -336,6 +340,8 @@ def data_subject_request_merchant_data( operation_id="DataSubjectRequestMerchantData", oauth2_scopes=None, security_source=None, + tags=["DeletionOptOut"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -453,6 +459,8 @@ async def data_subject_request_merchant_data_async( operation_id="DataSubjectRequestMerchantData", oauth2_scopes=None, security_source=None, + tags=["DeletionOptOut"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -573,6 +581,8 @@ def data_subject_request_third_party_data( operation_id="DataSubjectRequestThirdPartyData", oauth2_scopes=None, security_source=None, + tags=["DeletionOptOut"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -693,6 +703,8 @@ async def data_subject_request_third_party_data_async( operation_id="DataSubjectRequestThirdPartyData", oauth2_scopes=None, security_source=None, + tags=["DeletionOptOut"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), diff --git a/src/ttd_data/models/advertiserdataserverresponseline.py b/src/ttd_data/models/advertiserdataserverresponseline.py index 3916abc..cd7c079 100644 --- a/src/ttd_data/models/advertiserdataserverresponseline.py +++ b/src/ttd_data/models/advertiserdataserverresponseline.py @@ -16,6 +16,7 @@ class AdvertiserDataServerResponseLineTypedDict(TypedDict): error_code: NotRequired[AdvertiserDataResponseErrorCode] message: NotRequired[Nullable[str]] item_number: NotRequired[Nullable[str]] + data_number: NotRequired[Nullable[str]] class AdvertiserDataServerResponseLine(BaseModel): @@ -35,12 +36,18 @@ class AdvertiserDataServerResponseLine(BaseModel): OptionalNullable[str], pydantic.Field(alias="ItemNumber") ] = UNSET + data_number: Annotated[ + OptionalNullable[str], pydantic.Field(alias="DataNumber") + ] = UNSET + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( - ["TDID", "DataName", "ErrorCode", "Message", "ItemNumber"] + ["TDID", "DataName", "ErrorCode", "Message", "ItemNumber", "DataNumber"] + ) + nullable_fields = set( + ["TDID", "DataName", "Message", "ItemNumber", "DataNumber"] ) - nullable_fields = set(["TDID", "DataName", "Message", "ItemNumber"]) serialized = handler(self) m = {} diff --git a/src/ttd_data/models/advertiserdsrfailedline.py b/src/ttd_data/models/advertiserdsrfailedline.py index bb97732..5390e90 100644 --- a/src/ttd_data/models/advertiserdsrfailedline.py +++ b/src/ttd_data/models/advertiserdsrfailedline.py @@ -17,6 +17,7 @@ class AdvertiserDsrFailedLineTypedDict(TypedDict): error_code: NotRequired[DsrErrorCode] message: NotRequired[Nullable[str]] item_number: NotRequired[Nullable[str]] + data_number: NotRequired[Nullable[str]] class AdvertiserDsrFailedLine(BaseModel): @@ -40,6 +41,10 @@ class AdvertiserDsrFailedLine(BaseModel): OptionalNullable[str], pydantic.Field(alias="ItemNumber") ] = UNSET + data_number: Annotated[ + OptionalNullable[str], pydantic.Field(alias="DataNumber") + ] = UNSET + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -50,10 +55,18 @@ def serialize_model(self, handler): "ErrorCode", "Message", "ItemNumber", + "DataNumber", ] ) nullable_fields = set( - ["AdvertiserId", "DataProviderId", "TDID", "Message", "ItemNumber"] + [ + "AdvertiserId", + "DataProviderId", + "TDID", + "Message", + "ItemNumber", + "DataNumber", + ] ) serialized = handler(self) m = {} diff --git a/src/ttd_data/models/dsrerrorcode.py b/src/ttd_data/models/dsrerrorcode.py index d229b2d..0d07b31 100644 --- a/src/ttd_data/models/dsrerrorcode.py +++ b/src/ttd_data/models/dsrerrorcode.py @@ -8,4 +8,5 @@ class DsrErrorCode(str, Enum): UNKNOWN = "Unknown" INVALID_USER_ID = "InvalidUserId" + ITEM_DESERIALIZATION_ERROR = "ItemDeserializationError" UID2_ERROR = "Uid2Error" diff --git a/src/ttd_data/models/merchantdsrfailedline.py b/src/ttd_data/models/merchantdsrfailedline.py index 5d0a0c4..b3d2160 100644 --- a/src/ttd_data/models/merchantdsrfailedline.py +++ b/src/ttd_data/models/merchantdsrfailedline.py @@ -16,6 +16,7 @@ class MerchantDsrFailedLineTypedDict(TypedDict): error_code: NotRequired[DsrErrorCode] message: NotRequired[Nullable[str]] item_number: NotRequired[Nullable[str]] + data_number: NotRequired[Nullable[str]] class MerchantDsrFailedLine(BaseModel): @@ -35,12 +36,18 @@ class MerchantDsrFailedLine(BaseModel): OptionalNullable[str], pydantic.Field(alias="ItemNumber") ] = UNSET + data_number: Annotated[ + OptionalNullable[str], pydantic.Field(alias="DataNumber") + ] = UNSET + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( - ["MerchantId", "TDID", "ErrorCode", "Message", "ItemNumber"] + ["MerchantId", "TDID", "ErrorCode", "Message", "ItemNumber", "DataNumber"] + ) + nullable_fields = set( + ["MerchantId", "TDID", "Message", "ItemNumber", "DataNumber"] ) - nullable_fields = set(["MerchantId", "TDID", "Message", "ItemNumber"]) serialized = handler(self) m = {} diff --git a/src/ttd_data/models/thirdpartydataserverresponseline.py b/src/ttd_data/models/thirdpartydataserverresponseline.py index 5edbbcb..b132fb0 100644 --- a/src/ttd_data/models/thirdpartydataserverresponseline.py +++ b/src/ttd_data/models/thirdpartydataserverresponseline.py @@ -17,6 +17,7 @@ class ThirdPartyDataServerResponseLineTypedDict(TypedDict): error_code: NotRequired[ThirdPartyDataResponseErrorCode] message: NotRequired[Nullable[str]] item_number: NotRequired[Nullable[str]] + data_number: NotRequired[Nullable[str]] class ThirdPartyDataServerResponseLine(BaseModel): @@ -40,6 +41,10 @@ class ThirdPartyDataServerResponseLine(BaseModel): OptionalNullable[str], pydantic.Field(alias="ItemNumber") ] = UNSET + data_number: Annotated[ + OptionalNullable[str], pydantic.Field(alias="DataNumber") + ] = UNSET + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -50,10 +55,18 @@ def serialize_model(self, handler): "ErrorCode", "Message", "ItemNumber", + "DataNumber", ] ) nullable_fields = set( - ["DataProviderUserId", "TDID", "DataName", "Message", "ItemNumber"] + [ + "DataProviderUserId", + "TDID", + "DataName", + "Message", + "ItemNumber", + "DataNumber", + ] ) serialized = handler(self) m = {} diff --git a/src/ttd_data/models/thirdpartydsrfailedline.py b/src/ttd_data/models/thirdpartydsrfailedline.py index 17753ee..982b85a 100644 --- a/src/ttd_data/models/thirdpartydsrfailedline.py +++ b/src/ttd_data/models/thirdpartydsrfailedline.py @@ -16,6 +16,7 @@ class ThirdPartyDsrFailedLineTypedDict(TypedDict): error_code: NotRequired[DsrErrorCode] message: NotRequired[Nullable[str]] item_number: NotRequired[Nullable[str]] + data_number: NotRequired[Nullable[str]] class ThirdPartyDsrFailedLine(BaseModel): @@ -35,12 +36,25 @@ class ThirdPartyDsrFailedLine(BaseModel): OptionalNullable[str], pydantic.Field(alias="ItemNumber") ] = UNSET + data_number: Annotated[ + OptionalNullable[str], pydantic.Field(alias="DataNumber") + ] = UNSET + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( - ["DataProviderId", "TDID", "ErrorCode", "Message", "ItemNumber"] + [ + "DataProviderId", + "TDID", + "ErrorCode", + "Message", + "ItemNumber", + "DataNumber", + ] + ) + nullable_fields = set( + ["DataProviderId", "TDID", "Message", "ItemNumber", "DataNumber"] ) - nullable_fields = set(["DataProviderId", "TDID", "Message", "ItemNumber"]) serialized = handler(self) m = {} diff --git a/src/ttd_data/offlineconversion.py b/src/ttd_data/offlineconversion.py index 9dfbbd9..794367d 100644 --- a/src/ttd_data/offlineconversion.py +++ b/src/ttd_data/offlineconversion.py @@ -105,6 +105,8 @@ def ingest_offline_conversion_data( operation_id="IngestOfflineConversionData", oauth2_scopes=None, security_source=None, + tags=["OfflineConversion"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -233,6 +235,8 @@ async def ingest_offline_conversion_data_async( operation_id="IngestOfflineConversionData", oauth2_scopes=None, security_source=None, + tags=["OfflineConversion"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), diff --git a/src/ttd_data/thirdparty.py b/src/ttd_data/thirdparty.py index 561447f..22b6e83 100644 --- a/src/ttd_data/thirdparty.py +++ b/src/ttd_data/thirdparty.py @@ -103,6 +103,8 @@ def ingest_third_party_data( operation_id="IngestThirdPartyData", oauth2_scopes=None, security_source=None, + tags=["ThirdParty"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -227,6 +229,8 @@ async def ingest_third_party_data_async( operation_id="IngestThirdPartyData", oauth2_scopes=None, security_source=None, + tags=["ThirdParty"], + extensions=None, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), diff --git a/uv.lock b/uv.lock index 32feaa8..f1c9c1e 100644 --- a/uv.lock +++ b/uv.lock @@ -169,7 +169,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ @@ -638,7 +638,7 @@ wheels = [ [[package]] name = "ttd-data" -version = "0.2.3" +version = "0.3.0" source = { editable = "." } dependencies = [ { name = "httpcore" }, @@ -660,7 +660,7 @@ dev = [ requires-dist = [ { name = "httpcore", specifier = ">=1.0.9" }, { name = "httpx", specifier = ">=0.28.1" }, - { name = "pydantic", specifier = ">=2.11.2" }, + { name = "pydantic", specifier = ">=2.11.2,<2.13" }, { name = "uid2-client", specifier = ">=2.9.0,<3.0.0" }, ]