ttd-data 0.2.2__tar.gz → 0.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. {ttd_data-0.2.2/src/ttd_data.egg-info → ttd_data-0.2.4}/PKG-INFO +2 -2
  2. {ttd_data-0.2.2 → ttd_data-0.2.4}/pyproject.toml +2 -2
  3. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/_hooks/types.py +13 -1
  4. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/_version.py +3 -3
  5. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/advertiser.py +13 -9
  6. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/deletionoptout.py +31 -19
  7. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/advertiserdataserverresponseline.py +9 -2
  8. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/advertiserdsrfailedline.py +14 -1
  9. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/baseadvertiserdataitem.py +5 -0
  10. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/basepartnerdsrdataitem.py +5 -0
  11. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/basethirdpartydataitem.py +5 -0
  12. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/dsrerrorcode.py +1 -0
  13. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/merchantdsrfailedline.py +9 -2
  14. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/thirdpartydataserverresponseline.py +14 -1
  15. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/thirdpartydsrfailedline.py +16 -2
  16. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/offlineconversion.py +21 -13
  17. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/thirdparty.py +13 -9
  18. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/types/base64fileinput.py +4 -0
  19. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/__init__.py +3 -1
  20. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/datetimes.py +15 -1
  21. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/eventstreaming.py +116 -99
  22. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/forms.py +5 -0
  23. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/retries.py +90 -5
  24. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/serializers.py +84 -3
  25. {ttd_data-0.2.2 → ttd_data-0.2.4/src/ttd_data.egg-info}/PKG-INFO +2 -2
  26. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data.egg-info/requires.txt +1 -1
  27. {ttd_data-0.2.2 → ttd_data-0.2.4}/LICENSE +0 -0
  28. {ttd_data-0.2.2 → ttd_data-0.2.4}/NOTICES.txt +0 -0
  29. {ttd_data-0.2.2 → ttd_data-0.2.4}/README-PYPI.md +0 -0
  30. {ttd_data-0.2.2 → ttd_data-0.2.4}/README.md +0 -0
  31. {ttd_data-0.2.2 → ttd_data-0.2.4}/setup.cfg +0 -0
  32. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/__init__.py +0 -0
  33. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/_hooks/__init__.py +0 -0
  34. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/_hooks/data_origins_hook.py +0 -0
  35. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/_hooks/plain_text_error_normalizer.py +0 -0
  36. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/_hooks/registration.py +0 -0
  37. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/_hooks/sdkhooks.py +0 -0
  38. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/basesdk.py +0 -0
  39. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/client.py +0 -0
  40. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/__init__.py +0 -0
  41. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/advertiserdataserverresponse_error.py +0 -0
  42. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/advertiserdsrresponse_error.py +0 -0
  43. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/apierror.py +0 -0
  44. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/dataerror.py +0 -0
  45. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/merchantdsrresponse_error.py +0 -0
  46. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/no_response_error.py +0 -0
  47. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/offlineconversiondataserverresponse_error.py +0 -0
  48. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/responsevalidationerror.py +0 -0
  49. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/thirdpartydataserverresponse_error.py +0 -0
  50. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/thirdpartydsrresponse_error.py +0 -0
  51. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/ttddataerror.py +0 -0
  52. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/errors/uid2serviceerror.py +0 -0
  53. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/httpclient.py +0 -0
  54. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/__init__.py +0 -0
  55. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/advertiserdata.py +0 -0
  56. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/advertiserdatarequest.py +0 -0
  57. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/advertiserdataresponseerrorcode.py +0 -0
  58. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/advertiserdataserverresponse.py +0 -0
  59. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/advertiserdsrrequest.py +0 -0
  60. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/advertiserdsrresponse.py +0 -0
  61. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/baseofflineconversiondataitem.py +0 -0
  62. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/dataorigin.py +0 -0
  63. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/dataorigintype.py +0 -0
  64. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/datasubjectrequestadvertiserdataop.py +0 -0
  65. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/datasubjectrequestmerchantdataop.py +0 -0
  66. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/datasubjectrequestthirdpartydataop.py +0 -0
  67. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/httpmetadata.py +0 -0
  68. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/ingestadvertiserdataop.py +0 -0
  69. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/ingestofflineconversiondataop.py +0 -0
  70. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/ingestthirdpartydataop.py +0 -0
  71. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/merchantdsrrequest.py +0 -0
  72. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/merchantdsrresponse.py +0 -0
  73. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/offlineconversiondatarequest.py +0 -0
  74. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/offlineconversiondataresponseerrorcode.py +0 -0
  75. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/offlineconversiondataserverresponse.py +0 -0
  76. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/offlineconversiondataserverresponseline.py +0 -0
  77. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/partnerdsrrequesttype.py +0 -0
  78. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/realtimeconversioneventlineitem.py +0 -0
  79. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/realtimeconversioneventsprivacysetting.py +0 -0
  80. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/thirdpartydata.py +0 -0
  81. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/thirdpartydatarequest.py +0 -0
  82. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/thirdpartydataresponseerrorcode.py +0 -0
  83. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/thirdpartydataserverresponse.py +0 -0
  84. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/thirdpartydsrrequest.py +0 -0
  85. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/models/thirdpartydsrresponse.py +0 -0
  86. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/py.typed +0 -0
  87. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/sdk.py +0 -0
  88. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/sdkconfiguration.py +0 -0
  89. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/types/__init__.py +0 -0
  90. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/types/basemodel.py +0 -0
  91. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/uid2/__init__.py +0 -0
  92. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/uid2/config.py +0 -0
  93. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/uid2/models.py +0 -0
  94. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/uid2/resolver.py +0 -0
  95. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/annotations.py +0 -0
  96. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/dynamic_imports.py +0 -0
  97. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/enums.py +0 -0
  98. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/headers.py +0 -0
  99. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/logger.py +0 -0
  100. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/metadata.py +0 -0
  101. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/queryparams.py +0 -0
  102. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/requestbodies.py +0 -0
  103. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/security.py +0 -0
  104. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/unmarshal_json_response.py +0 -0
  105. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/url.py +0 -0
  106. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data/utils/values.py +0 -0
  107. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data.egg-info/SOURCES.txt +0 -0
  108. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data.egg-info/dependency_links.txt +0 -0
  109. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data.egg-info/top_level.txt +0 -0
  110. {ttd_data-0.2.2 → ttd_data-0.2.4}/src/ttd_data_python/_hooks/registration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ttd-data
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Python Client SDK for TTD Data API.
5
5
  Author: Speakeasy
6
6
  License: map[name:Apache License 2.0 shortName:Apache-2.0 url:https://www.apache.org/licenses/LICENSE-2.0]
@@ -11,7 +11,7 @@ License-File: LICENSE
11
11
  License-File: NOTICES.txt
12
12
  Requires-Dist: httpcore>=1.0.9
13
13
  Requires-Dist: httpx>=0.28.1
14
- Requires-Dist: pydantic>=2.11.2
14
+ Requires-Dist: pydantic<2.13,>=2.11.2
15
15
  Requires-Dist: uid2-client<3.0.0,>=2.9.0
16
16
  Dynamic: license-file
17
17
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ttd-data"
3
- version = "0.2.2"
3
+ version = "0.2.4"
4
4
  description = "Python Client SDK for TTD Data API."
5
5
  authors = [{ name = "Speakeasy" },]
6
6
  readme = "README-PYPI.md"
@@ -8,7 +8,7 @@ requires-python = ">=3.10"
8
8
  dependencies = [
9
9
  "httpcore >=1.0.9",
10
10
  "httpx >=0.28.1",
11
- "pydantic >=2.11.2",
11
+ "pydantic >=2.11.2,<2.13",
12
12
  "uid2-client >=2.9.0,<3.0.0",
13
13
  ]
14
14
  urls.repository = "https://github.com/thetradedesk/ttd-data-python.git"
@@ -4,7 +4,7 @@
4
4
  from abc import ABC, abstractmethod
5
5
  import httpx
6
6
  from ttd_data.sdkconfiguration import SDKConfiguration
7
- from typing import Any, Callable, List, Optional, Tuple, Union
7
+ from typing import Any, Callable, Dict, List, Optional, Tuple, Union
8
8
 
9
9
 
10
10
  class HookContext:
@@ -13,6 +13,8 @@ class HookContext:
13
13
  operation_id: str
14
14
  oauth2_scopes: Optional[List[str]] = None
15
15
  security_source: Optional[Union[Any, Callable[[], Any]]] = None
16
+ tags: Optional[List[str]] = None
17
+ extensions: Optional[Dict[str, Any]] = None
16
18
 
17
19
  def __init__(
18
20
  self,
@@ -21,12 +23,16 @@ class HookContext:
21
23
  operation_id: str,
22
24
  oauth2_scopes: Optional[List[str]],
23
25
  security_source: Optional[Union[Any, Callable[[], Any]]],
26
+ tags: Optional[List[str]],
27
+ extensions: Optional[Dict[str, Any]],
24
28
  ):
25
29
  self.config = config
26
30
  self.base_url = base_url
27
31
  self.operation_id = operation_id
28
32
  self.oauth2_scopes = oauth2_scopes
29
33
  self.security_source = security_source
34
+ self.tags = tags
35
+ self.extensions = extensions
30
36
 
31
37
 
32
38
  class BeforeRequestContext(HookContext):
@@ -37,6 +43,8 @@ class BeforeRequestContext(HookContext):
37
43
  hook_ctx.operation_id,
38
44
  hook_ctx.oauth2_scopes,
39
45
  hook_ctx.security_source,
46
+ hook_ctx.tags,
47
+ hook_ctx.extensions,
40
48
  )
41
49
 
42
50
 
@@ -48,6 +56,8 @@ class AfterSuccessContext(HookContext):
48
56
  hook_ctx.operation_id,
49
57
  hook_ctx.oauth2_scopes,
50
58
  hook_ctx.security_source,
59
+ hook_ctx.tags,
60
+ hook_ctx.extensions,
51
61
  )
52
62
 
53
63
 
@@ -59,6 +69,8 @@ class AfterErrorContext(HookContext):
59
69
  hook_ctx.operation_id,
60
70
  hook_ctx.oauth2_scopes,
61
71
  hook_ctx.security_source,
72
+ hook_ctx.tags,
73
+ hook_ctx.extensions,
62
74
  )
63
75
 
64
76
 
@@ -4,10 +4,10 @@
4
4
  import importlib.metadata
5
5
 
6
6
  __title__: str = "ttd-data"
7
- __version__: str = "0.2.2"
7
+ __version__: str = "0.2.4"
8
8
  __openapi_doc_version__: str = "v0.1"
9
- __gen_version__: str = "2.892.5"
10
- __user_agent__: str = "speakeasy-sdk/python 0.2.2 2.892.5 v0.1 ttd-data"
9
+ __gen_version__: str = "2.916.2"
10
+ __user_agent__: str = "speakeasy-sdk/python 0.2.4 2.916.2 v0.1 ttd-data"
11
11
 
12
12
  try:
13
13
  if __package__ is not None:
@@ -6,7 +6,7 @@ from ttd_data import errors, models, utils
6
6
  from ttd_data._hooks import HookContext
7
7
  from ttd_data.types import OptionalNullable, UNSET
8
8
  from ttd_data.utils.unmarshal_json_response import unmarshal_json_response
9
- from typing import Any, List, Mapping, Optional, Union
9
+ from typing import Any, Iterable, List, Mapping, Optional, Union
10
10
 
11
11
 
12
12
  class Advertiser(BaseSDK):
@@ -18,13 +18,13 @@ class Advertiser(BaseSDK):
18
18
  data_provider_id: OptionalNullable[str] = UNSET,
19
19
  items: OptionalNullable[
20
20
  Union[
21
- List[models.BaseAdvertiserDataItem],
22
- List[models.BaseAdvertiserDataItemTypedDict],
21
+ Iterable[models.BaseAdvertiserDataItem],
22
+ Iterable[models.BaseAdvertiserDataItemTypedDict],
23
23
  ]
24
24
  ] = UNSET,
25
25
  data_load_trace_id: OptionalNullable[str] = UNSET,
26
26
  data_origins: OptionalNullable[
27
- Union[List[models.DataOrigin], List[models.DataOriginTypedDict]]
27
+ Union[Iterable[models.DataOrigin], Iterable[models.DataOriginTypedDict]]
28
28
  ] = UNSET,
29
29
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
30
30
  server_url: Optional[str] = None,
@@ -103,6 +103,8 @@ class Advertiser(BaseSDK):
103
103
  operation_id="IngestAdvertiserData",
104
104
  oauth2_scopes=None,
105
105
  security_source=None,
106
+ tags=["Advertiser"],
107
+ extensions=None,
106
108
  ),
107
109
  request=req,
108
110
  is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
@@ -125,7 +127,7 @@ class Advertiser(BaseSDK):
125
127
  request=req, response=http_res
126
128
  )
127
129
  raise errors.AdvertiserDataServerResponseError(response_data, http_res)
128
- if utils.match_response(http_res, ["403", "413", "4XX"], "*"):
130
+ if utils.match_response(http_res, ["401", "403", "413", "4XX"], "*"):
129
131
  http_res_text = utils.stream_to_text(http_res)
130
132
  raise errors.APIError("API error occurred", http_res, http_res_text)
131
133
  if utils.match_response(http_res, ["500", "503", "5XX"], "*"):
@@ -142,13 +144,13 @@ class Advertiser(BaseSDK):
142
144
  data_provider_id: OptionalNullable[str] = UNSET,
143
145
  items: OptionalNullable[
144
146
  Union[
145
- List[models.BaseAdvertiserDataItem],
146
- List[models.BaseAdvertiserDataItemTypedDict],
147
+ Iterable[models.BaseAdvertiserDataItem],
148
+ Iterable[models.BaseAdvertiserDataItemTypedDict],
147
149
  ]
148
150
  ] = UNSET,
149
151
  data_load_trace_id: OptionalNullable[str] = UNSET,
150
152
  data_origins: OptionalNullable[
151
- Union[List[models.DataOrigin], List[models.DataOriginTypedDict]]
153
+ Union[Iterable[models.DataOrigin], Iterable[models.DataOriginTypedDict]]
152
154
  ] = UNSET,
153
155
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
154
156
  server_url: Optional[str] = None,
@@ -227,6 +229,8 @@ class Advertiser(BaseSDK):
227
229
  operation_id="IngestAdvertiserData",
228
230
  oauth2_scopes=None,
229
231
  security_source=None,
232
+ tags=["Advertiser"],
233
+ extensions=None,
230
234
  ),
231
235
  request=req,
232
236
  is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
@@ -249,7 +253,7 @@ class Advertiser(BaseSDK):
249
253
  request=req, response=http_res
250
254
  )
251
255
  raise errors.AdvertiserDataServerResponseError(response_data, http_res)
252
- if utils.match_response(http_res, ["403", "413", "4XX"], "*"):
256
+ if utils.match_response(http_res, ["401", "403", "413", "4XX"], "*"):
253
257
  http_res_text = await utils.stream_to_text_async(http_res)
254
258
  raise errors.APIError("API error occurred", http_res, http_res_text)
255
259
  if utils.match_response(http_res, ["500", "503", "5XX"], "*"):
@@ -6,7 +6,7 @@ from ttd_data import errors, models, utils
6
6
  from ttd_data._hooks import HookContext
7
7
  from ttd_data.types import OptionalNullable, UNSET
8
8
  from ttd_data.utils.unmarshal_json_response import unmarshal_json_response
9
- from typing import Any, List, Mapping, Optional, Union
9
+ from typing import Any, Iterable, List, Mapping, Optional, Union
10
10
 
11
11
 
12
12
  class DeletionOptOut(BaseSDK):
@@ -18,8 +18,8 @@ class DeletionOptOut(BaseSDK):
18
18
  data_provider_id: OptionalNullable[str] = UNSET,
19
19
  items: OptionalNullable[
20
20
  Union[
21
- List[models.BasePartnerDsrDataItem],
22
- List[models.BasePartnerDsrDataItemTypedDict],
21
+ Iterable[models.BasePartnerDsrDataItem],
22
+ Iterable[models.BasePartnerDsrDataItemTypedDict],
23
23
  ]
24
24
  ] = UNSET,
25
25
  data_load_trace_id: OptionalNullable[str] = UNSET,
@@ -99,6 +99,8 @@ class DeletionOptOut(BaseSDK):
99
99
  operation_id="DataSubjectRequestAdvertiserData",
100
100
  oauth2_scopes=None,
101
101
  security_source=None,
102
+ tags=["DeletionOptOut"],
103
+ extensions=None,
102
104
  ),
103
105
  request=req,
104
106
  is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
@@ -121,7 +123,7 @@ class DeletionOptOut(BaseSDK):
121
123
  request=req, response=http_res
122
124
  )
123
125
  raise errors.AdvertiserDsrResponseError(response_data, http_res)
124
- if utils.match_response(http_res, ["403", "413", "4XX"], "*"):
126
+ if utils.match_response(http_res, ["401", "403", "413", "4XX"], "*"):
125
127
  http_res_text = utils.stream_to_text(http_res)
126
128
  raise errors.APIError("API error occurred", http_res, http_res_text)
127
129
  if utils.match_response(http_res, ["500", "503", "5XX"], "*"):
@@ -138,8 +140,8 @@ class DeletionOptOut(BaseSDK):
138
140
  data_provider_id: OptionalNullable[str] = UNSET,
139
141
  items: OptionalNullable[
140
142
  Union[
141
- List[models.BasePartnerDsrDataItem],
142
- List[models.BasePartnerDsrDataItemTypedDict],
143
+ Iterable[models.BasePartnerDsrDataItem],
144
+ Iterable[models.BasePartnerDsrDataItemTypedDict],
143
145
  ]
144
146
  ] = UNSET,
145
147
  data_load_trace_id: OptionalNullable[str] = UNSET,
@@ -219,6 +221,8 @@ class DeletionOptOut(BaseSDK):
219
221
  operation_id="DataSubjectRequestAdvertiserData",
220
222
  oauth2_scopes=None,
221
223
  security_source=None,
224
+ tags=["DeletionOptOut"],
225
+ extensions=None,
222
226
  ),
223
227
  request=req,
224
228
  is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
@@ -241,7 +245,7 @@ class DeletionOptOut(BaseSDK):
241
245
  request=req, response=http_res
242
246
  )
243
247
  raise errors.AdvertiserDsrResponseError(response_data, http_res)
244
- if utils.match_response(http_res, ["403", "413", "4XX"], "*"):
248
+ if utils.match_response(http_res, ["401", "403", "413", "4XX"], "*"):
245
249
  http_res_text = await utils.stream_to_text_async(http_res)
246
250
  raise errors.APIError("API error occurred", http_res, http_res_text)
247
251
  if utils.match_response(http_res, ["500", "503", "5XX"], "*"):
@@ -257,8 +261,8 @@ class DeletionOptOut(BaseSDK):
257
261
  merchant_id: OptionalNullable[int] = UNSET,
258
262
  items: OptionalNullable[
259
263
  Union[
260
- List[models.BasePartnerDsrDataItem],
261
- List[models.BasePartnerDsrDataItemTypedDict],
264
+ Iterable[models.BasePartnerDsrDataItem],
265
+ Iterable[models.BasePartnerDsrDataItemTypedDict],
262
266
  ]
263
267
  ] = UNSET,
264
268
  data_load_trace_id: OptionalNullable[str] = UNSET,
@@ -336,6 +340,8 @@ class DeletionOptOut(BaseSDK):
336
340
  operation_id="DataSubjectRequestMerchantData",
337
341
  oauth2_scopes=None,
338
342
  security_source=None,
343
+ tags=["DeletionOptOut"],
344
+ extensions=None,
339
345
  ),
340
346
  request=req,
341
347
  is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
@@ -358,7 +364,7 @@ class DeletionOptOut(BaseSDK):
358
364
  request=req, response=http_res
359
365
  )
360
366
  raise errors.MerchantDsrResponseError(response_data, http_res)
361
- if utils.match_response(http_res, ["403", "413", "4XX"], "*"):
367
+ if utils.match_response(http_res, ["401", "403", "413", "4XX"], "*"):
362
368
  http_res_text = utils.stream_to_text(http_res)
363
369
  raise errors.APIError("API error occurred", http_res, http_res_text)
364
370
  if utils.match_response(http_res, ["500", "503", "5XX"], "*"):
@@ -374,8 +380,8 @@ class DeletionOptOut(BaseSDK):
374
380
  merchant_id: OptionalNullable[int] = UNSET,
375
381
  items: OptionalNullable[
376
382
  Union[
377
- List[models.BasePartnerDsrDataItem],
378
- List[models.BasePartnerDsrDataItemTypedDict],
383
+ Iterable[models.BasePartnerDsrDataItem],
384
+ Iterable[models.BasePartnerDsrDataItemTypedDict],
379
385
  ]
380
386
  ] = UNSET,
381
387
  data_load_trace_id: OptionalNullable[str] = UNSET,
@@ -453,6 +459,8 @@ class DeletionOptOut(BaseSDK):
453
459
  operation_id="DataSubjectRequestMerchantData",
454
460
  oauth2_scopes=None,
455
461
  security_source=None,
462
+ tags=["DeletionOptOut"],
463
+ extensions=None,
456
464
  ),
457
465
  request=req,
458
466
  is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
@@ -475,7 +483,7 @@ class DeletionOptOut(BaseSDK):
475
483
  request=req, response=http_res
476
484
  )
477
485
  raise errors.MerchantDsrResponseError(response_data, http_res)
478
- if utils.match_response(http_res, ["403", "413", "4XX"], "*"):
486
+ if utils.match_response(http_res, ["401", "403", "413", "4XX"], "*"):
479
487
  http_res_text = await utils.stream_to_text_async(http_res)
480
488
  raise errors.APIError("API error occurred", http_res, http_res_text)
481
489
  if utils.match_response(http_res, ["500", "503", "5XX"], "*"):
@@ -492,8 +500,8 @@ class DeletionOptOut(BaseSDK):
492
500
  brand_id: OptionalNullable[str] = UNSET,
493
501
  items: OptionalNullable[
494
502
  Union[
495
- List[models.BasePartnerDsrDataItem],
496
- List[models.BasePartnerDsrDataItemTypedDict],
503
+ Iterable[models.BasePartnerDsrDataItem],
504
+ Iterable[models.BasePartnerDsrDataItemTypedDict],
497
505
  ]
498
506
  ] = UNSET,
499
507
  data_load_trace_id: OptionalNullable[str] = UNSET,
@@ -573,6 +581,8 @@ class DeletionOptOut(BaseSDK):
573
581
  operation_id="DataSubjectRequestThirdPartyData",
574
582
  oauth2_scopes=None,
575
583
  security_source=None,
584
+ tags=["DeletionOptOut"],
585
+ extensions=None,
576
586
  ),
577
587
  request=req,
578
588
  is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
@@ -595,7 +605,7 @@ class DeletionOptOut(BaseSDK):
595
605
  request=req, response=http_res
596
606
  )
597
607
  raise errors.ThirdPartyDsrResponseError(response_data, http_res)
598
- if utils.match_response(http_res, ["403", "413", "4XX"], "*"):
608
+ if utils.match_response(http_res, ["401", "403", "413", "4XX"], "*"):
599
609
  http_res_text = utils.stream_to_text(http_res)
600
610
  raise errors.APIError("API error occurred", http_res, http_res_text)
601
611
  if utils.match_response(http_res, ["500", "503", "5XX"], "*"):
@@ -612,8 +622,8 @@ class DeletionOptOut(BaseSDK):
612
622
  brand_id: OptionalNullable[str] = UNSET,
613
623
  items: OptionalNullable[
614
624
  Union[
615
- List[models.BasePartnerDsrDataItem],
616
- List[models.BasePartnerDsrDataItemTypedDict],
625
+ Iterable[models.BasePartnerDsrDataItem],
626
+ Iterable[models.BasePartnerDsrDataItemTypedDict],
617
627
  ]
618
628
  ] = UNSET,
619
629
  data_load_trace_id: OptionalNullable[str] = UNSET,
@@ -693,6 +703,8 @@ class DeletionOptOut(BaseSDK):
693
703
  operation_id="DataSubjectRequestThirdPartyData",
694
704
  oauth2_scopes=None,
695
705
  security_source=None,
706
+ tags=["DeletionOptOut"],
707
+ extensions=None,
696
708
  ),
697
709
  request=req,
698
710
  is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
@@ -715,7 +727,7 @@ class DeletionOptOut(BaseSDK):
715
727
  request=req, response=http_res
716
728
  )
717
729
  raise errors.ThirdPartyDsrResponseError(response_data, http_res)
718
- if utils.match_response(http_res, ["403", "413", "4XX"], "*"):
730
+ if utils.match_response(http_res, ["401", "403", "413", "4XX"], "*"):
719
731
  http_res_text = await utils.stream_to_text_async(http_res)
720
732
  raise errors.APIError("API error occurred", http_res, http_res_text)
721
733
  if utils.match_response(http_res, ["500", "503", "5XX"], "*"):
@@ -16,6 +16,7 @@ class AdvertiserDataServerResponseLineTypedDict(TypedDict):
16
16
  error_code: NotRequired[AdvertiserDataResponseErrorCode]
17
17
  message: NotRequired[Nullable[str]]
18
18
  item_number: NotRequired[Nullable[str]]
19
+ data_number: NotRequired[Nullable[str]]
19
20
 
20
21
 
21
22
  class AdvertiserDataServerResponseLine(BaseModel):
@@ -35,12 +36,18 @@ class AdvertiserDataServerResponseLine(BaseModel):
35
36
  OptionalNullable[str], pydantic.Field(alias="ItemNumber")
36
37
  ] = UNSET
37
38
 
39
+ data_number: Annotated[
40
+ OptionalNullable[str], pydantic.Field(alias="DataNumber")
41
+ ] = UNSET
42
+
38
43
  @model_serializer(mode="wrap")
39
44
  def serialize_model(self, handler):
40
45
  optional_fields = set(
41
- ["TDID", "DataName", "ErrorCode", "Message", "ItemNumber"]
46
+ ["TDID", "DataName", "ErrorCode", "Message", "ItemNumber", "DataNumber"]
47
+ )
48
+ nullable_fields = set(
49
+ ["TDID", "DataName", "Message", "ItemNumber", "DataNumber"]
42
50
  )
43
- nullable_fields = set(["TDID", "DataName", "Message", "ItemNumber"])
44
51
  serialized = handler(self)
45
52
  m = {}
46
53
 
@@ -17,6 +17,7 @@ class AdvertiserDsrFailedLineTypedDict(TypedDict):
17
17
  error_code: NotRequired[DsrErrorCode]
18
18
  message: NotRequired[Nullable[str]]
19
19
  item_number: NotRequired[Nullable[str]]
20
+ data_number: NotRequired[Nullable[str]]
20
21
 
21
22
 
22
23
  class AdvertiserDsrFailedLine(BaseModel):
@@ -40,6 +41,10 @@ class AdvertiserDsrFailedLine(BaseModel):
40
41
  OptionalNullable[str], pydantic.Field(alias="ItemNumber")
41
42
  ] = UNSET
42
43
 
44
+ data_number: Annotated[
45
+ OptionalNullable[str], pydantic.Field(alias="DataNumber")
46
+ ] = UNSET
47
+
43
48
  @model_serializer(mode="wrap")
44
49
  def serialize_model(self, handler):
45
50
  optional_fields = set(
@@ -50,10 +55,18 @@ class AdvertiserDsrFailedLine(BaseModel):
50
55
  "ErrorCode",
51
56
  "Message",
52
57
  "ItemNumber",
58
+ "DataNumber",
53
59
  ]
54
60
  )
55
61
  nullable_fields = set(
56
- ["AdvertiserId", "DataProviderId", "TDID", "Message", "ItemNumber"]
62
+ [
63
+ "AdvertiserId",
64
+ "DataProviderId",
65
+ "TDID",
66
+ "Message",
67
+ "ItemNumber",
68
+ "DataNumber",
69
+ ]
57
70
  )
58
71
  serialized = handler(self)
59
72
  m = {}
@@ -23,6 +23,7 @@ class BaseAdvertiserDataItemTypedDict(TypedDict):
23
23
  id5: NotRequired[Nullable[str]]
24
24
  net_id: NotRequired[Nullable[str]]
25
25
  first_id: NotRequired[Nullable[str]]
26
+ utiq_id: NotRequired[Nullable[str]]
26
27
  merkury_id: NotRequired[Nullable[str]]
27
28
  iqvia_ppid: NotRequired[Nullable[str]]
28
29
  cookie_mapping_partner_id: NotRequired[Nullable[str]]
@@ -57,6 +58,8 @@ class BaseAdvertiserDataItem(BaseModel):
57
58
 
58
59
  first_id: Annotated[OptionalNullable[str], pydantic.Field(alias="FirstID")] = UNSET
59
60
 
61
+ utiq_id: Annotated[OptionalNullable[str], pydantic.Field(alias="UtiqID")] = UNSET
62
+
60
63
  merkury_id: Annotated[OptionalNullable[str], pydantic.Field(alias="MerkuryID")] = (
61
64
  UNSET
62
65
  )
@@ -84,6 +87,7 @@ class BaseAdvertiserDataItem(BaseModel):
84
87
  "ID5",
85
88
  "NetID",
86
89
  "FirstID",
90
+ "UtiqID",
87
91
  "MerkuryID",
88
92
  "IqviaPPID",
89
93
  "CookieMappingPartnerId",
@@ -102,6 +106,7 @@ class BaseAdvertiserDataItem(BaseModel):
102
106
  "ID5",
103
107
  "NetID",
104
108
  "FirstID",
109
+ "UtiqID",
105
110
  "MerkuryID",
106
111
  "IqviaPPID",
107
112
  "CookieMappingPartnerId",
@@ -20,6 +20,7 @@ class BasePartnerDsrDataItemTypedDict(TypedDict):
20
20
  id5: NotRequired[Nullable[str]]
21
21
  net_id: NotRequired[Nullable[str]]
22
22
  first_id: NotRequired[Nullable[str]]
23
+ utiq_id: NotRequired[Nullable[str]]
23
24
  merkury_id: NotRequired[Nullable[str]]
24
25
  iqvia_ppid: NotRequired[Nullable[str]]
25
26
 
@@ -51,6 +52,8 @@ class BasePartnerDsrDataItem(BaseModel):
51
52
 
52
53
  first_id: Annotated[OptionalNullable[str], pydantic.Field(alias="FirstID")] = UNSET
53
54
 
55
+ utiq_id: Annotated[OptionalNullable[str], pydantic.Field(alias="UtiqID")] = UNSET
56
+
54
57
  merkury_id: Annotated[OptionalNullable[str], pydantic.Field(alias="MerkuryID")] = (
55
58
  UNSET
56
59
  )
@@ -74,6 +77,7 @@ class BasePartnerDsrDataItem(BaseModel):
74
77
  "ID5",
75
78
  "NetID",
76
79
  "FirstID",
80
+ "UtiqID",
77
81
  "MerkuryID",
78
82
  "IqviaPPID",
79
83
  ]
@@ -91,6 +95,7 @@ class BasePartnerDsrDataItem(BaseModel):
91
95
  "ID5",
92
96
  "NetID",
93
97
  "FirstID",
98
+ "UtiqID",
94
99
  "MerkuryID",
95
100
  "IqviaPPID",
96
101
  ]
@@ -24,6 +24,7 @@ class BaseThirdPartyDataItemTypedDict(TypedDict):
24
24
  id5: NotRequired[Nullable[str]]
25
25
  net_id: NotRequired[Nullable[str]]
26
26
  first_id: NotRequired[Nullable[str]]
27
+ utiq_id: NotRequired[Nullable[str]]
27
28
  merkury_id: NotRequired[Nullable[str]]
28
29
  iqvia_ppid: NotRequired[Nullable[str]]
29
30
  cookie_mapping_partner_id: NotRequired[Nullable[str]]
@@ -62,6 +63,8 @@ class BaseThirdPartyDataItem(BaseModel):
62
63
 
63
64
  first_id: Annotated[OptionalNullable[str], pydantic.Field(alias="FirstID")] = UNSET
64
65
 
66
+ utiq_id: Annotated[OptionalNullable[str], pydantic.Field(alias="UtiqID")] = UNSET
67
+
65
68
  merkury_id: Annotated[OptionalNullable[str], pydantic.Field(alias="MerkuryID")] = (
66
69
  UNSET
67
70
  )
@@ -90,6 +93,7 @@ class BaseThirdPartyDataItem(BaseModel):
90
93
  "ID5",
91
94
  "NetID",
92
95
  "FirstID",
96
+ "UtiqID",
93
97
  "MerkuryID",
94
98
  "IqviaPPID",
95
99
  "CookieMappingPartnerId",
@@ -109,6 +113,7 @@ class BaseThirdPartyDataItem(BaseModel):
109
113
  "ID5",
110
114
  "NetID",
111
115
  "FirstID",
116
+ "UtiqID",
112
117
  "MerkuryID",
113
118
  "IqviaPPID",
114
119
  "CookieMappingPartnerId",
@@ -8,4 +8,5 @@ from enum import Enum
8
8
  class DsrErrorCode(str, Enum):
9
9
  UNKNOWN = "Unknown"
10
10
  INVALID_USER_ID = "InvalidUserId"
11
+ ITEM_DESERIALIZATION_ERROR = "ItemDeserializationError"
11
12
  UID2_ERROR = "Uid2Error"
@@ -16,6 +16,7 @@ class MerchantDsrFailedLineTypedDict(TypedDict):
16
16
  error_code: NotRequired[DsrErrorCode]
17
17
  message: NotRequired[Nullable[str]]
18
18
  item_number: NotRequired[Nullable[str]]
19
+ data_number: NotRequired[Nullable[str]]
19
20
 
20
21
 
21
22
  class MerchantDsrFailedLine(BaseModel):
@@ -35,12 +36,18 @@ class MerchantDsrFailedLine(BaseModel):
35
36
  OptionalNullable[str], pydantic.Field(alias="ItemNumber")
36
37
  ] = UNSET
37
38
 
39
+ data_number: Annotated[
40
+ OptionalNullable[str], pydantic.Field(alias="DataNumber")
41
+ ] = UNSET
42
+
38
43
  @model_serializer(mode="wrap")
39
44
  def serialize_model(self, handler):
40
45
  optional_fields = set(
41
- ["MerchantId", "TDID", "ErrorCode", "Message", "ItemNumber"]
46
+ ["MerchantId", "TDID", "ErrorCode", "Message", "ItemNumber", "DataNumber"]
47
+ )
48
+ nullable_fields = set(
49
+ ["MerchantId", "TDID", "Message", "ItemNumber", "DataNumber"]
42
50
  )
43
- nullable_fields = set(["MerchantId", "TDID", "Message", "ItemNumber"])
44
51
  serialized = handler(self)
45
52
  m = {}
46
53
 
@@ -17,6 +17,7 @@ class ThirdPartyDataServerResponseLineTypedDict(TypedDict):
17
17
  error_code: NotRequired[ThirdPartyDataResponseErrorCode]
18
18
  message: NotRequired[Nullable[str]]
19
19
  item_number: NotRequired[Nullable[str]]
20
+ data_number: NotRequired[Nullable[str]]
20
21
 
21
22
 
22
23
  class ThirdPartyDataServerResponseLine(BaseModel):
@@ -40,6 +41,10 @@ class ThirdPartyDataServerResponseLine(BaseModel):
40
41
  OptionalNullable[str], pydantic.Field(alias="ItemNumber")
41
42
  ] = UNSET
42
43
 
44
+ data_number: Annotated[
45
+ OptionalNullable[str], pydantic.Field(alias="DataNumber")
46
+ ] = UNSET
47
+
43
48
  @model_serializer(mode="wrap")
44
49
  def serialize_model(self, handler):
45
50
  optional_fields = set(
@@ -50,10 +55,18 @@ class ThirdPartyDataServerResponseLine(BaseModel):
50
55
  "ErrorCode",
51
56
  "Message",
52
57
  "ItemNumber",
58
+ "DataNumber",
53
59
  ]
54
60
  )
55
61
  nullable_fields = set(
56
- ["DataProviderUserId", "TDID", "DataName", "Message", "ItemNumber"]
62
+ [
63
+ "DataProviderUserId",
64
+ "TDID",
65
+ "DataName",
66
+ "Message",
67
+ "ItemNumber",
68
+ "DataNumber",
69
+ ]
57
70
  )
58
71
  serialized = handler(self)
59
72
  m = {}
@@ -16,6 +16,7 @@ class ThirdPartyDsrFailedLineTypedDict(TypedDict):
16
16
  error_code: NotRequired[DsrErrorCode]
17
17
  message: NotRequired[Nullable[str]]
18
18
  item_number: NotRequired[Nullable[str]]
19
+ data_number: NotRequired[Nullable[str]]
19
20
 
20
21
 
21
22
  class ThirdPartyDsrFailedLine(BaseModel):
@@ -35,12 +36,25 @@ class ThirdPartyDsrFailedLine(BaseModel):
35
36
  OptionalNullable[str], pydantic.Field(alias="ItemNumber")
36
37
  ] = UNSET
37
38
 
39
+ data_number: Annotated[
40
+ OptionalNullable[str], pydantic.Field(alias="DataNumber")
41
+ ] = UNSET
42
+
38
43
  @model_serializer(mode="wrap")
39
44
  def serialize_model(self, handler):
40
45
  optional_fields = set(
41
- ["DataProviderId", "TDID", "ErrorCode", "Message", "ItemNumber"]
46
+ [
47
+ "DataProviderId",
48
+ "TDID",
49
+ "ErrorCode",
50
+ "Message",
51
+ "ItemNumber",
52
+ "DataNumber",
53
+ ]
54
+ )
55
+ nullable_fields = set(
56
+ ["DataProviderId", "TDID", "Message", "ItemNumber", "DataNumber"]
42
57
  )
43
- nullable_fields = set(["DataProviderId", "TDID", "Message", "ItemNumber"])
44
58
  serialized = handler(self)
45
59
  m = {}
46
60