universal-mcp-applications 0.1.30__py3-none-any.whl → 0.1.36rc1__py3-none-any.whl
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.
Potentially problematic release.
This version of universal-mcp-applications might be problematic. Click here for more details.
- universal_mcp/applications/ahrefs/app.py +52 -198
- universal_mcp/applications/airtable/app.py +23 -122
- universal_mcp/applications/apollo/app.py +111 -464
- universal_mcp/applications/asana/app.py +417 -1567
- universal_mcp/applications/aws_s3/app.py +33 -100
- universal_mcp/applications/bill/app.py +546 -1957
- universal_mcp/applications/box/app.py +1068 -3981
- universal_mcp/applications/braze/app.py +364 -1430
- universal_mcp/applications/browser_use/app.py +2 -8
- universal_mcp/applications/cal_com_v2/app.py +207 -625
- universal_mcp/applications/calendly/app.py +61 -200
- universal_mcp/applications/canva/app.py +45 -110
- universal_mcp/applications/clickup/app.py +207 -674
- universal_mcp/applications/coda/app.py +146 -426
- universal_mcp/applications/confluence/app.py +310 -1098
- universal_mcp/applications/contentful/app.py +36 -151
- universal_mcp/applications/crustdata/app.py +28 -107
- universal_mcp/applications/dialpad/app.py +283 -756
- universal_mcp/applications/digitalocean/app.py +1766 -5777
- universal_mcp/applications/domain_checker/app.py +3 -54
- universal_mcp/applications/e2b/app.py +14 -64
- universal_mcp/applications/elevenlabs/app.py +9 -47
- universal_mcp/applications/exa/app.py +6 -17
- universal_mcp/applications/falai/app.py +23 -100
- universal_mcp/applications/figma/app.py +53 -137
- universal_mcp/applications/file_system/app.py +2 -13
- universal_mcp/applications/firecrawl/app.py +51 -152
- universal_mcp/applications/fireflies/app.py +59 -281
- universal_mcp/applications/fpl/app.py +91 -528
- universal_mcp/applications/fpl/utils/fixtures.py +15 -49
- universal_mcp/applications/fpl/utils/helper.py +25 -89
- universal_mcp/applications/fpl/utils/league_utils.py +20 -64
- universal_mcp/applications/ghost_content/app.py +52 -161
- universal_mcp/applications/github/app.py +19 -56
- universal_mcp/applications/gong/app.py +88 -248
- universal_mcp/applications/google_calendar/app.py +16 -68
- universal_mcp/applications/google_docs/app.py +88 -188
- universal_mcp/applications/google_drive/app.py +140 -462
- universal_mcp/applications/google_gemini/app.py +12 -64
- universal_mcp/applications/google_mail/app.py +28 -157
- universal_mcp/applications/google_searchconsole/app.py +15 -48
- universal_mcp/applications/google_sheet/app.py +101 -578
- universal_mcp/applications/google_sheet/helper.py +10 -37
- universal_mcp/applications/hashnode/app.py +57 -269
- universal_mcp/applications/heygen/app.py +44 -122
- universal_mcp/applications/http_tools/app.py +10 -32
- universal_mcp/applications/hubspot/api_segments/crm_api.py +460 -1573
- universal_mcp/applications/hubspot/api_segments/marketing_api.py +74 -262
- universal_mcp/applications/hubspot/app.py +23 -87
- universal_mcp/applications/jira/app.py +2071 -7986
- universal_mcp/applications/klaviyo/app.py +494 -1376
- universal_mcp/applications/linkedin/README.md +9 -2
- universal_mcp/applications/linkedin/app.py +392 -212
- universal_mcp/applications/mailchimp/app.py +450 -1605
- universal_mcp/applications/markitdown/app.py +8 -20
- universal_mcp/applications/miro/app.py +217 -699
- universal_mcp/applications/ms_teams/app.py +64 -186
- universal_mcp/applications/neon/app.py +86 -192
- universal_mcp/applications/notion/app.py +21 -36
- universal_mcp/applications/onedrive/app.py +14 -36
- universal_mcp/applications/openai/app.py +42 -165
- universal_mcp/applications/outlook/app.py +16 -76
- universal_mcp/applications/perplexity/app.py +4 -19
- universal_mcp/applications/pipedrive/app.py +832 -3142
- universal_mcp/applications/posthog/app.py +163 -432
- universal_mcp/applications/reddit/app.py +40 -139
- universal_mcp/applications/resend/app.py +41 -107
- universal_mcp/applications/retell/app.py +14 -41
- universal_mcp/applications/rocketlane/app.py +221 -934
- universal_mcp/applications/scraper/README.md +7 -4
- universal_mcp/applications/scraper/app.py +216 -102
- universal_mcp/applications/semanticscholar/app.py +22 -64
- universal_mcp/applications/semrush/app.py +43 -77
- universal_mcp/applications/sendgrid/app.py +512 -1262
- universal_mcp/applications/sentry/app.py +271 -906
- universal_mcp/applications/serpapi/app.py +40 -143
- universal_mcp/applications/sharepoint/app.py +15 -37
- universal_mcp/applications/shopify/app.py +1551 -4287
- universal_mcp/applications/shortcut/app.py +155 -417
- universal_mcp/applications/slack/app.py +50 -101
- universal_mcp/applications/spotify/app.py +126 -325
- universal_mcp/applications/supabase/app.py +104 -213
- universal_mcp/applications/tavily/app.py +1 -1
- universal_mcp/applications/trello/app.py +693 -2656
- universal_mcp/applications/twilio/app.py +14 -50
- universal_mcp/applications/twitter/api_segments/compliance_api.py +4 -14
- universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +6 -18
- universal_mcp/applications/twitter/api_segments/likes_api.py +1 -3
- universal_mcp/applications/twitter/api_segments/lists_api.py +5 -15
- universal_mcp/applications/twitter/api_segments/trends_api.py +1 -3
- universal_mcp/applications/twitter/api_segments/tweets_api.py +9 -31
- universal_mcp/applications/twitter/api_segments/usage_api.py +1 -5
- universal_mcp/applications/twitter/api_segments/users_api.py +14 -42
- universal_mcp/applications/whatsapp/app.py +35 -186
- universal_mcp/applications/whatsapp/audio.py +2 -6
- universal_mcp/applications/whatsapp/whatsapp.py +17 -51
- universal_mcp/applications/whatsapp_business/app.py +70 -283
- universal_mcp/applications/wrike/app.py +45 -118
- universal_mcp/applications/yahoo_finance/app.py +19 -65
- universal_mcp/applications/youtube/app.py +75 -261
- universal_mcp/applications/zenquotes/app.py +2 -2
- {universal_mcp_applications-0.1.30.dist-info → universal_mcp_applications-0.1.36rc1.dist-info}/METADATA +2 -2
- {universal_mcp_applications-0.1.30.dist-info → universal_mcp_applications-0.1.36rc1.dist-info}/RECORD +105 -105
- {universal_mcp_applications-0.1.30.dist-info → universal_mcp_applications-0.1.36rc1.dist-info}/WHEEL +0 -0
- {universal_mcp_applications-0.1.30.dist-info → universal_mcp_applications-0.1.36rc1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
from typing import Any
|
|
2
|
-
|
|
3
2
|
from universal_mcp.applications.application import APIApplication
|
|
4
3
|
from universal_mcp.integrations import Integration
|
|
5
4
|
|
|
@@ -9,7 +8,7 @@ class BrazeApp(APIApplication):
|
|
|
9
8
|
super().__init__(name="braze", integration=integration, **kwargs)
|
|
10
9
|
self.base_url = "https://rest.iad-01.braze.com"
|
|
11
10
|
|
|
12
|
-
def update_email_template(
|
|
11
|
+
async def update_email_template(
|
|
13
12
|
self,
|
|
14
13
|
email_template_id: str | None = None,
|
|
15
14
|
template_name: str | None = None,
|
|
@@ -51,30 +50,19 @@ class BrazeApp(APIApplication):
|
|
|
51
50
|
"preheader": preheader,
|
|
52
51
|
"tags": tags,
|
|
53
52
|
}
|
|
54
|
-
request_body_data = {
|
|
55
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
56
|
-
}
|
|
53
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
57
54
|
url = f"{self.base_url}/templates/email/update"
|
|
58
55
|
query_params = {}
|
|
59
|
-
response = self._post(
|
|
60
|
-
url,
|
|
61
|
-
data=request_body_data,
|
|
62
|
-
params=query_params,
|
|
63
|
-
content_type="application/json",
|
|
64
|
-
)
|
|
56
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
65
57
|
response.raise_for_status()
|
|
66
|
-
if (
|
|
67
|
-
response.status_code == 204
|
|
68
|
-
or not response.content
|
|
69
|
-
or not response.text.strip()
|
|
70
|
-
):
|
|
58
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
71
59
|
return None
|
|
72
60
|
try:
|
|
73
61
|
return response.json()
|
|
74
62
|
except ValueError:
|
|
75
63
|
return None
|
|
76
64
|
|
|
77
|
-
def track_user_activity(
|
|
65
|
+
async def track_user_activity(
|
|
78
66
|
self,
|
|
79
67
|
attributes: list[dict[str, Any]] | None = None,
|
|
80
68
|
events: list[dict[str, Any]] | None = None,
|
|
@@ -99,35 +87,20 @@ class BrazeApp(APIApplication):
|
|
|
99
87
|
User Data
|
|
100
88
|
"""
|
|
101
89
|
request_body_data = None
|
|
102
|
-
request_body_data = {
|
|
103
|
-
|
|
104
|
-
"events": events,
|
|
105
|
-
"purchases": purchases,
|
|
106
|
-
}
|
|
107
|
-
request_body_data = {
|
|
108
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
109
|
-
}
|
|
90
|
+
request_body_data = {"attributes": attributes, "events": events, "purchases": purchases}
|
|
91
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
110
92
|
url = f"{self.base_url}/users/track"
|
|
111
93
|
query_params = {}
|
|
112
|
-
response = self._post(
|
|
113
|
-
url,
|
|
114
|
-
data=request_body_data,
|
|
115
|
-
params=query_params,
|
|
116
|
-
content_type="application/json",
|
|
117
|
-
)
|
|
94
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
118
95
|
response.raise_for_status()
|
|
119
|
-
if (
|
|
120
|
-
response.status_code == 204
|
|
121
|
-
or not response.content
|
|
122
|
-
or not response.text.strip()
|
|
123
|
-
):
|
|
96
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
124
97
|
return None
|
|
125
98
|
try:
|
|
126
99
|
return response.json()
|
|
127
100
|
except ValueError:
|
|
128
101
|
return None
|
|
129
102
|
|
|
130
|
-
def delete_catalog_by_name(self, catalog_name: str) -> dict[str, Any]:
|
|
103
|
+
async def delete_catalog_by_name(self, catalog_name: str) -> dict[str, Any]:
|
|
131
104
|
"""
|
|
132
105
|
Delete Catalog
|
|
133
106
|
|
|
@@ -150,18 +123,14 @@ class BrazeApp(APIApplication):
|
|
|
150
123
|
query_params = {}
|
|
151
124
|
response = self._delete(url, params=query_params)
|
|
152
125
|
response.raise_for_status()
|
|
153
|
-
if (
|
|
154
|
-
response.status_code == 204
|
|
155
|
-
or not response.content
|
|
156
|
-
or not response.text.strip()
|
|
157
|
-
):
|
|
126
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
158
127
|
return None
|
|
159
128
|
try:
|
|
160
129
|
return response.json()
|
|
161
130
|
except ValueError:
|
|
162
131
|
return None
|
|
163
132
|
|
|
164
|
-
def list_catalogs(self) -> dict[str, Any]:
|
|
133
|
+
async def list_catalogs(self) -> dict[str, Any]:
|
|
165
134
|
"""
|
|
166
135
|
List Catalogs
|
|
167
136
|
|
|
@@ -179,20 +148,14 @@ class BrazeApp(APIApplication):
|
|
|
179
148
|
query_params = {}
|
|
180
149
|
response = self._get(url, params=query_params)
|
|
181
150
|
response.raise_for_status()
|
|
182
|
-
if (
|
|
183
|
-
response.status_code == 204
|
|
184
|
-
or not response.content
|
|
185
|
-
or not response.text.strip()
|
|
186
|
-
):
|
|
151
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
187
152
|
return None
|
|
188
153
|
try:
|
|
189
154
|
return response.json()
|
|
190
155
|
except ValueError:
|
|
191
156
|
return None
|
|
192
157
|
|
|
193
|
-
def create_catalog(
|
|
194
|
-
self, catalogs: list[dict[str, Any]] | None = None
|
|
195
|
-
) -> dict[str, Any]:
|
|
158
|
+
async def create_catalog(self, catalogs: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
196
159
|
"""
|
|
197
160
|
Create Catalog
|
|
198
161
|
|
|
@@ -210,33 +173,20 @@ class BrazeApp(APIApplication):
|
|
|
210
173
|
Catalogs > Catalog Management > Synchronous, important
|
|
211
174
|
"""
|
|
212
175
|
request_body_data = None
|
|
213
|
-
request_body_data = {
|
|
214
|
-
|
|
215
|
-
}
|
|
216
|
-
request_body_data = {
|
|
217
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
218
|
-
}
|
|
176
|
+
request_body_data = {"catalogs": catalogs}
|
|
177
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
219
178
|
url = f"{self.base_url}/catalogs"
|
|
220
179
|
query_params = {}
|
|
221
|
-
response = self._post(
|
|
222
|
-
url,
|
|
223
|
-
data=request_body_data,
|
|
224
|
-
params=query_params,
|
|
225
|
-
content_type="application/json",
|
|
226
|
-
)
|
|
180
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
227
181
|
response.raise_for_status()
|
|
228
|
-
if (
|
|
229
|
-
response.status_code == 204
|
|
230
|
-
or not response.content
|
|
231
|
-
or not response.text.strip()
|
|
232
|
-
):
|
|
182
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
233
183
|
return None
|
|
234
184
|
try:
|
|
235
185
|
return response.json()
|
|
236
186
|
except ValueError:
|
|
237
187
|
return None
|
|
238
188
|
|
|
239
|
-
def delete_catalog_item(self, catalog_name: str) -> dict[str, Any]:
|
|
189
|
+
async def delete_catalog_item(self, catalog_name: str) -> dict[str, Any]:
|
|
240
190
|
"""
|
|
241
191
|
Delete Multiple Catalog Items
|
|
242
192
|
|
|
@@ -259,20 +209,14 @@ class BrazeApp(APIApplication):
|
|
|
259
209
|
query_params = {}
|
|
260
210
|
response = self._delete(url, params=query_params)
|
|
261
211
|
response.raise_for_status()
|
|
262
|
-
if (
|
|
263
|
-
response.status_code == 204
|
|
264
|
-
or not response.content
|
|
265
|
-
or not response.text.strip()
|
|
266
|
-
):
|
|
212
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
267
213
|
return None
|
|
268
214
|
try:
|
|
269
215
|
return response.json()
|
|
270
216
|
except ValueError:
|
|
271
217
|
return None
|
|
272
218
|
|
|
273
|
-
def edit_catalog_item(
|
|
274
|
-
self, catalog_name: str, items: list[dict[str, Any]] | None = None
|
|
275
|
-
) -> dict[str, Any]:
|
|
219
|
+
async def edit_catalog_item(self, catalog_name: str, items: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
276
220
|
"""
|
|
277
221
|
Edit Multiple Catalog Items
|
|
278
222
|
|
|
@@ -293,30 +237,20 @@ class BrazeApp(APIApplication):
|
|
|
293
237
|
if catalog_name is None:
|
|
294
238
|
raise ValueError("Missing required parameter 'catalog_name'.")
|
|
295
239
|
request_body_data = None
|
|
296
|
-
request_body_data = {
|
|
297
|
-
|
|
298
|
-
}
|
|
299
|
-
request_body_data = {
|
|
300
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
301
|
-
}
|
|
240
|
+
request_body_data = {"items": items}
|
|
241
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
302
242
|
url = f"{self.base_url}/catalogs/{catalog_name}/items"
|
|
303
243
|
query_params = {}
|
|
304
244
|
response = self._patch(url, data=request_body_data, params=query_params)
|
|
305
245
|
response.raise_for_status()
|
|
306
|
-
if (
|
|
307
|
-
response.status_code == 204
|
|
308
|
-
or not response.content
|
|
309
|
-
or not response.text.strip()
|
|
310
|
-
):
|
|
246
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
311
247
|
return None
|
|
312
248
|
try:
|
|
313
249
|
return response.json()
|
|
314
250
|
except ValueError:
|
|
315
251
|
return None
|
|
316
252
|
|
|
317
|
-
def create_catalog_item(
|
|
318
|
-
self, catalog_name: str, items: list[dict[str, Any]] | None = None
|
|
319
|
-
) -> dict[str, Any]:
|
|
253
|
+
async def create_catalog_item(self, catalog_name: str, items: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
320
254
|
"""
|
|
321
255
|
Create Multiple Catalog Items
|
|
322
256
|
|
|
@@ -337,35 +271,20 @@ class BrazeApp(APIApplication):
|
|
|
337
271
|
if catalog_name is None:
|
|
338
272
|
raise ValueError("Missing required parameter 'catalog_name'.")
|
|
339
273
|
request_body_data = None
|
|
340
|
-
request_body_data = {
|
|
341
|
-
|
|
342
|
-
}
|
|
343
|
-
request_body_data = {
|
|
344
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
345
|
-
}
|
|
274
|
+
request_body_data = {"items": items}
|
|
275
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
346
276
|
url = f"{self.base_url}/catalogs/{catalog_name}/items"
|
|
347
277
|
query_params = {}
|
|
348
|
-
response = self._post(
|
|
349
|
-
url,
|
|
350
|
-
data=request_body_data,
|
|
351
|
-
params=query_params,
|
|
352
|
-
content_type="application/json",
|
|
353
|
-
)
|
|
278
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
354
279
|
response.raise_for_status()
|
|
355
|
-
if (
|
|
356
|
-
response.status_code == 204
|
|
357
|
-
or not response.content
|
|
358
|
-
or not response.text.strip()
|
|
359
|
-
):
|
|
280
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
360
281
|
return None
|
|
361
282
|
try:
|
|
362
283
|
return response.json()
|
|
363
284
|
except ValueError:
|
|
364
285
|
return None
|
|
365
286
|
|
|
366
|
-
def update_catalog_items(
|
|
367
|
-
self, catalog_name: str, items: list[dict[str, Any]] | None = None
|
|
368
|
-
) -> dict[str, Any]:
|
|
287
|
+
async def update_catalog_items(self, catalog_name: str, items: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
369
288
|
"""
|
|
370
289
|
Update Catalog Item
|
|
371
290
|
|
|
@@ -386,33 +305,20 @@ class BrazeApp(APIApplication):
|
|
|
386
305
|
if catalog_name is None:
|
|
387
306
|
raise ValueError("Missing required parameter 'catalog_name'.")
|
|
388
307
|
request_body_data = None
|
|
389
|
-
request_body_data = {
|
|
390
|
-
|
|
391
|
-
}
|
|
392
|
-
request_body_data = {
|
|
393
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
394
|
-
}
|
|
308
|
+
request_body_data = {"items": items}
|
|
309
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
395
310
|
url = f"{self.base_url}/catalogs/{catalog_name}/items"
|
|
396
311
|
query_params = {}
|
|
397
|
-
response = self._put(
|
|
398
|
-
url,
|
|
399
|
-
data=request_body_data,
|
|
400
|
-
params=query_params,
|
|
401
|
-
content_type="application/json",
|
|
402
|
-
)
|
|
312
|
+
response = self._put(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
403
313
|
response.raise_for_status()
|
|
404
|
-
if (
|
|
405
|
-
response.status_code == 204
|
|
406
|
-
or not response.content
|
|
407
|
-
or not response.text.strip()
|
|
408
|
-
):
|
|
314
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
409
315
|
return None
|
|
410
316
|
try:
|
|
411
317
|
return response.json()
|
|
412
318
|
except ValueError:
|
|
413
319
|
return None
|
|
414
320
|
|
|
415
|
-
def list_catalog_items(self, catalog_name: str) -> dict[str, Any]:
|
|
321
|
+
async def list_catalog_items(self, catalog_name: str) -> dict[str, Any]:
|
|
416
322
|
"""
|
|
417
323
|
List Multiple Catalog Item Details
|
|
418
324
|
|
|
@@ -435,20 +341,14 @@ class BrazeApp(APIApplication):
|
|
|
435
341
|
query_params = {}
|
|
436
342
|
response = self._get(url, params=query_params)
|
|
437
343
|
response.raise_for_status()
|
|
438
|
-
if (
|
|
439
|
-
response.status_code == 204
|
|
440
|
-
or not response.content
|
|
441
|
-
or not response.text.strip()
|
|
442
|
-
):
|
|
344
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
443
345
|
return None
|
|
444
346
|
try:
|
|
445
347
|
return response.json()
|
|
446
348
|
except ValueError:
|
|
447
349
|
return None
|
|
448
350
|
|
|
449
|
-
def delete_catalog_item_by_id(
|
|
450
|
-
self, catalog_name: str, item_id: str
|
|
451
|
-
) -> dict[str, Any]:
|
|
351
|
+
async def delete_catalog_item_by_id(self, catalog_name: str, item_id: str) -> dict[str, Any]:
|
|
452
352
|
"""
|
|
453
353
|
Delete a Catalog Item
|
|
454
354
|
|
|
@@ -474,18 +374,14 @@ class BrazeApp(APIApplication):
|
|
|
474
374
|
query_params = {}
|
|
475
375
|
response = self._delete(url, params=query_params)
|
|
476
376
|
response.raise_for_status()
|
|
477
|
-
if (
|
|
478
|
-
response.status_code == 204
|
|
479
|
-
or not response.content
|
|
480
|
-
or not response.text.strip()
|
|
481
|
-
):
|
|
377
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
482
378
|
return None
|
|
483
379
|
try:
|
|
484
380
|
return response.json()
|
|
485
381
|
except ValueError:
|
|
486
382
|
return None
|
|
487
383
|
|
|
488
|
-
def get_item_detail(self, catalog_name: str, item_id: str) -> dict[str, Any]:
|
|
384
|
+
async def get_item_detail(self, catalog_name: str, item_id: str) -> dict[str, Any]:
|
|
489
385
|
"""
|
|
490
386
|
List Catalog Item Details
|
|
491
387
|
|
|
@@ -511,23 +407,14 @@ class BrazeApp(APIApplication):
|
|
|
511
407
|
query_params = {}
|
|
512
408
|
response = self._get(url, params=query_params)
|
|
513
409
|
response.raise_for_status()
|
|
514
|
-
if (
|
|
515
|
-
response.status_code == 204
|
|
516
|
-
or not response.content
|
|
517
|
-
or not response.text.strip()
|
|
518
|
-
):
|
|
410
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
519
411
|
return None
|
|
520
412
|
try:
|
|
521
413
|
return response.json()
|
|
522
414
|
except ValueError:
|
|
523
415
|
return None
|
|
524
416
|
|
|
525
|
-
def update_catalog_item_by_id(
|
|
526
|
-
self,
|
|
527
|
-
catalog_name: str,
|
|
528
|
-
item_id: str,
|
|
529
|
-
items: list[dict[str, Any]] | None = None,
|
|
530
|
-
) -> dict[str, Any]:
|
|
417
|
+
async def update_catalog_item_by_id(self, catalog_name: str, item_id: str, items: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
531
418
|
"""
|
|
532
419
|
Edit Catalog Items
|
|
533
420
|
|
|
@@ -551,33 +438,20 @@ class BrazeApp(APIApplication):
|
|
|
551
438
|
if item_id is None:
|
|
552
439
|
raise ValueError("Missing required parameter 'item_id'.")
|
|
553
440
|
request_body_data = None
|
|
554
|
-
request_body_data = {
|
|
555
|
-
|
|
556
|
-
}
|
|
557
|
-
request_body_data = {
|
|
558
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
559
|
-
}
|
|
441
|
+
request_body_data = {"items": items}
|
|
442
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
560
443
|
url = f"{self.base_url}/catalogs/{catalog_name}/items/{item_id}"
|
|
561
444
|
query_params = {}
|
|
562
445
|
response = self._patch(url, data=request_body_data, params=query_params)
|
|
563
446
|
response.raise_for_status()
|
|
564
|
-
if (
|
|
565
|
-
response.status_code == 204
|
|
566
|
-
or not response.content
|
|
567
|
-
or not response.text.strip()
|
|
568
|
-
):
|
|
447
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
569
448
|
return None
|
|
570
449
|
try:
|
|
571
450
|
return response.json()
|
|
572
451
|
except ValueError:
|
|
573
452
|
return None
|
|
574
453
|
|
|
575
|
-
def add_catalog_item_by_id(
|
|
576
|
-
self,
|
|
577
|
-
catalog_name: str,
|
|
578
|
-
item_id: str,
|
|
579
|
-
items: list[dict[str, Any]] | None = None,
|
|
580
|
-
) -> dict[str, Any]:
|
|
454
|
+
async def add_catalog_item_by_id(self, catalog_name: str, item_id: str, items: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
581
455
|
"""
|
|
582
456
|
Create Catalog Item
|
|
583
457
|
|
|
@@ -601,38 +475,20 @@ class BrazeApp(APIApplication):
|
|
|
601
475
|
if item_id is None:
|
|
602
476
|
raise ValueError("Missing required parameter 'item_id'.")
|
|
603
477
|
request_body_data = None
|
|
604
|
-
request_body_data = {
|
|
605
|
-
|
|
606
|
-
}
|
|
607
|
-
request_body_data = {
|
|
608
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
609
|
-
}
|
|
478
|
+
request_body_data = {"items": items}
|
|
479
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
610
480
|
url = f"{self.base_url}/catalogs/{catalog_name}/items/{item_id}"
|
|
611
481
|
query_params = {}
|
|
612
|
-
response = self._post(
|
|
613
|
-
url,
|
|
614
|
-
data=request_body_data,
|
|
615
|
-
params=query_params,
|
|
616
|
-
content_type="application/json",
|
|
617
|
-
)
|
|
482
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
618
483
|
response.raise_for_status()
|
|
619
|
-
if (
|
|
620
|
-
response.status_code == 204
|
|
621
|
-
or not response.content
|
|
622
|
-
or not response.text.strip()
|
|
623
|
-
):
|
|
484
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
624
485
|
return None
|
|
625
486
|
try:
|
|
626
487
|
return response.json()
|
|
627
488
|
except ValueError:
|
|
628
489
|
return None
|
|
629
490
|
|
|
630
|
-
def update_catalog_item(
|
|
631
|
-
self,
|
|
632
|
-
catalog_name: str,
|
|
633
|
-
item_id: str,
|
|
634
|
-
items: list[dict[str, Any]] | None = None,
|
|
635
|
-
) -> dict[str, Any]:
|
|
491
|
+
async def update_catalog_item(self, catalog_name: str, item_id: str, items: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
636
492
|
"""
|
|
637
493
|
Update Catalog Item
|
|
638
494
|
|
|
@@ -656,33 +512,20 @@ class BrazeApp(APIApplication):
|
|
|
656
512
|
if item_id is None:
|
|
657
513
|
raise ValueError("Missing required parameter 'item_id'.")
|
|
658
514
|
request_body_data = None
|
|
659
|
-
request_body_data = {
|
|
660
|
-
|
|
661
|
-
}
|
|
662
|
-
request_body_data = {
|
|
663
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
664
|
-
}
|
|
515
|
+
request_body_data = {"items": items}
|
|
516
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
665
517
|
url = f"{self.base_url}/catalogs/{catalog_name}/items/{item_id}"
|
|
666
518
|
query_params = {}
|
|
667
|
-
response = self._put(
|
|
668
|
-
url,
|
|
669
|
-
data=request_body_data,
|
|
670
|
-
params=query_params,
|
|
671
|
-
content_type="application/json",
|
|
672
|
-
)
|
|
519
|
+
response = self._put(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
673
520
|
response.raise_for_status()
|
|
674
|
-
if (
|
|
675
|
-
response.status_code == 204
|
|
676
|
-
or not response.content
|
|
677
|
-
or not response.text.strip()
|
|
678
|
-
):
|
|
521
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
679
522
|
return None
|
|
680
523
|
try:
|
|
681
524
|
return response.json()
|
|
682
525
|
except ValueError:
|
|
683
526
|
return None
|
|
684
527
|
|
|
685
|
-
def list_hard_bounces(
|
|
528
|
+
async def list_hard_bounces(
|
|
686
529
|
self,
|
|
687
530
|
start_date: str | None = None,
|
|
688
531
|
end_date: str | None = None,
|
|
@@ -713,29 +556,19 @@ class BrazeApp(APIApplication):
|
|
|
713
556
|
url = f"{self.base_url}/email/hard_bounces"
|
|
714
557
|
query_params = {
|
|
715
558
|
k: v
|
|
716
|
-
for k, v in [
|
|
717
|
-
("start_date", start_date),
|
|
718
|
-
("end_date", end_date),
|
|
719
|
-
("limit", limit),
|
|
720
|
-
("offset", offset),
|
|
721
|
-
("email", email),
|
|
722
|
-
]
|
|
559
|
+
for k, v in [("start_date", start_date), ("end_date", end_date), ("limit", limit), ("offset", offset), ("email", email)]
|
|
723
560
|
if v is not None
|
|
724
561
|
}
|
|
725
562
|
response = self._get(url, params=query_params)
|
|
726
563
|
response.raise_for_status()
|
|
727
|
-
if (
|
|
728
|
-
response.status_code == 204
|
|
729
|
-
or not response.content
|
|
730
|
-
or not response.text.strip()
|
|
731
|
-
):
|
|
564
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
732
565
|
return None
|
|
733
566
|
try:
|
|
734
567
|
return response.json()
|
|
735
568
|
except ValueError:
|
|
736
569
|
return None
|
|
737
570
|
|
|
738
|
-
def list_unsubscribes(
|
|
571
|
+
async def list_unsubscribes(
|
|
739
572
|
self,
|
|
740
573
|
start_date: str | None = None,
|
|
741
574
|
end_date: str | None = None,
|
|
@@ -780,20 +613,14 @@ class BrazeApp(APIApplication):
|
|
|
780
613
|
}
|
|
781
614
|
response = self._get(url, params=query_params)
|
|
782
615
|
response.raise_for_status()
|
|
783
|
-
if (
|
|
784
|
-
response.status_code == 204
|
|
785
|
-
or not response.content
|
|
786
|
-
or not response.text.strip()
|
|
787
|
-
):
|
|
616
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
788
617
|
return None
|
|
789
618
|
try:
|
|
790
619
|
return response.json()
|
|
791
620
|
except ValueError:
|
|
792
621
|
return None
|
|
793
622
|
|
|
794
|
-
def post_email_status(
|
|
795
|
-
self, email: str | None = None, subscription_state: str | None = None
|
|
796
|
-
) -> dict[str, Any]:
|
|
623
|
+
async def post_email_status(self, email: str | None = None, subscription_state: str | None = None) -> dict[str, Any]:
|
|
797
624
|
"""
|
|
798
625
|
Change Email Subscription Status
|
|
799
626
|
|
|
@@ -812,34 +639,20 @@ class BrazeApp(APIApplication):
|
|
|
812
639
|
Email Lists & Addresses
|
|
813
640
|
"""
|
|
814
641
|
request_body_data = None
|
|
815
|
-
request_body_data = {
|
|
816
|
-
|
|
817
|
-
"subscription_state": subscription_state,
|
|
818
|
-
}
|
|
819
|
-
request_body_data = {
|
|
820
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
821
|
-
}
|
|
642
|
+
request_body_data = {"email": email, "subscription_state": subscription_state}
|
|
643
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
822
644
|
url = f"{self.base_url}/email/status"
|
|
823
645
|
query_params = {}
|
|
824
|
-
response = self._post(
|
|
825
|
-
url,
|
|
826
|
-
data=request_body_data,
|
|
827
|
-
params=query_params,
|
|
828
|
-
content_type="application/json",
|
|
829
|
-
)
|
|
646
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
830
647
|
response.raise_for_status()
|
|
831
|
-
if (
|
|
832
|
-
response.status_code == 204
|
|
833
|
-
or not response.content
|
|
834
|
-
or not response.text.strip()
|
|
835
|
-
):
|
|
648
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
836
649
|
return None
|
|
837
650
|
try:
|
|
838
651
|
return response.json()
|
|
839
652
|
except ValueError:
|
|
840
653
|
return None
|
|
841
654
|
|
|
842
|
-
def remove_bounced_email(self, email: str | None = None) -> dict[str, Any]:
|
|
655
|
+
async def remove_bounced_email(self, email: str | None = None) -> dict[str, Any]:
|
|
843
656
|
"""
|
|
844
657
|
Remove Hard Bounced Emails
|
|
845
658
|
|
|
@@ -857,33 +670,20 @@ class BrazeApp(APIApplication):
|
|
|
857
670
|
Email Lists & Addresses
|
|
858
671
|
"""
|
|
859
672
|
request_body_data = None
|
|
860
|
-
request_body_data = {
|
|
861
|
-
|
|
862
|
-
}
|
|
863
|
-
request_body_data = {
|
|
864
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
865
|
-
}
|
|
673
|
+
request_body_data = {"email": email}
|
|
674
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
866
675
|
url = f"{self.base_url}/email/bounce/remove"
|
|
867
676
|
query_params = {}
|
|
868
|
-
response = self._post(
|
|
869
|
-
url,
|
|
870
|
-
data=request_body_data,
|
|
871
|
-
params=query_params,
|
|
872
|
-
content_type="application/json",
|
|
873
|
-
)
|
|
677
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
874
678
|
response.raise_for_status()
|
|
875
|
-
if (
|
|
876
|
-
response.status_code == 204
|
|
877
|
-
or not response.content
|
|
878
|
-
or not response.text.strip()
|
|
879
|
-
):
|
|
679
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
880
680
|
return None
|
|
881
681
|
try:
|
|
882
682
|
return response.json()
|
|
883
683
|
except ValueError:
|
|
884
684
|
return None
|
|
885
685
|
|
|
886
|
-
def remove_email_spam(self, email: str | None = None) -> dict[str, Any]:
|
|
686
|
+
async def remove_email_spam(self, email: str | None = None) -> dict[str, Any]:
|
|
887
687
|
"""
|
|
888
688
|
Remove Email Addresses from Spam List
|
|
889
689
|
|
|
@@ -901,33 +701,20 @@ class BrazeApp(APIApplication):
|
|
|
901
701
|
Email Lists & Addresses
|
|
902
702
|
"""
|
|
903
703
|
request_body_data = None
|
|
904
|
-
request_body_data = {
|
|
905
|
-
|
|
906
|
-
}
|
|
907
|
-
request_body_data = {
|
|
908
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
909
|
-
}
|
|
704
|
+
request_body_data = {"email": email}
|
|
705
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
910
706
|
url = f"{self.base_url}/email/spam/remove"
|
|
911
707
|
query_params = {}
|
|
912
|
-
response = self._post(
|
|
913
|
-
url,
|
|
914
|
-
data=request_body_data,
|
|
915
|
-
params=query_params,
|
|
916
|
-
content_type="application/json",
|
|
917
|
-
)
|
|
708
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
918
709
|
response.raise_for_status()
|
|
919
|
-
if (
|
|
920
|
-
response.status_code == 204
|
|
921
|
-
or not response.content
|
|
922
|
-
or not response.text.strip()
|
|
923
|
-
):
|
|
710
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
924
711
|
return None
|
|
925
712
|
try:
|
|
926
713
|
return response.json()
|
|
927
714
|
except ValueError:
|
|
928
715
|
return None
|
|
929
716
|
|
|
930
|
-
def add_email_to_blocklist(self, email: list[str] | None = None) -> dict[str, Any]:
|
|
717
|
+
async def add_email_to_blocklist(self, email: list[str] | None = None) -> dict[str, Any]:
|
|
931
718
|
"""
|
|
932
719
|
Blocklist Email Addresses
|
|
933
720
|
|
|
@@ -945,33 +732,20 @@ class BrazeApp(APIApplication):
|
|
|
945
732
|
Email Lists & Addresses
|
|
946
733
|
"""
|
|
947
734
|
request_body_data = None
|
|
948
|
-
request_body_data = {
|
|
949
|
-
|
|
950
|
-
}
|
|
951
|
-
request_body_data = {
|
|
952
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
953
|
-
}
|
|
735
|
+
request_body_data = {"email": email}
|
|
736
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
954
737
|
url = f"{self.base_url}/email/blocklist"
|
|
955
738
|
query_params = {}
|
|
956
|
-
response = self._post(
|
|
957
|
-
url,
|
|
958
|
-
data=request_body_data,
|
|
959
|
-
params=query_params,
|
|
960
|
-
content_type="application/json",
|
|
961
|
-
)
|
|
739
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
962
740
|
response.raise_for_status()
|
|
963
|
-
if (
|
|
964
|
-
response.status_code == 204
|
|
965
|
-
or not response.content
|
|
966
|
-
or not response.text.strip()
|
|
967
|
-
):
|
|
741
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
968
742
|
return None
|
|
969
743
|
try:
|
|
970
744
|
return response.json()
|
|
971
745
|
except ValueError:
|
|
972
746
|
return None
|
|
973
747
|
|
|
974
|
-
def add_to_blacklist(self, email: list[str] | None = None) -> dict[str, Any]:
|
|
748
|
+
async def add_to_blacklist(self, email: list[str] | None = None) -> dict[str, Any]:
|
|
975
749
|
"""
|
|
976
750
|
Blacklist Email Addresses
|
|
977
751
|
|
|
@@ -989,37 +763,21 @@ class BrazeApp(APIApplication):
|
|
|
989
763
|
Email Lists & Addresses
|
|
990
764
|
"""
|
|
991
765
|
request_body_data = None
|
|
992
|
-
request_body_data = {
|
|
993
|
-
|
|
994
|
-
}
|
|
995
|
-
request_body_data = {
|
|
996
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
997
|
-
}
|
|
766
|
+
request_body_data = {"email": email}
|
|
767
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
998
768
|
url = f"{self.base_url}/email/blacklist"
|
|
999
769
|
query_params = {}
|
|
1000
|
-
response = self._post(
|
|
1001
|
-
url,
|
|
1002
|
-
data=request_body_data,
|
|
1003
|
-
params=query_params,
|
|
1004
|
-
content_type="application/json",
|
|
1005
|
-
)
|
|
770
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
1006
771
|
response.raise_for_status()
|
|
1007
|
-
if (
|
|
1008
|
-
response.status_code == 204
|
|
1009
|
-
or not response.content
|
|
1010
|
-
or not response.text.strip()
|
|
1011
|
-
):
|
|
772
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1012
773
|
return None
|
|
1013
774
|
try:
|
|
1014
775
|
return response.json()
|
|
1015
776
|
except ValueError:
|
|
1016
777
|
return None
|
|
1017
778
|
|
|
1018
|
-
def get_campaign_data_series(
|
|
1019
|
-
self,
|
|
1020
|
-
campaign_id: str | None = None,
|
|
1021
|
-
length: int | None = None,
|
|
1022
|
-
ending_at: str | None = None,
|
|
779
|
+
async def get_campaign_data_series(
|
|
780
|
+
self, campaign_id: str | None = None, length: int | None = None, ending_at: str | None = None
|
|
1023
781
|
) -> dict[str, Any]:
|
|
1024
782
|
"""
|
|
1025
783
|
Export Campaign Analytics
|
|
@@ -1040,29 +798,17 @@ class BrazeApp(APIApplication):
|
|
|
1040
798
|
Export > Campaign
|
|
1041
799
|
"""
|
|
1042
800
|
url = f"{self.base_url}/campaigns/data_series"
|
|
1043
|
-
query_params = {
|
|
1044
|
-
k: v
|
|
1045
|
-
for k, v in [
|
|
1046
|
-
("campaign_id", campaign_id),
|
|
1047
|
-
("length", length),
|
|
1048
|
-
("ending_at", ending_at),
|
|
1049
|
-
]
|
|
1050
|
-
if v is not None
|
|
1051
|
-
}
|
|
801
|
+
query_params = {k: v for k, v in [("campaign_id", campaign_id), ("length", length), ("ending_at", ending_at)] if v is not None}
|
|
1052
802
|
response = self._get(url, params=query_params)
|
|
1053
803
|
response.raise_for_status()
|
|
1054
|
-
if (
|
|
1055
|
-
response.status_code == 204
|
|
1056
|
-
or not response.content
|
|
1057
|
-
or not response.text.strip()
|
|
1058
|
-
):
|
|
804
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1059
805
|
return None
|
|
1060
806
|
try:
|
|
1061
807
|
return response.json()
|
|
1062
808
|
except ValueError:
|
|
1063
809
|
return None
|
|
1064
810
|
|
|
1065
|
-
def get_campaign_details(self, campaign_id: str | None = None) -> dict[str, Any]:
|
|
811
|
+
async def get_campaign_details(self, campaign_id: str | None = None) -> dict[str, Any]:
|
|
1066
812
|
"""
|
|
1067
813
|
Export Campaign Details
|
|
1068
814
|
|
|
@@ -1080,23 +826,17 @@ class BrazeApp(APIApplication):
|
|
|
1080
826
|
Export > Campaign
|
|
1081
827
|
"""
|
|
1082
828
|
url = f"{self.base_url}/campaigns/details"
|
|
1083
|
-
query_params = {
|
|
1084
|
-
k: v for k, v in [("campaign_id", campaign_id)] if v is not None
|
|
1085
|
-
}
|
|
829
|
+
query_params = {k: v for k, v in [("campaign_id", campaign_id)] if v is not None}
|
|
1086
830
|
response = self._get(url, params=query_params)
|
|
1087
831
|
response.raise_for_status()
|
|
1088
|
-
if (
|
|
1089
|
-
response.status_code == 204
|
|
1090
|
-
or not response.content
|
|
1091
|
-
or not response.text.strip()
|
|
1092
|
-
):
|
|
832
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1093
833
|
return None
|
|
1094
834
|
try:
|
|
1095
835
|
return response.json()
|
|
1096
836
|
except ValueError:
|
|
1097
837
|
return None
|
|
1098
838
|
|
|
1099
|
-
def list_campaigns(
|
|
839
|
+
async def list_campaigns(
|
|
1100
840
|
self,
|
|
1101
841
|
page: int | None = None,
|
|
1102
842
|
include_archived: bool | None = None,
|
|
@@ -1136,23 +876,15 @@ class BrazeApp(APIApplication):
|
|
|
1136
876
|
}
|
|
1137
877
|
response = self._get(url, params=query_params)
|
|
1138
878
|
response.raise_for_status()
|
|
1139
|
-
if (
|
|
1140
|
-
response.status_code == 204
|
|
1141
|
-
or not response.content
|
|
1142
|
-
or not response.text.strip()
|
|
1143
|
-
):
|
|
879
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1144
880
|
return None
|
|
1145
881
|
try:
|
|
1146
882
|
return response.json()
|
|
1147
883
|
except ValueError:
|
|
1148
884
|
return None
|
|
1149
885
|
|
|
1150
|
-
def get_send_data_series(
|
|
1151
|
-
self,
|
|
1152
|
-
campaign_id: str | None = None,
|
|
1153
|
-
send_id: str | None = None,
|
|
1154
|
-
length: int | None = None,
|
|
1155
|
-
ending_at: str | None = None,
|
|
886
|
+
async def get_send_data_series(
|
|
887
|
+
self, campaign_id: str | None = None, send_id: str | None = None, length: int | None = None, ending_at: str | None = None
|
|
1156
888
|
) -> dict[str, Any]:
|
|
1157
889
|
"""
|
|
1158
890
|
Export Send Analytics
|
|
@@ -1176,28 +908,19 @@ class BrazeApp(APIApplication):
|
|
|
1176
908
|
url = f"{self.base_url}/sends/data_series"
|
|
1177
909
|
query_params = {
|
|
1178
910
|
k: v
|
|
1179
|
-
for k, v in [
|
|
1180
|
-
("campaign_id", campaign_id),
|
|
1181
|
-
("send_id", send_id),
|
|
1182
|
-
("length", length),
|
|
1183
|
-
("ending_at", ending_at),
|
|
1184
|
-
]
|
|
911
|
+
for k, v in [("campaign_id", campaign_id), ("send_id", send_id), ("length", length), ("ending_at", ending_at)]
|
|
1185
912
|
if v is not None
|
|
1186
913
|
}
|
|
1187
914
|
response = self._get(url, params=query_params)
|
|
1188
915
|
response.raise_for_status()
|
|
1189
|
-
if (
|
|
1190
|
-
response.status_code == 204
|
|
1191
|
-
or not response.content
|
|
1192
|
-
or not response.text.strip()
|
|
1193
|
-
):
|
|
916
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1194
917
|
return None
|
|
1195
918
|
try:
|
|
1196
919
|
return response.json()
|
|
1197
920
|
except ValueError:
|
|
1198
921
|
return None
|
|
1199
922
|
|
|
1200
|
-
def get_canvas_data_series(
|
|
923
|
+
async def get_canvas_data_series(
|
|
1201
924
|
self,
|
|
1202
925
|
canvas_id: str | None = None,
|
|
1203
926
|
ending_at: str | None = None,
|
|
@@ -1245,18 +968,14 @@ class BrazeApp(APIApplication):
|
|
|
1245
968
|
}
|
|
1246
969
|
response = self._get(url, params=query_params)
|
|
1247
970
|
response.raise_for_status()
|
|
1248
|
-
if (
|
|
1249
|
-
response.status_code == 204
|
|
1250
|
-
or not response.content
|
|
1251
|
-
or not response.text.strip()
|
|
1252
|
-
):
|
|
971
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1253
972
|
return None
|
|
1254
973
|
try:
|
|
1255
974
|
return response.json()
|
|
1256
975
|
except ValueError:
|
|
1257
976
|
return None
|
|
1258
977
|
|
|
1259
|
-
def fetch_canvas_data_summary(
|
|
978
|
+
async def fetch_canvas_data_summary(
|
|
1260
979
|
self,
|
|
1261
980
|
canvas_id: str | None = None,
|
|
1262
981
|
ending_at: str | None = None,
|
|
@@ -1305,23 +1024,19 @@ class BrazeApp(APIApplication):
|
|
|
1305
1024
|
}
|
|
1306
1025
|
response = self._get(url, params=query_params)
|
|
1307
1026
|
response.raise_for_status()
|
|
1308
|
-
if (
|
|
1309
|
-
response.status_code == 204
|
|
1310
|
-
or not response.content
|
|
1311
|
-
or not response.text.strip()
|
|
1312
|
-
):
|
|
1027
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1313
1028
|
return None
|
|
1314
1029
|
try:
|
|
1315
1030
|
return response.json()
|
|
1316
1031
|
except ValueError:
|
|
1317
1032
|
return None
|
|
1318
1033
|
|
|
1319
|
-
def get_canvas_details(self, canvas_id: str | None = None) -> dict[str, Any]:
|
|
1034
|
+
async def get_canvas_details(self, canvas_id: str | None = None) -> dict[str, Any]:
|
|
1320
1035
|
"""
|
|
1321
1036
|
Export Canvas Details
|
|
1322
1037
|
|
|
1323
1038
|
Args:
|
|
1324
|
-
canvas_id (string): (Required) String See
|
|
1039
|
+
canvas_id (string): (Required) String See\xa0[Canvas API Identifier]( Example: '{{canvas_identifier}}'.
|
|
1325
1040
|
|
|
1326
1041
|
Returns:
|
|
1327
1042
|
dict[str, Any]: Successful response
|
|
@@ -1337,18 +1052,14 @@ class BrazeApp(APIApplication):
|
|
|
1337
1052
|
query_params = {k: v for k, v in [("canvas_id", canvas_id)] if v is not None}
|
|
1338
1053
|
response = self._get(url, params=query_params)
|
|
1339
1054
|
response.raise_for_status()
|
|
1340
|
-
if (
|
|
1341
|
-
response.status_code == 204
|
|
1342
|
-
or not response.content
|
|
1343
|
-
or not response.text.strip()
|
|
1344
|
-
):
|
|
1055
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1345
1056
|
return None
|
|
1346
1057
|
try:
|
|
1347
1058
|
return response.json()
|
|
1348
1059
|
except ValueError:
|
|
1349
1060
|
return None
|
|
1350
1061
|
|
|
1351
|
-
def list_canvas(
|
|
1062
|
+
async def list_canvas(
|
|
1352
1063
|
self,
|
|
1353
1064
|
page: int | None = None,
|
|
1354
1065
|
include_archived: bool | None = None,
|
|
@@ -1388,18 +1099,14 @@ class BrazeApp(APIApplication):
|
|
|
1388
1099
|
}
|
|
1389
1100
|
response = self._get(url, params=query_params)
|
|
1390
1101
|
response.raise_for_status()
|
|
1391
|
-
if (
|
|
1392
|
-
response.status_code == 204
|
|
1393
|
-
or not response.content
|
|
1394
|
-
or not response.text.strip()
|
|
1395
|
-
):
|
|
1102
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1396
1103
|
return None
|
|
1397
1104
|
try:
|
|
1398
1105
|
return response.json()
|
|
1399
1106
|
except ValueError:
|
|
1400
1107
|
return None
|
|
1401
1108
|
|
|
1402
|
-
def list_events(self, page: int | None = None) -> dict[str, Any]:
|
|
1109
|
+
async def list_events(self, page: int | None = None) -> dict[str, Any]:
|
|
1403
1110
|
"""
|
|
1404
1111
|
Export Custom Events List
|
|
1405
1112
|
|
|
@@ -1420,18 +1127,14 @@ class BrazeApp(APIApplication):
|
|
|
1420
1127
|
query_params = {k: v for k, v in [("page", page)] if v is not None}
|
|
1421
1128
|
response = self._get(url, params=query_params)
|
|
1422
1129
|
response.raise_for_status()
|
|
1423
|
-
if (
|
|
1424
|
-
response.status_code == 204
|
|
1425
|
-
or not response.content
|
|
1426
|
-
or not response.text.strip()
|
|
1427
|
-
):
|
|
1130
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1428
1131
|
return None
|
|
1429
1132
|
try:
|
|
1430
1133
|
return response.json()
|
|
1431
1134
|
except ValueError:
|
|
1432
1135
|
return None
|
|
1433
1136
|
|
|
1434
|
-
def fetch_event_series_data(
|
|
1137
|
+
async def fetch_event_series_data(
|
|
1435
1138
|
self,
|
|
1436
1139
|
event: str | None = None,
|
|
1437
1140
|
length: int | None = None,
|
|
@@ -1476,22 +1179,15 @@ class BrazeApp(APIApplication):
|
|
|
1476
1179
|
}
|
|
1477
1180
|
response = self._get(url, params=query_params)
|
|
1478
1181
|
response.raise_for_status()
|
|
1479
|
-
if (
|
|
1480
|
-
response.status_code == 204
|
|
1481
|
-
or not response.content
|
|
1482
|
-
or not response.text.strip()
|
|
1483
|
-
):
|
|
1182
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1484
1183
|
return None
|
|
1485
1184
|
try:
|
|
1486
1185
|
return response.json()
|
|
1487
1186
|
except ValueError:
|
|
1488
1187
|
return None
|
|
1489
1188
|
|
|
1490
|
-
def list_new_user_kpi_series(
|
|
1491
|
-
self,
|
|
1492
|
-
length: int | None = None,
|
|
1493
|
-
ending_at: str | None = None,
|
|
1494
|
-
app_id: str | None = None,
|
|
1189
|
+
async def list_new_user_kpi_series(
|
|
1190
|
+
self, length: int | None = None, ending_at: str | None = None, app_id: str | None = None
|
|
1495
1191
|
) -> dict[str, Any]:
|
|
1496
1192
|
"""
|
|
1497
1193
|
Export Daily New Users by Date
|
|
@@ -1512,33 +1208,18 @@ class BrazeApp(APIApplication):
|
|
|
1512
1208
|
Export > KPI
|
|
1513
1209
|
"""
|
|
1514
1210
|
url = f"{self.base_url}/kpi/new_users/data_series"
|
|
1515
|
-
query_params = {
|
|
1516
|
-
k: v
|
|
1517
|
-
for k, v in [
|
|
1518
|
-
("length", length),
|
|
1519
|
-
("ending_at", ending_at),
|
|
1520
|
-
("app_id", app_id),
|
|
1521
|
-
]
|
|
1522
|
-
if v is not None
|
|
1523
|
-
}
|
|
1211
|
+
query_params = {k: v for k, v in [("length", length), ("ending_at", ending_at), ("app_id", app_id)] if v is not None}
|
|
1524
1212
|
response = self._get(url, params=query_params)
|
|
1525
1213
|
response.raise_for_status()
|
|
1526
|
-
if (
|
|
1527
|
-
response.status_code == 204
|
|
1528
|
-
or not response.content
|
|
1529
|
-
or not response.text.strip()
|
|
1530
|
-
):
|
|
1214
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1531
1215
|
return None
|
|
1532
1216
|
try:
|
|
1533
1217
|
return response.json()
|
|
1534
1218
|
except ValueError:
|
|
1535
1219
|
return None
|
|
1536
1220
|
|
|
1537
|
-
def get_daily_active_users_series(
|
|
1538
|
-
self,
|
|
1539
|
-
length: int | None = None,
|
|
1540
|
-
ending_at: str | None = None,
|
|
1541
|
-
app_id: str | None = None,
|
|
1221
|
+
async def get_daily_active_users_series(
|
|
1222
|
+
self, length: int | None = None, ending_at: str | None = None, app_id: str | None = None
|
|
1542
1223
|
) -> dict[str, Any]:
|
|
1543
1224
|
"""
|
|
1544
1225
|
Export Daily Active Users by Date
|
|
@@ -1560,33 +1241,18 @@ class BrazeApp(APIApplication):
|
|
|
1560
1241
|
Export > KPI
|
|
1561
1242
|
"""
|
|
1562
1243
|
url = f"{self.base_url}/kpi/dau/data_series"
|
|
1563
|
-
query_params = {
|
|
1564
|
-
k: v
|
|
1565
|
-
for k, v in [
|
|
1566
|
-
("length", length),
|
|
1567
|
-
("ending_at", ending_at),
|
|
1568
|
-
("app_id", app_id),
|
|
1569
|
-
]
|
|
1570
|
-
if v is not None
|
|
1571
|
-
}
|
|
1244
|
+
query_params = {k: v for k, v in [("length", length), ("ending_at", ending_at), ("app_id", app_id)] if v is not None}
|
|
1572
1245
|
response = self._get(url, params=query_params)
|
|
1573
1246
|
response.raise_for_status()
|
|
1574
|
-
if (
|
|
1575
|
-
response.status_code == 204
|
|
1576
|
-
or not response.content
|
|
1577
|
-
or not response.text.strip()
|
|
1578
|
-
):
|
|
1247
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1579
1248
|
return None
|
|
1580
1249
|
try:
|
|
1581
1250
|
return response.json()
|
|
1582
1251
|
except ValueError:
|
|
1583
1252
|
return None
|
|
1584
1253
|
|
|
1585
|
-
def get_kpimau_data_series(
|
|
1586
|
-
self,
|
|
1587
|
-
length: int | None = None,
|
|
1588
|
-
ending_at: str | None = None,
|
|
1589
|
-
app_id: str | None = None,
|
|
1254
|
+
async def get_kpimau_data_series(
|
|
1255
|
+
self, length: int | None = None, ending_at: str | None = None, app_id: str | None = None
|
|
1590
1256
|
) -> dict[str, Any]:
|
|
1591
1257
|
"""
|
|
1592
1258
|
Export Monthly Active Users for Last 30 Days
|
|
@@ -1607,33 +1273,18 @@ class BrazeApp(APIApplication):
|
|
|
1607
1273
|
Export > KPI
|
|
1608
1274
|
"""
|
|
1609
1275
|
url = f"{self.base_url}/kpi/mau/data_series"
|
|
1610
|
-
query_params = {
|
|
1611
|
-
k: v
|
|
1612
|
-
for k, v in [
|
|
1613
|
-
("length", length),
|
|
1614
|
-
("ending_at", ending_at),
|
|
1615
|
-
("app_id", app_id),
|
|
1616
|
-
]
|
|
1617
|
-
if v is not None
|
|
1618
|
-
}
|
|
1276
|
+
query_params = {k: v for k, v in [("length", length), ("ending_at", ending_at), ("app_id", app_id)] if v is not None}
|
|
1619
1277
|
response = self._get(url, params=query_params)
|
|
1620
1278
|
response.raise_for_status()
|
|
1621
|
-
if (
|
|
1622
|
-
response.status_code == 204
|
|
1623
|
-
or not response.content
|
|
1624
|
-
or not response.text.strip()
|
|
1625
|
-
):
|
|
1279
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1626
1280
|
return None
|
|
1627
1281
|
try:
|
|
1628
1282
|
return response.json()
|
|
1629
1283
|
except ValueError:
|
|
1630
1284
|
return None
|
|
1631
1285
|
|
|
1632
|
-
def get_kpi_uninstalls_data_series(
|
|
1633
|
-
self,
|
|
1634
|
-
length: int | None = None,
|
|
1635
|
-
ending_at: str | None = None,
|
|
1636
|
-
app_id: str | None = None,
|
|
1286
|
+
async def get_kpi_uninstalls_data_series(
|
|
1287
|
+
self, length: int | None = None, ending_at: str | None = None, app_id: str | None = None
|
|
1637
1288
|
) -> dict[str, Any]:
|
|
1638
1289
|
"""
|
|
1639
1290
|
Export KPIs for Daily App Uninstalls by Date
|
|
@@ -1654,34 +1305,18 @@ class BrazeApp(APIApplication):
|
|
|
1654
1305
|
Export > KPI
|
|
1655
1306
|
"""
|
|
1656
1307
|
url = f"{self.base_url}/kpi/uninstalls/data_series"
|
|
1657
|
-
query_params = {
|
|
1658
|
-
k: v
|
|
1659
|
-
for k, v in [
|
|
1660
|
-
("length", length),
|
|
1661
|
-
("ending_at", ending_at),
|
|
1662
|
-
("app_id", app_id),
|
|
1663
|
-
]
|
|
1664
|
-
if v is not None
|
|
1665
|
-
}
|
|
1308
|
+
query_params = {k: v for k, v in [("length", length), ("ending_at", ending_at), ("app_id", app_id)] if v is not None}
|
|
1666
1309
|
response = self._get(url, params=query_params)
|
|
1667
1310
|
response.raise_for_status()
|
|
1668
|
-
if (
|
|
1669
|
-
response.status_code == 204
|
|
1670
|
-
or not response.content
|
|
1671
|
-
or not response.text.strip()
|
|
1672
|
-
):
|
|
1311
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1673
1312
|
return None
|
|
1674
1313
|
try:
|
|
1675
1314
|
return response.json()
|
|
1676
1315
|
except ValueError:
|
|
1677
1316
|
return None
|
|
1678
1317
|
|
|
1679
|
-
def get_feed_data_series(
|
|
1680
|
-
self,
|
|
1681
|
-
card_id: str | None = None,
|
|
1682
|
-
length: int | None = None,
|
|
1683
|
-
unit: str | None = None,
|
|
1684
|
-
ending_at: str | None = None,
|
|
1318
|
+
async def get_feed_data_series(
|
|
1319
|
+
self, card_id: str | None = None, length: int | None = None, unit: str | None = None, ending_at: str | None = None
|
|
1685
1320
|
) -> dict[str, Any]:
|
|
1686
1321
|
"""
|
|
1687
1322
|
Export News Feed Card Analytics
|
|
@@ -1704,29 +1339,18 @@ class BrazeApp(APIApplication):
|
|
|
1704
1339
|
"""
|
|
1705
1340
|
url = f"{self.base_url}/feed/data_series"
|
|
1706
1341
|
query_params = {
|
|
1707
|
-
k: v
|
|
1708
|
-
for k, v in [
|
|
1709
|
-
("card_id", card_id),
|
|
1710
|
-
("length", length),
|
|
1711
|
-
("unit", unit),
|
|
1712
|
-
("ending_at", ending_at),
|
|
1713
|
-
]
|
|
1714
|
-
if v is not None
|
|
1342
|
+
k: v for k, v in [("card_id", card_id), ("length", length), ("unit", unit), ("ending_at", ending_at)] if v is not None
|
|
1715
1343
|
}
|
|
1716
1344
|
response = self._get(url, params=query_params)
|
|
1717
1345
|
response.raise_for_status()
|
|
1718
|
-
if (
|
|
1719
|
-
response.status_code == 204
|
|
1720
|
-
or not response.content
|
|
1721
|
-
or not response.text.strip()
|
|
1722
|
-
):
|
|
1346
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1723
1347
|
return None
|
|
1724
1348
|
try:
|
|
1725
1349
|
return response.json()
|
|
1726
1350
|
except ValueError:
|
|
1727
1351
|
return None
|
|
1728
1352
|
|
|
1729
|
-
def get_feed_details(self, card_id: str | None = None) -> dict[str, Any]:
|
|
1353
|
+
async def get_feed_details(self, card_id: str | None = None) -> dict[str, Any]:
|
|
1730
1354
|
"""
|
|
1731
1355
|
Export News Feed Cards Details
|
|
1732
1356
|
|
|
@@ -1747,22 +1371,15 @@ class BrazeApp(APIApplication):
|
|
|
1747
1371
|
query_params = {k: v for k, v in [("card_id", card_id)] if v is not None}
|
|
1748
1372
|
response = self._get(url, params=query_params)
|
|
1749
1373
|
response.raise_for_status()
|
|
1750
|
-
if (
|
|
1751
|
-
response.status_code == 204
|
|
1752
|
-
or not response.content
|
|
1753
|
-
or not response.text.strip()
|
|
1754
|
-
):
|
|
1374
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1755
1375
|
return None
|
|
1756
1376
|
try:
|
|
1757
1377
|
return response.json()
|
|
1758
1378
|
except ValueError:
|
|
1759
1379
|
return None
|
|
1760
1380
|
|
|
1761
|
-
def list_feed(
|
|
1762
|
-
self,
|
|
1763
|
-
page: int | None = None,
|
|
1764
|
-
include_archived: bool | None = None,
|
|
1765
|
-
sort_direction: str | None = None,
|
|
1381
|
+
async def list_feed(
|
|
1382
|
+
self, page: int | None = None, include_archived: bool | None = None, sort_direction: str | None = None
|
|
1766
1383
|
) -> dict[str, Any]:
|
|
1767
1384
|
"""
|
|
1768
1385
|
Export News Feed Cards List
|
|
@@ -1785,28 +1402,18 @@ class BrazeApp(APIApplication):
|
|
|
1785
1402
|
"""
|
|
1786
1403
|
url = f"{self.base_url}/feed/list"
|
|
1787
1404
|
query_params = {
|
|
1788
|
-
k: v
|
|
1789
|
-
for k, v in [
|
|
1790
|
-
("page", page),
|
|
1791
|
-
("include_archived", include_archived),
|
|
1792
|
-
("sort_direction", sort_direction),
|
|
1793
|
-
]
|
|
1794
|
-
if v is not None
|
|
1405
|
+
k: v for k, v in [("page", page), ("include_archived", include_archived), ("sort_direction", sort_direction)] if v is not None
|
|
1795
1406
|
}
|
|
1796
1407
|
response = self._get(url, params=query_params)
|
|
1797
1408
|
response.raise_for_status()
|
|
1798
|
-
if (
|
|
1799
|
-
response.status_code == 204
|
|
1800
|
-
or not response.content
|
|
1801
|
-
or not response.text.strip()
|
|
1802
|
-
):
|
|
1409
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1803
1410
|
return None
|
|
1804
1411
|
try:
|
|
1805
1412
|
return response.json()
|
|
1806
1413
|
except ValueError:
|
|
1807
1414
|
return None
|
|
1808
1415
|
|
|
1809
|
-
def list_products(self, page: int | None = None) -> dict[str, Any]:
|
|
1416
|
+
async def list_products(self, page: int | None = None) -> dict[str, Any]:
|
|
1810
1417
|
"""
|
|
1811
1418
|
Export Product IDs
|
|
1812
1419
|
|
|
@@ -1827,18 +1434,14 @@ class BrazeApp(APIApplication):
|
|
|
1827
1434
|
query_params = {k: v for k, v in [("page", page)] if v is not None}
|
|
1828
1435
|
response = self._get(url, params=query_params)
|
|
1829
1436
|
response.raise_for_status()
|
|
1830
|
-
if (
|
|
1831
|
-
response.status_code == 204
|
|
1832
|
-
or not response.content
|
|
1833
|
-
or not response.text.strip()
|
|
1834
|
-
):
|
|
1437
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1835
1438
|
return None
|
|
1836
1439
|
try:
|
|
1837
1440
|
return response.json()
|
|
1838
1441
|
except ValueError:
|
|
1839
1442
|
return None
|
|
1840
1443
|
|
|
1841
|
-
def get_purchase_quantity_series(
|
|
1444
|
+
async def get_purchase_quantity_series(
|
|
1842
1445
|
self,
|
|
1843
1446
|
ending_at: str | None = None,
|
|
1844
1447
|
length: int | None = None,
|
|
@@ -1874,29 +1477,19 @@ class BrazeApp(APIApplication):
|
|
|
1874
1477
|
url = f"{self.base_url}/purchases/quantity_series"
|
|
1875
1478
|
query_params = {
|
|
1876
1479
|
k: v
|
|
1877
|
-
for k, v in [
|
|
1878
|
-
("ending_at", ending_at),
|
|
1879
|
-
("length", length),
|
|
1880
|
-
("unit", unit),
|
|
1881
|
-
("app_id", app_id),
|
|
1882
|
-
("product", product),
|
|
1883
|
-
]
|
|
1480
|
+
for k, v in [("ending_at", ending_at), ("length", length), ("unit", unit), ("app_id", app_id), ("product", product)]
|
|
1884
1481
|
if v is not None
|
|
1885
1482
|
}
|
|
1886
1483
|
response = self._get(url, params=query_params)
|
|
1887
1484
|
response.raise_for_status()
|
|
1888
|
-
if (
|
|
1889
|
-
response.status_code == 204
|
|
1890
|
-
or not response.content
|
|
1891
|
-
or not response.text.strip()
|
|
1892
|
-
):
|
|
1485
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1893
1486
|
return None
|
|
1894
1487
|
try:
|
|
1895
1488
|
return response.json()
|
|
1896
1489
|
except ValueError:
|
|
1897
1490
|
return None
|
|
1898
1491
|
|
|
1899
|
-
def get_purchases_revenue_series(
|
|
1492
|
+
async def get_purchases_revenue_series(
|
|
1900
1493
|
self,
|
|
1901
1494
|
ending_at: str | None = None,
|
|
1902
1495
|
length: int | None = None,
|
|
@@ -1932,31 +1525,19 @@ class BrazeApp(APIApplication):
|
|
|
1932
1525
|
url = f"{self.base_url}/purchases/revenue_series"
|
|
1933
1526
|
query_params = {
|
|
1934
1527
|
k: v
|
|
1935
|
-
for k, v in [
|
|
1936
|
-
("ending_at", ending_at),
|
|
1937
|
-
("length", length),
|
|
1938
|
-
("unit", unit),
|
|
1939
|
-
("app_id", app_id),
|
|
1940
|
-
("product", product),
|
|
1941
|
-
]
|
|
1528
|
+
for k, v in [("ending_at", ending_at), ("length", length), ("unit", unit), ("app_id", app_id), ("product", product)]
|
|
1942
1529
|
if v is not None
|
|
1943
1530
|
}
|
|
1944
1531
|
response = self._get(url, params=query_params)
|
|
1945
1532
|
response.raise_for_status()
|
|
1946
|
-
if (
|
|
1947
|
-
response.status_code == 204
|
|
1948
|
-
or not response.content
|
|
1949
|
-
or not response.text.strip()
|
|
1950
|
-
):
|
|
1533
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1951
1534
|
return None
|
|
1952
1535
|
try:
|
|
1953
1536
|
return response.json()
|
|
1954
1537
|
except ValueError:
|
|
1955
1538
|
return None
|
|
1956
1539
|
|
|
1957
|
-
def list_segments(
|
|
1958
|
-
self, page: int | None = None, sort_direction: str | None = None
|
|
1959
|
-
) -> dict[str, Any]:
|
|
1540
|
+
async def list_segments(self, page: int | None = None, sort_direction: str | None = None) -> dict[str, Any]:
|
|
1960
1541
|
"""
|
|
1961
1542
|
Export Segment List
|
|
1962
1543
|
|
|
@@ -1976,29 +1557,18 @@ class BrazeApp(APIApplication):
|
|
|
1976
1557
|
Export > Segment
|
|
1977
1558
|
"""
|
|
1978
1559
|
url = f"{self.base_url}/segments/list"
|
|
1979
|
-
query_params = {
|
|
1980
|
-
k: v
|
|
1981
|
-
for k, v in [("page", page), ("sort_direction", sort_direction)]
|
|
1982
|
-
if v is not None
|
|
1983
|
-
}
|
|
1560
|
+
query_params = {k: v for k, v in [("page", page), ("sort_direction", sort_direction)] if v is not None}
|
|
1984
1561
|
response = self._get(url, params=query_params)
|
|
1985
1562
|
response.raise_for_status()
|
|
1986
|
-
if (
|
|
1987
|
-
response.status_code == 204
|
|
1988
|
-
or not response.content
|
|
1989
|
-
or not response.text.strip()
|
|
1990
|
-
):
|
|
1563
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
1991
1564
|
return None
|
|
1992
1565
|
try:
|
|
1993
1566
|
return response.json()
|
|
1994
1567
|
except ValueError:
|
|
1995
1568
|
return None
|
|
1996
1569
|
|
|
1997
|
-
def get_segments_data_series(
|
|
1998
|
-
self,
|
|
1999
|
-
segment_id: str | None = None,
|
|
2000
|
-
length: int | None = None,
|
|
2001
|
-
ending_at: str | None = None,
|
|
1570
|
+
async def get_segments_data_series(
|
|
1571
|
+
self, segment_id: str | None = None, length: int | None = None, ending_at: str | None = None
|
|
2002
1572
|
) -> dict[str, Any]:
|
|
2003
1573
|
"""
|
|
2004
1574
|
Export Segment Analytics
|
|
@@ -2019,29 +1589,17 @@ class BrazeApp(APIApplication):
|
|
|
2019
1589
|
Export > Segment
|
|
2020
1590
|
"""
|
|
2021
1591
|
url = f"{self.base_url}/segments/data_series"
|
|
2022
|
-
query_params = {
|
|
2023
|
-
k: v
|
|
2024
|
-
for k, v in [
|
|
2025
|
-
("segment_id", segment_id),
|
|
2026
|
-
("length", length),
|
|
2027
|
-
("ending_at", ending_at),
|
|
2028
|
-
]
|
|
2029
|
-
if v is not None
|
|
2030
|
-
}
|
|
1592
|
+
query_params = {k: v for k, v in [("segment_id", segment_id), ("length", length), ("ending_at", ending_at)] if v is not None}
|
|
2031
1593
|
response = self._get(url, params=query_params)
|
|
2032
1594
|
response.raise_for_status()
|
|
2033
|
-
if (
|
|
2034
|
-
response.status_code == 204
|
|
2035
|
-
or not response.content
|
|
2036
|
-
or not response.text.strip()
|
|
2037
|
-
):
|
|
1595
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2038
1596
|
return None
|
|
2039
1597
|
try:
|
|
2040
1598
|
return response.json()
|
|
2041
1599
|
except ValueError:
|
|
2042
1600
|
return None
|
|
2043
1601
|
|
|
2044
|
-
def get_segment_details(self, segment_id: str | None = None) -> dict[str, Any]:
|
|
1602
|
+
async def get_segment_details(self, segment_id: str | None = None) -> dict[str, Any]:
|
|
2045
1603
|
"""
|
|
2046
1604
|
Export Segment Details
|
|
2047
1605
|
|
|
@@ -2062,18 +1620,14 @@ class BrazeApp(APIApplication):
|
|
|
2062
1620
|
query_params = {k: v for k, v in [("segment_id", segment_id)] if v is not None}
|
|
2063
1621
|
response = self._get(url, params=query_params)
|
|
2064
1622
|
response.raise_for_status()
|
|
2065
|
-
if (
|
|
2066
|
-
response.status_code == 204
|
|
2067
|
-
or not response.content
|
|
2068
|
-
or not response.text.strip()
|
|
2069
|
-
):
|
|
1623
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2070
1624
|
return None
|
|
2071
1625
|
try:
|
|
2072
1626
|
return response.json()
|
|
2073
1627
|
except ValueError:
|
|
2074
1628
|
return None
|
|
2075
1629
|
|
|
2076
|
-
def get_sessions_data_series(
|
|
1630
|
+
async def get_sessions_data_series(
|
|
2077
1631
|
self,
|
|
2078
1632
|
length: int | None = None,
|
|
2079
1633
|
unit: str | None = None,
|
|
@@ -2104,29 +1658,19 @@ class BrazeApp(APIApplication):
|
|
|
2104
1658
|
url = f"{self.base_url}/sessions/data_series"
|
|
2105
1659
|
query_params = {
|
|
2106
1660
|
k: v
|
|
2107
|
-
for k, v in [
|
|
2108
|
-
("length", length),
|
|
2109
|
-
("unit", unit),
|
|
2110
|
-
("ending_at", ending_at),
|
|
2111
|
-
("app_id", app_id),
|
|
2112
|
-
("segment_id", segment_id),
|
|
2113
|
-
]
|
|
1661
|
+
for k, v in [("length", length), ("unit", unit), ("ending_at", ending_at), ("app_id", app_id), ("segment_id", segment_id)]
|
|
2114
1662
|
if v is not None
|
|
2115
1663
|
}
|
|
2116
1664
|
response = self._get(url, params=query_params)
|
|
2117
1665
|
response.raise_for_status()
|
|
2118
|
-
if (
|
|
2119
|
-
response.status_code == 204
|
|
2120
|
-
or not response.content
|
|
2121
|
-
or not response.text.strip()
|
|
2122
|
-
):
|
|
1666
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2123
1667
|
return None
|
|
2124
1668
|
try:
|
|
2125
1669
|
return response.json()
|
|
2126
1670
|
except ValueError:
|
|
2127
1671
|
return None
|
|
2128
1672
|
|
|
2129
|
-
def export_user_ids_by_post(
|
|
1673
|
+
async def export_user_ids_by_post(
|
|
2130
1674
|
self,
|
|
2131
1675
|
external_ids: list[str] | None = None,
|
|
2132
1676
|
user_aliases: list[dict[str, Any]] | None = None,
|
|
@@ -2168,30 +1712,19 @@ class BrazeApp(APIApplication):
|
|
|
2168
1712
|
"phone": phone,
|
|
2169
1713
|
"fields_to_export": fields_to_export,
|
|
2170
1714
|
}
|
|
2171
|
-
request_body_data = {
|
|
2172
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2173
|
-
}
|
|
1715
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2174
1716
|
url = f"{self.base_url}/users/export/ids"
|
|
2175
1717
|
query_params = {}
|
|
2176
|
-
response = self._post(
|
|
2177
|
-
url,
|
|
2178
|
-
data=request_body_data,
|
|
2179
|
-
params=query_params,
|
|
2180
|
-
content_type="application/json",
|
|
2181
|
-
)
|
|
1718
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2182
1719
|
response.raise_for_status()
|
|
2183
|
-
if (
|
|
2184
|
-
response.status_code == 204
|
|
2185
|
-
or not response.content
|
|
2186
|
-
or not response.text.strip()
|
|
2187
|
-
):
|
|
1720
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2188
1721
|
return None
|
|
2189
1722
|
try:
|
|
2190
1723
|
return response.json()
|
|
2191
1724
|
except ValueError:
|
|
2192
1725
|
return None
|
|
2193
1726
|
|
|
2194
|
-
def export_users_by_segment_post(
|
|
1727
|
+
async def export_users_by_segment_post(
|
|
2195
1728
|
self,
|
|
2196
1729
|
segment_id: str | None = None,
|
|
2197
1730
|
callback_endpoint: str | None = None,
|
|
@@ -2224,34 +1757,20 @@ class BrazeApp(APIApplication):
|
|
|
2224
1757
|
"fields_to_export": fields_to_export,
|
|
2225
1758
|
"output_format": output_format,
|
|
2226
1759
|
}
|
|
2227
|
-
request_body_data = {
|
|
2228
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2229
|
-
}
|
|
1760
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2230
1761
|
url = f"{self.base_url}/users/export/segment"
|
|
2231
1762
|
query_params = {}
|
|
2232
|
-
response = self._post(
|
|
2233
|
-
url,
|
|
2234
|
-
data=request_body_data,
|
|
2235
|
-
params=query_params,
|
|
2236
|
-
content_type="application/json",
|
|
2237
|
-
)
|
|
1763
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2238
1764
|
response.raise_for_status()
|
|
2239
|
-
if (
|
|
2240
|
-
response.status_code == 204
|
|
2241
|
-
or not response.content
|
|
2242
|
-
or not response.text.strip()
|
|
2243
|
-
):
|
|
1765
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2244
1766
|
return None
|
|
2245
1767
|
try:
|
|
2246
1768
|
return response.json()
|
|
2247
1769
|
except ValueError:
|
|
2248
1770
|
return None
|
|
2249
1771
|
|
|
2250
|
-
def export_global_control_group_users(
|
|
2251
|
-
self,
|
|
2252
|
-
callback_endpoint: str | None = None,
|
|
2253
|
-
fields_to_export: list[str] | None = None,
|
|
2254
|
-
output_format: str | None = None,
|
|
1772
|
+
async def export_global_control_group_users(
|
|
1773
|
+
self, callback_endpoint: str | None = None, fields_to_export: list[str] | None = None, output_format: str | None = None
|
|
2255
1774
|
) -> dict[str, Any]:
|
|
2256
1775
|
"""
|
|
2257
1776
|
Export User Profile by Global Control Group
|
|
@@ -2272,35 +1791,20 @@ class BrazeApp(APIApplication):
|
|
|
2272
1791
|
Export > Users
|
|
2273
1792
|
"""
|
|
2274
1793
|
request_body_data = None
|
|
2275
|
-
request_body_data = {
|
|
2276
|
-
|
|
2277
|
-
"fields_to_export": fields_to_export,
|
|
2278
|
-
"output_format": output_format,
|
|
2279
|
-
}
|
|
2280
|
-
request_body_data = {
|
|
2281
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2282
|
-
}
|
|
1794
|
+
request_body_data = {"callback_endpoint": callback_endpoint, "fields_to_export": fields_to_export, "output_format": output_format}
|
|
1795
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2283
1796
|
url = f"{self.base_url}/users/export/global_control_group"
|
|
2284
1797
|
query_params = {}
|
|
2285
|
-
response = self._post(
|
|
2286
|
-
url,
|
|
2287
|
-
data=request_body_data,
|
|
2288
|
-
params=query_params,
|
|
2289
|
-
content_type="application/json",
|
|
2290
|
-
)
|
|
1798
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2291
1799
|
response.raise_for_status()
|
|
2292
|
-
if (
|
|
2293
|
-
response.status_code == 204
|
|
2294
|
-
or not response.content
|
|
2295
|
-
or not response.text.strip()
|
|
2296
|
-
):
|
|
1800
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2297
1801
|
return None
|
|
2298
1802
|
try:
|
|
2299
1803
|
return response.json()
|
|
2300
1804
|
except ValueError:
|
|
2301
1805
|
return None
|
|
2302
1806
|
|
|
2303
|
-
def update_live_activity_message(
|
|
1807
|
+
async def update_live_activity_message(
|
|
2304
1808
|
self,
|
|
2305
1809
|
app_id: str | None = None,
|
|
2306
1810
|
activity_id: str | None = None,
|
|
@@ -2342,30 +1846,19 @@ class BrazeApp(APIApplication):
|
|
|
2342
1846
|
"stale_date": stale_date,
|
|
2343
1847
|
"notification": notification,
|
|
2344
1848
|
}
|
|
2345
|
-
request_body_data = {
|
|
2346
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2347
|
-
}
|
|
1849
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2348
1850
|
url = f"{self.base_url}/messages/live_activity/update"
|
|
2349
1851
|
query_params = {}
|
|
2350
|
-
response = self._post(
|
|
2351
|
-
url,
|
|
2352
|
-
data=request_body_data,
|
|
2353
|
-
params=query_params,
|
|
2354
|
-
content_type="application/json",
|
|
2355
|
-
)
|
|
1852
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2356
1853
|
response.raise_for_status()
|
|
2357
|
-
if (
|
|
2358
|
-
response.status_code == 204
|
|
2359
|
-
or not response.content
|
|
2360
|
-
or not response.text.strip()
|
|
2361
|
-
):
|
|
1854
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2362
1855
|
return None
|
|
2363
1856
|
try:
|
|
2364
1857
|
return response.json()
|
|
2365
1858
|
except ValueError:
|
|
2366
1859
|
return None
|
|
2367
1860
|
|
|
2368
|
-
def list_scheduled_broadcasts(self, end_time: str | None = None) -> dict[str, Any]:
|
|
1861
|
+
async def list_scheduled_broadcasts(self, end_time: str | None = None) -> dict[str, Any]:
|
|
2369
1862
|
"""
|
|
2370
1863
|
List Upcoming Scheduled Campaigns and Canvases
|
|
2371
1864
|
|
|
@@ -2386,20 +1879,14 @@ class BrazeApp(APIApplication):
|
|
|
2386
1879
|
query_params = {k: v for k, v in [("end_time", end_time)] if v is not None}
|
|
2387
1880
|
response = self._get(url, params=query_params)
|
|
2388
1881
|
response.raise_for_status()
|
|
2389
|
-
if (
|
|
2390
|
-
response.status_code == 204
|
|
2391
|
-
or not response.content
|
|
2392
|
-
or not response.text.strip()
|
|
2393
|
-
):
|
|
1882
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2394
1883
|
return None
|
|
2395
1884
|
try:
|
|
2396
1885
|
return response.json()
|
|
2397
1886
|
except ValueError:
|
|
2398
1887
|
return None
|
|
2399
1888
|
|
|
2400
|
-
def delete_scheduled_message(
|
|
2401
|
-
self, schedule_id: str | None = None
|
|
2402
|
-
) -> dict[str, Any]:
|
|
1889
|
+
async def delete_scheduled_message(self, schedule_id: str | None = None) -> dict[str, Any]:
|
|
2403
1890
|
"""
|
|
2404
1891
|
Delete Scheduled Messages
|
|
2405
1892
|
|
|
@@ -2417,35 +1904,20 @@ class BrazeApp(APIApplication):
|
|
|
2417
1904
|
Messaging > Schedule Mesages
|
|
2418
1905
|
"""
|
|
2419
1906
|
request_body_data = None
|
|
2420
|
-
request_body_data = {
|
|
2421
|
-
|
|
2422
|
-
}
|
|
2423
|
-
request_body_data = {
|
|
2424
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2425
|
-
}
|
|
1907
|
+
request_body_data = {"schedule_id": schedule_id}
|
|
1908
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2426
1909
|
url = f"{self.base_url}/messages/schedule/delete"
|
|
2427
1910
|
query_params = {}
|
|
2428
|
-
response = self._post(
|
|
2429
|
-
url,
|
|
2430
|
-
data=request_body_data,
|
|
2431
|
-
params=query_params,
|
|
2432
|
-
content_type="application/json",
|
|
2433
|
-
)
|
|
1911
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2434
1912
|
response.raise_for_status()
|
|
2435
|
-
if (
|
|
2436
|
-
response.status_code == 204
|
|
2437
|
-
or not response.content
|
|
2438
|
-
or not response.text.strip()
|
|
2439
|
-
):
|
|
1913
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2440
1914
|
return None
|
|
2441
1915
|
try:
|
|
2442
1916
|
return response.json()
|
|
2443
1917
|
except ValueError:
|
|
2444
1918
|
return None
|
|
2445
1919
|
|
|
2446
|
-
def schedule_delete_canvas_trigger(
|
|
2447
|
-
self, canvas_id: str | None = None, schedule_id: str | None = None
|
|
2448
|
-
) -> dict[str, Any]:
|
|
1920
|
+
async def schedule_delete_canvas_trigger(self, canvas_id: str | None = None, schedule_id: str | None = None) -> dict[str, Any]:
|
|
2449
1921
|
"""
|
|
2450
1922
|
Delete Scheduled API-Triggered Canvases
|
|
2451
1923
|
|
|
@@ -2464,36 +1936,20 @@ class BrazeApp(APIApplication):
|
|
|
2464
1936
|
Messaging > Schedule Mesages
|
|
2465
1937
|
"""
|
|
2466
1938
|
request_body_data = None
|
|
2467
|
-
request_body_data = {
|
|
2468
|
-
|
|
2469
|
-
"schedule_id": schedule_id,
|
|
2470
|
-
}
|
|
2471
|
-
request_body_data = {
|
|
2472
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2473
|
-
}
|
|
1939
|
+
request_body_data = {"canvas_id": canvas_id, "schedule_id": schedule_id}
|
|
1940
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2474
1941
|
url = f"{self.base_url}/canvas/trigger/schedule/delete"
|
|
2475
1942
|
query_params = {}
|
|
2476
|
-
response = self._post(
|
|
2477
|
-
url,
|
|
2478
|
-
data=request_body_data,
|
|
2479
|
-
params=query_params,
|
|
2480
|
-
content_type="application/json",
|
|
2481
|
-
)
|
|
1943
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2482
1944
|
response.raise_for_status()
|
|
2483
|
-
if (
|
|
2484
|
-
response.status_code == 204
|
|
2485
|
-
or not response.content
|
|
2486
|
-
or not response.text.strip()
|
|
2487
|
-
):
|
|
1945
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2488
1946
|
return None
|
|
2489
1947
|
try:
|
|
2490
1948
|
return response.json()
|
|
2491
1949
|
except ValueError:
|
|
2492
1950
|
return None
|
|
2493
1951
|
|
|
2494
|
-
def delete_campaign_schedule(
|
|
2495
|
-
self, campaign_id: str | None = None, schedule_id: str | None = None
|
|
2496
|
-
) -> dict[str, Any]:
|
|
1952
|
+
async def delete_campaign_schedule(self, campaign_id: str | None = None, schedule_id: str | None = None) -> dict[str, Any]:
|
|
2497
1953
|
"""
|
|
2498
1954
|
Delete Scheduled API Triggered Campaigns
|
|
2499
1955
|
|
|
@@ -2512,34 +1968,20 @@ class BrazeApp(APIApplication):
|
|
|
2512
1968
|
Messaging > Schedule Mesages
|
|
2513
1969
|
"""
|
|
2514
1970
|
request_body_data = None
|
|
2515
|
-
request_body_data = {
|
|
2516
|
-
|
|
2517
|
-
"schedule_id": schedule_id,
|
|
2518
|
-
}
|
|
2519
|
-
request_body_data = {
|
|
2520
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2521
|
-
}
|
|
1971
|
+
request_body_data = {"campaign_id": campaign_id, "schedule_id": schedule_id}
|
|
1972
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2522
1973
|
url = f"{self.base_url}/campaigns/trigger/schedule/delete"
|
|
2523
1974
|
query_params = {}
|
|
2524
|
-
response = self._post(
|
|
2525
|
-
url,
|
|
2526
|
-
data=request_body_data,
|
|
2527
|
-
params=query_params,
|
|
2528
|
-
content_type="application/json",
|
|
2529
|
-
)
|
|
1975
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2530
1976
|
response.raise_for_status()
|
|
2531
|
-
if (
|
|
2532
|
-
response.status_code == 204
|
|
2533
|
-
or not response.content
|
|
2534
|
-
or not response.text.strip()
|
|
2535
|
-
):
|
|
1977
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2536
1978
|
return None
|
|
2537
1979
|
try:
|
|
2538
1980
|
return response.json()
|
|
2539
1981
|
except ValueError:
|
|
2540
1982
|
return None
|
|
2541
1983
|
|
|
2542
|
-
def create_scheduled_message(
|
|
1984
|
+
async def create_scheduled_message(
|
|
2543
1985
|
self,
|
|
2544
1986
|
broadcast: bool | None = None,
|
|
2545
1987
|
external_user_ids: str | None = None,
|
|
@@ -2593,30 +2035,19 @@ class BrazeApp(APIApplication):
|
|
|
2593
2035
|
"schedule": schedule,
|
|
2594
2036
|
"messages": messages,
|
|
2595
2037
|
}
|
|
2596
|
-
request_body_data = {
|
|
2597
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2598
|
-
}
|
|
2038
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2599
2039
|
url = f"{self.base_url}/messages/schedule/create"
|
|
2600
2040
|
query_params = {}
|
|
2601
|
-
response = self._post(
|
|
2602
|
-
url,
|
|
2603
|
-
data=request_body_data,
|
|
2604
|
-
params=query_params,
|
|
2605
|
-
content_type="application/json",
|
|
2606
|
-
)
|
|
2041
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2607
2042
|
response.raise_for_status()
|
|
2608
|
-
if (
|
|
2609
|
-
response.status_code == 204
|
|
2610
|
-
or not response.content
|
|
2611
|
-
or not response.text.strip()
|
|
2612
|
-
):
|
|
2043
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2613
2044
|
return None
|
|
2614
2045
|
try:
|
|
2615
2046
|
return response.json()
|
|
2616
2047
|
except ValueError:
|
|
2617
2048
|
return None
|
|
2618
2049
|
|
|
2619
|
-
def create_schedule(
|
|
2050
|
+
async def create_schedule(
|
|
2620
2051
|
self,
|
|
2621
2052
|
campaign_id: str | None = None,
|
|
2622
2053
|
send_id: str | None = None,
|
|
@@ -2658,30 +2089,19 @@ class BrazeApp(APIApplication):
|
|
|
2658
2089
|
"trigger_properties": trigger_properties,
|
|
2659
2090
|
"schedule": schedule,
|
|
2660
2091
|
}
|
|
2661
|
-
request_body_data = {
|
|
2662
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2663
|
-
}
|
|
2092
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2664
2093
|
url = f"{self.base_url}/campaigns/trigger/schedule/create"
|
|
2665
2094
|
query_params = {}
|
|
2666
|
-
response = self._post(
|
|
2667
|
-
url,
|
|
2668
|
-
data=request_body_data,
|
|
2669
|
-
params=query_params,
|
|
2670
|
-
content_type="application/json",
|
|
2671
|
-
)
|
|
2095
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2672
2096
|
response.raise_for_status()
|
|
2673
|
-
if (
|
|
2674
|
-
response.status_code == 204
|
|
2675
|
-
or not response.content
|
|
2676
|
-
or not response.text.strip()
|
|
2677
|
-
):
|
|
2097
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2678
2098
|
return None
|
|
2679
2099
|
try:
|
|
2680
2100
|
return response.json()
|
|
2681
2101
|
except ValueError:
|
|
2682
2102
|
return None
|
|
2683
2103
|
|
|
2684
|
-
def create_schedule_trigger(
|
|
2104
|
+
async def create_schedule_trigger(
|
|
2685
2105
|
self,
|
|
2686
2106
|
canvas_id: str | None = None,
|
|
2687
2107
|
recipients: list[dict[str, Any]] | None = None,
|
|
@@ -2720,34 +2140,20 @@ class BrazeApp(APIApplication):
|
|
|
2720
2140
|
"canvas_entry_properties": canvas_entry_properties,
|
|
2721
2141
|
"schedule": schedule,
|
|
2722
2142
|
}
|
|
2723
|
-
request_body_data = {
|
|
2724
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2725
|
-
}
|
|
2143
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2726
2144
|
url = f"{self.base_url}/canvas/trigger/schedule/create"
|
|
2727
2145
|
query_params = {}
|
|
2728
|
-
response = self._post(
|
|
2729
|
-
url,
|
|
2730
|
-
data=request_body_data,
|
|
2731
|
-
params=query_params,
|
|
2732
|
-
content_type="application/json",
|
|
2733
|
-
)
|
|
2146
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2734
2147
|
response.raise_for_status()
|
|
2735
|
-
if (
|
|
2736
|
-
response.status_code == 204
|
|
2737
|
-
or not response.content
|
|
2738
|
-
or not response.text.strip()
|
|
2739
|
-
):
|
|
2148
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2740
2149
|
return None
|
|
2741
2150
|
try:
|
|
2742
2151
|
return response.json()
|
|
2743
2152
|
except ValueError:
|
|
2744
2153
|
return None
|
|
2745
2154
|
|
|
2746
|
-
def schedule_message_update(
|
|
2747
|
-
self,
|
|
2748
|
-
schedule_id: str | None = None,
|
|
2749
|
-
schedule: dict[str, Any] | None = None,
|
|
2750
|
-
messages: dict[str, Any] | None = None,
|
|
2155
|
+
async def schedule_message_update(
|
|
2156
|
+
self, schedule_id: str | None = None, schedule: dict[str, Any] | None = None, messages: dict[str, Any] | None = None
|
|
2751
2157
|
) -> dict[str, Any]:
|
|
2752
2158
|
"""
|
|
2753
2159
|
Update Scheduled Messages
|
|
@@ -2768,39 +2174,21 @@ class BrazeApp(APIApplication):
|
|
|
2768
2174
|
Messaging > Schedule Mesages
|
|
2769
2175
|
"""
|
|
2770
2176
|
request_body_data = None
|
|
2771
|
-
request_body_data = {
|
|
2772
|
-
|
|
2773
|
-
"schedule": schedule,
|
|
2774
|
-
"messages": messages,
|
|
2775
|
-
}
|
|
2776
|
-
request_body_data = {
|
|
2777
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2778
|
-
}
|
|
2177
|
+
request_body_data = {"schedule_id": schedule_id, "schedule": schedule, "messages": messages}
|
|
2178
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2779
2179
|
url = f"{self.base_url}/messages/schedule/update"
|
|
2780
2180
|
query_params = {}
|
|
2781
|
-
response = self._post(
|
|
2782
|
-
url,
|
|
2783
|
-
data=request_body_data,
|
|
2784
|
-
params=query_params,
|
|
2785
|
-
content_type="application/json",
|
|
2786
|
-
)
|
|
2181
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2787
2182
|
response.raise_for_status()
|
|
2788
|
-
if (
|
|
2789
|
-
response.status_code == 204
|
|
2790
|
-
or not response.content
|
|
2791
|
-
or not response.text.strip()
|
|
2792
|
-
):
|
|
2183
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2793
2184
|
return None
|
|
2794
2185
|
try:
|
|
2795
2186
|
return response.json()
|
|
2796
2187
|
except ValueError:
|
|
2797
2188
|
return None
|
|
2798
2189
|
|
|
2799
|
-
def update_campaign_trigger_schedule(
|
|
2800
|
-
self,
|
|
2801
|
-
campaign_id: str | None = None,
|
|
2802
|
-
schedule_id: str | None = None,
|
|
2803
|
-
schedule: dict[str, Any] | None = None,
|
|
2190
|
+
async def update_campaign_trigger_schedule(
|
|
2191
|
+
self, campaign_id: str | None = None, schedule_id: str | None = None, schedule: dict[str, Any] | None = None
|
|
2804
2192
|
) -> dict[str, Any]:
|
|
2805
2193
|
"""
|
|
2806
2194
|
Update Scheduled API Triggered Campaigns
|
|
@@ -2821,39 +2209,21 @@ class BrazeApp(APIApplication):
|
|
|
2821
2209
|
Messaging > Schedule Mesages
|
|
2822
2210
|
"""
|
|
2823
2211
|
request_body_data = None
|
|
2824
|
-
request_body_data = {
|
|
2825
|
-
|
|
2826
|
-
"schedule_id": schedule_id,
|
|
2827
|
-
"schedule": schedule,
|
|
2828
|
-
}
|
|
2829
|
-
request_body_data = {
|
|
2830
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2831
|
-
}
|
|
2212
|
+
request_body_data = {"campaign_id": campaign_id, "schedule_id": schedule_id, "schedule": schedule}
|
|
2213
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2832
2214
|
url = f"{self.base_url}/campaigns/trigger/schedule/update"
|
|
2833
2215
|
query_params = {}
|
|
2834
|
-
response = self._post(
|
|
2835
|
-
url,
|
|
2836
|
-
data=request_body_data,
|
|
2837
|
-
params=query_params,
|
|
2838
|
-
content_type="application/json",
|
|
2839
|
-
)
|
|
2216
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2840
2217
|
response.raise_for_status()
|
|
2841
|
-
if (
|
|
2842
|
-
response.status_code == 204
|
|
2843
|
-
or not response.content
|
|
2844
|
-
or not response.text.strip()
|
|
2845
|
-
):
|
|
2218
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2846
2219
|
return None
|
|
2847
2220
|
try:
|
|
2848
2221
|
return response.json()
|
|
2849
2222
|
except ValueError:
|
|
2850
2223
|
return None
|
|
2851
2224
|
|
|
2852
|
-
def update_canvas_trigger_schedule(
|
|
2853
|
-
self,
|
|
2854
|
-
canvas_id: str | None = None,
|
|
2855
|
-
schedule_id: str | None = None,
|
|
2856
|
-
schedule: dict[str, Any] | None = None,
|
|
2225
|
+
async def update_canvas_trigger_schedule(
|
|
2226
|
+
self, canvas_id: str | None = None, schedule_id: str | None = None, schedule: dict[str, Any] | None = None
|
|
2857
2227
|
) -> dict[str, Any]:
|
|
2858
2228
|
"""
|
|
2859
2229
|
Update Scheduled API Triggered Canvases
|
|
@@ -2874,37 +2244,20 @@ class BrazeApp(APIApplication):
|
|
|
2874
2244
|
Messaging > Schedule Mesages
|
|
2875
2245
|
"""
|
|
2876
2246
|
request_body_data = None
|
|
2877
|
-
request_body_data = {
|
|
2878
|
-
|
|
2879
|
-
"schedule_id": schedule_id,
|
|
2880
|
-
"schedule": schedule,
|
|
2881
|
-
}
|
|
2882
|
-
request_body_data = {
|
|
2883
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2884
|
-
}
|
|
2247
|
+
request_body_data = {"canvas_id": canvas_id, "schedule_id": schedule_id, "schedule": schedule}
|
|
2248
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2885
2249
|
url = f"{self.base_url}/canvas/trigger/schedule/update"
|
|
2886
2250
|
query_params = {}
|
|
2887
|
-
response = self._post(
|
|
2888
|
-
url,
|
|
2889
|
-
data=request_body_data,
|
|
2890
|
-
params=query_params,
|
|
2891
|
-
content_type="application/json",
|
|
2892
|
-
)
|
|
2251
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2893
2252
|
response.raise_for_status()
|
|
2894
|
-
if (
|
|
2895
|
-
response.status_code == 204
|
|
2896
|
-
or not response.content
|
|
2897
|
-
or not response.text.strip()
|
|
2898
|
-
):
|
|
2253
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2899
2254
|
return None
|
|
2900
2255
|
try:
|
|
2901
2256
|
return response.json()
|
|
2902
2257
|
except ValueError:
|
|
2903
2258
|
return None
|
|
2904
2259
|
|
|
2905
|
-
def create_send_by_id(
|
|
2906
|
-
self, campaign_id: str | None = None, send_id: str | None = None
|
|
2907
|
-
) -> dict[str, Any]:
|
|
2260
|
+
async def create_send_by_id(self, campaign_id: str | None = None, send_id: str | None = None) -> dict[str, Any]:
|
|
2908
2261
|
"""
|
|
2909
2262
|
Create Send IDs For Message Send Tracking
|
|
2910
2263
|
|
|
@@ -2923,34 +2276,20 @@ class BrazeApp(APIApplication):
|
|
|
2923
2276
|
Messaging > Send Messages
|
|
2924
2277
|
"""
|
|
2925
2278
|
request_body_data = None
|
|
2926
|
-
request_body_data = {
|
|
2927
|
-
|
|
2928
|
-
"send_id": send_id,
|
|
2929
|
-
}
|
|
2930
|
-
request_body_data = {
|
|
2931
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
2932
|
-
}
|
|
2279
|
+
request_body_data = {"campaign_id": campaign_id, "send_id": send_id}
|
|
2280
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
2933
2281
|
url = f"{self.base_url}/sends/id/create"
|
|
2934
2282
|
query_params = {}
|
|
2935
|
-
response = self._post(
|
|
2936
|
-
url,
|
|
2937
|
-
data=request_body_data,
|
|
2938
|
-
params=query_params,
|
|
2939
|
-
content_type="application/json",
|
|
2940
|
-
)
|
|
2283
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
2941
2284
|
response.raise_for_status()
|
|
2942
|
-
if (
|
|
2943
|
-
response.status_code == 204
|
|
2944
|
-
or not response.content
|
|
2945
|
-
or not response.text.strip()
|
|
2946
|
-
):
|
|
2285
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
2947
2286
|
return None
|
|
2948
2287
|
try:
|
|
2949
2288
|
return response.json()
|
|
2950
2289
|
except ValueError:
|
|
2951
2290
|
return None
|
|
2952
2291
|
|
|
2953
|
-
def send_message(
|
|
2292
|
+
async def send_message(
|
|
2954
2293
|
self,
|
|
2955
2294
|
broadcast: str | None = None,
|
|
2956
2295
|
external_user_ids: str | None = None,
|
|
@@ -3001,30 +2340,19 @@ class BrazeApp(APIApplication):
|
|
|
3001
2340
|
"recipient_subscription_state": recipient_subscription_state,
|
|
3002
2341
|
"messages": messages,
|
|
3003
2342
|
}
|
|
3004
|
-
request_body_data = {
|
|
3005
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3006
|
-
}
|
|
2343
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3007
2344
|
url = f"{self.base_url}/messages/send"
|
|
3008
2345
|
query_params = {}
|
|
3009
|
-
response = self._post(
|
|
3010
|
-
url,
|
|
3011
|
-
data=request_body_data,
|
|
3012
|
-
params=query_params,
|
|
3013
|
-
content_type="application/json",
|
|
3014
|
-
)
|
|
2346
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3015
2347
|
response.raise_for_status()
|
|
3016
|
-
if (
|
|
3017
|
-
response.status_code == 204
|
|
3018
|
-
or not response.content
|
|
3019
|
-
or not response.text.strip()
|
|
3020
|
-
):
|
|
2348
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3021
2349
|
return None
|
|
3022
2350
|
try:
|
|
3023
2351
|
return response.json()
|
|
3024
2352
|
except ValueError:
|
|
3025
2353
|
return None
|
|
3026
2354
|
|
|
3027
|
-
def send_campaign_transactional(
|
|
2355
|
+
async def send_campaign_transactional(
|
|
3028
2356
|
self,
|
|
3029
2357
|
campaign_id: str,
|
|
3030
2358
|
external_send_id: str | None = None,
|
|
@@ -3053,35 +2381,20 @@ class BrazeApp(APIApplication):
|
|
|
3053
2381
|
if campaign_id is None:
|
|
3054
2382
|
raise ValueError("Missing required parameter 'campaign_id'.")
|
|
3055
2383
|
request_body_data = None
|
|
3056
|
-
request_body_data = {
|
|
3057
|
-
|
|
3058
|
-
"trigger_properties": trigger_properties,
|
|
3059
|
-
"recipient": recipient,
|
|
3060
|
-
}
|
|
3061
|
-
request_body_data = {
|
|
3062
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3063
|
-
}
|
|
2384
|
+
request_body_data = {"external_send_id": external_send_id, "trigger_properties": trigger_properties, "recipient": recipient}
|
|
2385
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3064
2386
|
url = f"{self.base_url}/transactional/v1/campaigns/{campaign_id}/send"
|
|
3065
2387
|
query_params = {}
|
|
3066
|
-
response = self._post(
|
|
3067
|
-
url,
|
|
3068
|
-
data=request_body_data,
|
|
3069
|
-
params=query_params,
|
|
3070
|
-
content_type="application/json",
|
|
3071
|
-
)
|
|
2388
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3072
2389
|
response.raise_for_status()
|
|
3073
|
-
if (
|
|
3074
|
-
response.status_code == 204
|
|
3075
|
-
or not response.content
|
|
3076
|
-
or not response.text.strip()
|
|
3077
|
-
):
|
|
2390
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3078
2391
|
return None
|
|
3079
2392
|
try:
|
|
3080
2393
|
return response.json()
|
|
3081
2394
|
except ValueError:
|
|
3082
2395
|
return None
|
|
3083
2396
|
|
|
3084
|
-
def send_campaign_trigger(
|
|
2397
|
+
async def send_campaign_trigger(
|
|
3085
2398
|
self,
|
|
3086
2399
|
campaign_id: str | None = None,
|
|
3087
2400
|
send_id: str | None = None,
|
|
@@ -3120,30 +2433,19 @@ class BrazeApp(APIApplication):
|
|
|
3120
2433
|
"audience": audience,
|
|
3121
2434
|
"recipients": recipients,
|
|
3122
2435
|
}
|
|
3123
|
-
request_body_data = {
|
|
3124
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3125
|
-
}
|
|
2436
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3126
2437
|
url = f"{self.base_url}/campaigns/trigger/send"
|
|
3127
2438
|
query_params = {}
|
|
3128
|
-
response = self._post(
|
|
3129
|
-
url,
|
|
3130
|
-
data=request_body_data,
|
|
3131
|
-
params=query_params,
|
|
3132
|
-
content_type="application/json",
|
|
3133
|
-
)
|
|
2439
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3134
2440
|
response.raise_for_status()
|
|
3135
|
-
if (
|
|
3136
|
-
response.status_code == 204
|
|
3137
|
-
or not response.content
|
|
3138
|
-
or not response.text.strip()
|
|
3139
|
-
):
|
|
2441
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3140
2442
|
return None
|
|
3141
2443
|
try:
|
|
3142
2444
|
return response.json()
|
|
3143
2445
|
except ValueError:
|
|
3144
2446
|
return None
|
|
3145
2447
|
|
|
3146
|
-
def send_canvas_trigger_post(
|
|
2448
|
+
async def send_canvas_trigger_post(
|
|
3147
2449
|
self,
|
|
3148
2450
|
canvas_id: str | None = None,
|
|
3149
2451
|
canvas_entry_properties: dict[str, Any] | None = None,
|
|
@@ -3179,35 +2481,20 @@ class BrazeApp(APIApplication):
|
|
|
3179
2481
|
"audience": audience,
|
|
3180
2482
|
"recipients": recipients,
|
|
3181
2483
|
}
|
|
3182
|
-
request_body_data = {
|
|
3183
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3184
|
-
}
|
|
2484
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3185
2485
|
url = f"{self.base_url}/canvas/trigger/send"
|
|
3186
2486
|
query_params = {}
|
|
3187
|
-
response = self._post(
|
|
3188
|
-
url,
|
|
3189
|
-
data=request_body_data,
|
|
3190
|
-
params=query_params,
|
|
3191
|
-
content_type="application/json",
|
|
3192
|
-
)
|
|
2487
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3193
2488
|
response.raise_for_status()
|
|
3194
|
-
if (
|
|
3195
|
-
response.status_code == 204
|
|
3196
|
-
or not response.content
|
|
3197
|
-
or not response.text.strip()
|
|
3198
|
-
):
|
|
2489
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3199
2490
|
return None
|
|
3200
2491
|
try:
|
|
3201
2492
|
return response.json()
|
|
3202
2493
|
except ValueError:
|
|
3203
2494
|
return None
|
|
3204
2495
|
|
|
3205
|
-
def get_preference_center_url_by_user_id(
|
|
3206
|
-
self,
|
|
3207
|
-
PreferenceCenterExternalID: str,
|
|
3208
|
-
UserID: str,
|
|
3209
|
-
preference_center_api_id: str | None = None,
|
|
3210
|
-
external_id: str | None = None,
|
|
2496
|
+
async def get_preference_center_url_by_user_id(
|
|
2497
|
+
self, PreferenceCenterExternalID: str, UserID: str, preference_center_api_id: str | None = None, external_id: str | None = None
|
|
3211
2498
|
) -> dict[str, Any]:
|
|
3212
2499
|
"""
|
|
3213
2500
|
Generate Preference Center URL
|
|
@@ -3234,27 +2521,18 @@ class BrazeApp(APIApplication):
|
|
|
3234
2521
|
raise ValueError("Missing required parameter 'UserID'.")
|
|
3235
2522
|
url = f"{self.base_url}/preference_center_v1/{PreferenceCenterExternalID}/url/{UserID}"
|
|
3236
2523
|
query_params = {
|
|
3237
|
-
k: v
|
|
3238
|
-
for k, v in [
|
|
3239
|
-
("preference_center_api_id", preference_center_api_id),
|
|
3240
|
-
("external_id", external_id),
|
|
3241
|
-
]
|
|
3242
|
-
if v is not None
|
|
2524
|
+
k: v for k, v in [("preference_center_api_id", preference_center_api_id), ("external_id", external_id)] if v is not None
|
|
3243
2525
|
}
|
|
3244
2526
|
response = self._get(url, params=query_params)
|
|
3245
2527
|
response.raise_for_status()
|
|
3246
|
-
if (
|
|
3247
|
-
response.status_code == 204
|
|
3248
|
-
or not response.content
|
|
3249
|
-
or not response.text.strip()
|
|
3250
|
-
):
|
|
2528
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3251
2529
|
return None
|
|
3252
2530
|
try:
|
|
3253
2531
|
return response.json()
|
|
3254
2532
|
except ValueError:
|
|
3255
2533
|
return None
|
|
3256
2534
|
|
|
3257
|
-
def list_preferences(self) -> dict[str, Any]:
|
|
2535
|
+
async def list_preferences(self) -> dict[str, Any]:
|
|
3258
2536
|
"""
|
|
3259
2537
|
List Preference Centers
|
|
3260
2538
|
|
|
@@ -3272,20 +2550,14 @@ class BrazeApp(APIApplication):
|
|
|
3272
2550
|
query_params = {}
|
|
3273
2551
|
response = self._get(url, params=query_params)
|
|
3274
2552
|
response.raise_for_status()
|
|
3275
|
-
if (
|
|
3276
|
-
response.status_code == 204
|
|
3277
|
-
or not response.content
|
|
3278
|
-
or not response.text.strip()
|
|
3279
|
-
):
|
|
2553
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3280
2554
|
return None
|
|
3281
2555
|
try:
|
|
3282
2556
|
return response.json()
|
|
3283
2557
|
except ValueError:
|
|
3284
2558
|
return None
|
|
3285
2559
|
|
|
3286
|
-
def get_preference_center_by_id(
|
|
3287
|
-
self, PreferenceCenterExternalID: str
|
|
3288
|
-
) -> dict[str, Any]:
|
|
2560
|
+
async def get_preference_center_by_id(self, PreferenceCenterExternalID: str) -> dict[str, Any]:
|
|
3289
2561
|
"""
|
|
3290
2562
|
View Details for Preference Center
|
|
3291
2563
|
|
|
@@ -3308,18 +2580,14 @@ class BrazeApp(APIApplication):
|
|
|
3308
2580
|
query_params = {}
|
|
3309
2581
|
response = self._get(url, params=query_params)
|
|
3310
2582
|
response.raise_for_status()
|
|
3311
|
-
if (
|
|
3312
|
-
response.status_code == 204
|
|
3313
|
-
or not response.content
|
|
3314
|
-
or not response.text.strip()
|
|
3315
|
-
):
|
|
2583
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3316
2584
|
return None
|
|
3317
2585
|
try:
|
|
3318
2586
|
return response.json()
|
|
3319
2587
|
except ValueError:
|
|
3320
2588
|
return None
|
|
3321
2589
|
|
|
3322
|
-
def update_preference_center_by_id(
|
|
2590
|
+
async def update_preference_center_by_id(
|
|
3323
2591
|
self,
|
|
3324
2592
|
PreferenceCenterExternalID: str,
|
|
3325
2593
|
external_send_id: str | None = None,
|
|
@@ -3348,35 +2616,20 @@ class BrazeApp(APIApplication):
|
|
|
3348
2616
|
if PreferenceCenterExternalID is None:
|
|
3349
2617
|
raise ValueError("Missing required parameter 'PreferenceCenterExternalID'.")
|
|
3350
2618
|
request_body_data = None
|
|
3351
|
-
request_body_data = {
|
|
3352
|
-
|
|
3353
|
-
"trigger_properties": trigger_properties,
|
|
3354
|
-
"recipient": recipient,
|
|
3355
|
-
}
|
|
3356
|
-
request_body_data = {
|
|
3357
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3358
|
-
}
|
|
2619
|
+
request_body_data = {"external_send_id": external_send_id, "trigger_properties": trigger_properties, "recipient": recipient}
|
|
2620
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3359
2621
|
url = f"{self.base_url}/preference_center/v1/{PreferenceCenterExternalID}"
|
|
3360
2622
|
query_params = {}
|
|
3361
|
-
response = self._put(
|
|
3362
|
-
url,
|
|
3363
|
-
data=request_body_data,
|
|
3364
|
-
params=query_params,
|
|
3365
|
-
content_type="application/json",
|
|
3366
|
-
)
|
|
2623
|
+
response = self._put(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3367
2624
|
response.raise_for_status()
|
|
3368
|
-
if (
|
|
3369
|
-
response.status_code == 204
|
|
3370
|
-
or not response.content
|
|
3371
|
-
or not response.text.strip()
|
|
3372
|
-
):
|
|
2625
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3373
2626
|
return None
|
|
3374
2627
|
try:
|
|
3375
2628
|
return response.json()
|
|
3376
2629
|
except ValueError:
|
|
3377
2630
|
return None
|
|
3378
2631
|
|
|
3379
|
-
def create_preference_center_entry(
|
|
2632
|
+
async def create_preference_center_entry(
|
|
3380
2633
|
self,
|
|
3381
2634
|
name: str | None = None,
|
|
3382
2635
|
preference_center_title: str | None = None,
|
|
@@ -3415,30 +2668,19 @@ class BrazeApp(APIApplication):
|
|
|
3415
2668
|
"state": state,
|
|
3416
2669
|
"options": options,
|
|
3417
2670
|
}
|
|
3418
|
-
request_body_data = {
|
|
3419
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3420
|
-
}
|
|
2671
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3421
2672
|
url = f"{self.base_url}/preference_center/v1"
|
|
3422
2673
|
query_params = {}
|
|
3423
|
-
response = self._post(
|
|
3424
|
-
url,
|
|
3425
|
-
data=request_body_data,
|
|
3426
|
-
params=query_params,
|
|
3427
|
-
content_type="application/json",
|
|
3428
|
-
)
|
|
2674
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3429
2675
|
response.raise_for_status()
|
|
3430
|
-
if (
|
|
3431
|
-
response.status_code == 204
|
|
3432
|
-
or not response.content
|
|
3433
|
-
or not response.text.strip()
|
|
3434
|
-
):
|
|
2676
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3435
2677
|
return None
|
|
3436
2678
|
try:
|
|
3437
2679
|
return response.json()
|
|
3438
2680
|
except ValueError:
|
|
3439
2681
|
return None
|
|
3440
2682
|
|
|
3441
|
-
def delete_user_by_id(self, id: str) -> dict[str, Any]:
|
|
2683
|
+
async def delete_user_by_id(self, id: str) -> dict[str, Any]:
|
|
3442
2684
|
"""
|
|
3443
2685
|
Remove Dashboard User Account
|
|
3444
2686
|
|
|
@@ -3461,18 +2703,14 @@ class BrazeApp(APIApplication):
|
|
|
3461
2703
|
query_params = {}
|
|
3462
2704
|
response = self._delete(url, params=query_params)
|
|
3463
2705
|
response.raise_for_status()
|
|
3464
|
-
if (
|
|
3465
|
-
response.status_code == 204
|
|
3466
|
-
or not response.content
|
|
3467
|
-
or not response.text.strip()
|
|
3468
|
-
):
|
|
2706
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3469
2707
|
return None
|
|
3470
2708
|
try:
|
|
3471
2709
|
return response.json()
|
|
3472
2710
|
except ValueError:
|
|
3473
2711
|
return None
|
|
3474
2712
|
|
|
3475
|
-
def get_user_by_id(self, id: str) -> dict[str, Any]:
|
|
2713
|
+
async def get_user_by_id(self, id: str) -> dict[str, Any]:
|
|
3476
2714
|
"""
|
|
3477
2715
|
Look Up an Existing Dashboard User Account
|
|
3478
2716
|
|
|
@@ -3495,18 +2733,14 @@ class BrazeApp(APIApplication):
|
|
|
3495
2733
|
query_params = {}
|
|
3496
2734
|
response = self._get(url, params=query_params)
|
|
3497
2735
|
response.raise_for_status()
|
|
3498
|
-
if (
|
|
3499
|
-
response.status_code == 204
|
|
3500
|
-
or not response.content
|
|
3501
|
-
or not response.text.strip()
|
|
3502
|
-
):
|
|
2736
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3503
2737
|
return None
|
|
3504
2738
|
try:
|
|
3505
2739
|
return response.json()
|
|
3506
2740
|
except ValueError:
|
|
3507
2741
|
return None
|
|
3508
2742
|
|
|
3509
|
-
def update_user_by_id(
|
|
2743
|
+
async def update_user_by_id(
|
|
3510
2744
|
self,
|
|
3511
2745
|
id: str,
|
|
3512
2746
|
schemas: list[str] | None = None,
|
|
@@ -3537,36 +2771,20 @@ class BrazeApp(APIApplication):
|
|
|
3537
2771
|
if id is None:
|
|
3538
2772
|
raise ValueError("Missing required parameter 'id'.")
|
|
3539
2773
|
request_body_data = None
|
|
3540
|
-
request_body_data = {
|
|
3541
|
-
|
|
3542
|
-
"name": name,
|
|
3543
|
-
"department": department,
|
|
3544
|
-
"permissions": permissions,
|
|
3545
|
-
}
|
|
3546
|
-
request_body_data = {
|
|
3547
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3548
|
-
}
|
|
2774
|
+
request_body_data = {"schemas": schemas, "name": name, "department": department, "permissions": permissions}
|
|
2775
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3549
2776
|
url = f"{self.base_url}/scim/v2/Users/{id}"
|
|
3550
2777
|
query_params = {}
|
|
3551
|
-
response = self._put(
|
|
3552
|
-
url,
|
|
3553
|
-
data=request_body_data,
|
|
3554
|
-
params=query_params,
|
|
3555
|
-
content_type="application/json",
|
|
3556
|
-
)
|
|
2778
|
+
response = self._put(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3557
2779
|
response.raise_for_status()
|
|
3558
|
-
if (
|
|
3559
|
-
response.status_code == 204
|
|
3560
|
-
or not response.content
|
|
3561
|
-
or not response.text.strip()
|
|
3562
|
-
):
|
|
2780
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3563
2781
|
return None
|
|
3564
2782
|
try:
|
|
3565
2783
|
return response.json()
|
|
3566
2784
|
except ValueError:
|
|
3567
2785
|
return None
|
|
3568
2786
|
|
|
3569
|
-
def list_users(self, filter: str | None = None) -> dict[str, Any]:
|
|
2787
|
+
async def list_users(self, filter: str | None = None) -> dict[str, Any]:
|
|
3570
2788
|
"""
|
|
3571
2789
|
Search Existing Dashboard User by Email
|
|
3572
2790
|
|
|
@@ -3587,18 +2805,14 @@ class BrazeApp(APIApplication):
|
|
|
3587
2805
|
query_params = {k: v for k, v in [("filter", filter)] if v is not None}
|
|
3588
2806
|
response = self._get(url, params=query_params)
|
|
3589
2807
|
response.raise_for_status()
|
|
3590
|
-
if (
|
|
3591
|
-
response.status_code == 204
|
|
3592
|
-
or not response.content
|
|
3593
|
-
or not response.text.strip()
|
|
3594
|
-
):
|
|
2808
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3595
2809
|
return None
|
|
3596
2810
|
try:
|
|
3597
2811
|
return response.json()
|
|
3598
2812
|
except ValueError:
|
|
3599
2813
|
return None
|
|
3600
2814
|
|
|
3601
|
-
def create_user(
|
|
2815
|
+
async def create_user(
|
|
3602
2816
|
self,
|
|
3603
2817
|
schemas: list[str] | None = None,
|
|
3604
2818
|
userName: str | None = None,
|
|
@@ -3627,37 +2841,20 @@ class BrazeApp(APIApplication):
|
|
|
3627
2841
|
SCIM, important
|
|
3628
2842
|
"""
|
|
3629
2843
|
request_body_data = None
|
|
3630
|
-
request_body_data = {
|
|
3631
|
-
|
|
3632
|
-
"userName": userName,
|
|
3633
|
-
"name": name,
|
|
3634
|
-
"department": department,
|
|
3635
|
-
"permissions": permissions,
|
|
3636
|
-
}
|
|
3637
|
-
request_body_data = {
|
|
3638
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3639
|
-
}
|
|
2844
|
+
request_body_data = {"schemas": schemas, "userName": userName, "name": name, "department": department, "permissions": permissions}
|
|
2845
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3640
2846
|
url = f"{self.base_url}/scim/v2/Users"
|
|
3641
2847
|
query_params = {}
|
|
3642
|
-
response = self._post(
|
|
3643
|
-
url,
|
|
3644
|
-
data=request_body_data,
|
|
3645
|
-
params=query_params,
|
|
3646
|
-
content_type="application/json",
|
|
3647
|
-
)
|
|
2848
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3648
2849
|
response.raise_for_status()
|
|
3649
|
-
if (
|
|
3650
|
-
response.status_code == 204
|
|
3651
|
-
or not response.content
|
|
3652
|
-
or not response.text.strip()
|
|
3653
|
-
):
|
|
2850
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3654
2851
|
return None
|
|
3655
2852
|
try:
|
|
3656
2853
|
return response.json()
|
|
3657
2854
|
except ValueError:
|
|
3658
2855
|
return None
|
|
3659
2856
|
|
|
3660
|
-
def list_invalid_phone_numbers(
|
|
2857
|
+
async def list_invalid_phone_numbers(
|
|
3661
2858
|
self,
|
|
3662
2859
|
start_date: str | None = None,
|
|
3663
2860
|
end_date: str | None = None,
|
|
@@ -3702,20 +2899,14 @@ class BrazeApp(APIApplication):
|
|
|
3702
2899
|
}
|
|
3703
2900
|
response = self._get(url, params=query_params)
|
|
3704
2901
|
response.raise_for_status()
|
|
3705
|
-
if (
|
|
3706
|
-
response.status_code == 204
|
|
3707
|
-
or not response.content
|
|
3708
|
-
or not response.text.strip()
|
|
3709
|
-
):
|
|
2902
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3710
2903
|
return None
|
|
3711
2904
|
try:
|
|
3712
2905
|
return response.json()
|
|
3713
2906
|
except ValueError:
|
|
3714
2907
|
return None
|
|
3715
2908
|
|
|
3716
|
-
def remove_invalid_phone_numbers(
|
|
3717
|
-
self, phone_numbers: list[str] | None = None
|
|
3718
|
-
) -> dict[str, Any]:
|
|
2909
|
+
async def remove_invalid_phone_numbers(self, phone_numbers: list[str] | None = None) -> dict[str, Any]:
|
|
3719
2910
|
"""
|
|
3720
2911
|
Remove Invalid Phone Numbers
|
|
3721
2912
|
|
|
@@ -3733,37 +2924,21 @@ class BrazeApp(APIApplication):
|
|
|
3733
2924
|
SMS
|
|
3734
2925
|
"""
|
|
3735
2926
|
request_body_data = None
|
|
3736
|
-
request_body_data = {
|
|
3737
|
-
|
|
3738
|
-
}
|
|
3739
|
-
request_body_data = {
|
|
3740
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3741
|
-
}
|
|
2927
|
+
request_body_data = {"phone_numbers": phone_numbers}
|
|
2928
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3742
2929
|
url = f"{self.base_url}/sms/invalid_phone_numbers/remove"
|
|
3743
2930
|
query_params = {}
|
|
3744
|
-
response = self._post(
|
|
3745
|
-
url,
|
|
3746
|
-
data=request_body_data,
|
|
3747
|
-
params=query_params,
|
|
3748
|
-
content_type="application/json",
|
|
3749
|
-
)
|
|
2931
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3750
2932
|
response.raise_for_status()
|
|
3751
|
-
if (
|
|
3752
|
-
response.status_code == 204
|
|
3753
|
-
or not response.content
|
|
3754
|
-
or not response.text.strip()
|
|
3755
|
-
):
|
|
2933
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3756
2934
|
return None
|
|
3757
2935
|
try:
|
|
3758
2936
|
return response.json()
|
|
3759
2937
|
except ValueError:
|
|
3760
2938
|
return None
|
|
3761
2939
|
|
|
3762
|
-
def get_subscription_status(
|
|
3763
|
-
self,
|
|
3764
|
-
subscription_group_id: str | None = None,
|
|
3765
|
-
external_id: str | None = None,
|
|
3766
|
-
phone: str | None = None,
|
|
2940
|
+
async def get_subscription_status(
|
|
2941
|
+
self, subscription_group_id: str | None = None, external_id: str | None = None, phone: str | None = None
|
|
3767
2942
|
) -> dict[str, Any]:
|
|
3768
2943
|
"""
|
|
3769
2944
|
List User's Subscription Group Status - SMS
|
|
@@ -3786,32 +2961,20 @@ class BrazeApp(APIApplication):
|
|
|
3786
2961
|
url = f"{self.base_url}/subscription/status/get"
|
|
3787
2962
|
query_params = {
|
|
3788
2963
|
k: v
|
|
3789
|
-
for k, v in [
|
|
3790
|
-
("subscription_group_id", subscription_group_id),
|
|
3791
|
-
("external_id", external_id),
|
|
3792
|
-
("phone", phone),
|
|
3793
|
-
]
|
|
2964
|
+
for k, v in [("subscription_group_id", subscription_group_id), ("external_id", external_id), ("phone", phone)]
|
|
3794
2965
|
if v is not None
|
|
3795
2966
|
}
|
|
3796
2967
|
response = self._get(url, params=query_params)
|
|
3797
2968
|
response.raise_for_status()
|
|
3798
|
-
if (
|
|
3799
|
-
response.status_code == 204
|
|
3800
|
-
or not response.content
|
|
3801
|
-
or not response.text.strip()
|
|
3802
|
-
):
|
|
2969
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3803
2970
|
return None
|
|
3804
2971
|
try:
|
|
3805
2972
|
return response.json()
|
|
3806
2973
|
except ValueError:
|
|
3807
2974
|
return None
|
|
3808
2975
|
|
|
3809
|
-
def get_subscription_user_status(
|
|
3810
|
-
self,
|
|
3811
|
-
external_id: str | None = None,
|
|
3812
|
-
limit: int | None = None,
|
|
3813
|
-
offset: int | None = None,
|
|
3814
|
-
phone: str | None = None,
|
|
2976
|
+
async def get_subscription_user_status(
|
|
2977
|
+
self, external_id: str | None = None, limit: int | None = None, offset: int | None = None, phone: str | None = None
|
|
3815
2978
|
) -> dict[str, Any]:
|
|
3816
2979
|
"""
|
|
3817
2980
|
List User's Subscription Group - SMS
|
|
@@ -3834,29 +2997,18 @@ class BrazeApp(APIApplication):
|
|
|
3834
2997
|
"""
|
|
3835
2998
|
url = f"{self.base_url}/subscription/user/status"
|
|
3836
2999
|
query_params = {
|
|
3837
|
-
k: v
|
|
3838
|
-
for k, v in [
|
|
3839
|
-
("external_id", external_id),
|
|
3840
|
-
("limit", limit),
|
|
3841
|
-
("offset", offset),
|
|
3842
|
-
("phone", phone),
|
|
3843
|
-
]
|
|
3844
|
-
if v is not None
|
|
3000
|
+
k: v for k, v in [("external_id", external_id), ("limit", limit), ("offset", offset), ("phone", phone)] if v is not None
|
|
3845
3001
|
}
|
|
3846
3002
|
response = self._get(url, params=query_params)
|
|
3847
3003
|
response.raise_for_status()
|
|
3848
|
-
if (
|
|
3849
|
-
response.status_code == 204
|
|
3850
|
-
or not response.content
|
|
3851
|
-
or not response.text.strip()
|
|
3852
|
-
):
|
|
3004
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3853
3005
|
return None
|
|
3854
3006
|
try:
|
|
3855
3007
|
return response.json()
|
|
3856
3008
|
except ValueError:
|
|
3857
3009
|
return None
|
|
3858
3010
|
|
|
3859
|
-
def set_subscription_status(
|
|
3011
|
+
async def set_subscription_status(
|
|
3860
3012
|
self,
|
|
3861
3013
|
subscription_group_id: str | None = None,
|
|
3862
3014
|
subscription_state: str | None = None,
|
|
@@ -3889,32 +3041,19 @@ class BrazeApp(APIApplication):
|
|
|
3889
3041
|
"external_id": external_id,
|
|
3890
3042
|
"phone": phone,
|
|
3891
3043
|
}
|
|
3892
|
-
request_body_data = {
|
|
3893
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3894
|
-
}
|
|
3044
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3895
3045
|
url = f"{self.base_url}/subscription/status/set"
|
|
3896
3046
|
query_params = {}
|
|
3897
|
-
response = self._post(
|
|
3898
|
-
url,
|
|
3899
|
-
data=request_body_data,
|
|
3900
|
-
params=query_params,
|
|
3901
|
-
content_type="application/json",
|
|
3902
|
-
)
|
|
3047
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3903
3048
|
response.raise_for_status()
|
|
3904
|
-
if (
|
|
3905
|
-
response.status_code == 204
|
|
3906
|
-
or not response.content
|
|
3907
|
-
or not response.text.strip()
|
|
3908
|
-
):
|
|
3049
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3909
3050
|
return None
|
|
3910
3051
|
try:
|
|
3911
3052
|
return response.json()
|
|
3912
3053
|
except ValueError:
|
|
3913
3054
|
return None
|
|
3914
3055
|
|
|
3915
|
-
def set_subscription_status_post(
|
|
3916
|
-
self, subscription_groups: list[dict[str, Any]] | None = None
|
|
3917
|
-
) -> dict[str, Any]:
|
|
3056
|
+
async def set_subscription_status_post(self, subscription_groups: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
3918
3057
|
"""
|
|
3919
3058
|
Update User's Subscription Group Status V2
|
|
3920
3059
|
|
|
@@ -3932,38 +3071,21 @@ class BrazeApp(APIApplication):
|
|
|
3932
3071
|
Subscription Groups > SMS and WhatsApp
|
|
3933
3072
|
"""
|
|
3934
3073
|
request_body_data = None
|
|
3935
|
-
request_body_data = {
|
|
3936
|
-
|
|
3937
|
-
}
|
|
3938
|
-
request_body_data = {
|
|
3939
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
3940
|
-
}
|
|
3074
|
+
request_body_data = {"subscription_groups": subscription_groups}
|
|
3075
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
3941
3076
|
url = f"{self.base_url}/v2/subscription/status/set"
|
|
3942
3077
|
query_params = {}
|
|
3943
|
-
response = self._post(
|
|
3944
|
-
url,
|
|
3945
|
-
data=request_body_data,
|
|
3946
|
-
params=query_params,
|
|
3947
|
-
content_type="application/json",
|
|
3948
|
-
)
|
|
3078
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
3949
3079
|
response.raise_for_status()
|
|
3950
|
-
if (
|
|
3951
|
-
response.status_code == 204
|
|
3952
|
-
or not response.content
|
|
3953
|
-
or not response.text.strip()
|
|
3954
|
-
):
|
|
3080
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
3955
3081
|
return None
|
|
3956
3082
|
try:
|
|
3957
3083
|
return response.json()
|
|
3958
3084
|
except ValueError:
|
|
3959
3085
|
return None
|
|
3960
3086
|
|
|
3961
|
-
def list_content_blocks(
|
|
3962
|
-
self,
|
|
3963
|
-
modified_after: str | None = None,
|
|
3964
|
-
modified_before: str | None = None,
|
|
3965
|
-
limit: int | None = None,
|
|
3966
|
-
offset: int | None = None,
|
|
3087
|
+
async def list_content_blocks(
|
|
3088
|
+
self, modified_after: str | None = None, modified_before: str | None = None, limit: int | None = None, offset: int | None = None
|
|
3967
3089
|
) -> dict[str, Any]:
|
|
3968
3090
|
"""
|
|
3969
3091
|
List Available Content Blocks
|
|
@@ -3987,31 +3109,20 @@ class BrazeApp(APIApplication):
|
|
|
3987
3109
|
url = f"{self.base_url}/content_blocks/list"
|
|
3988
3110
|
query_params = {
|
|
3989
3111
|
k: v
|
|
3990
|
-
for k, v in [
|
|
3991
|
-
("modified_after", modified_after),
|
|
3992
|
-
("modified_before", modified_before),
|
|
3993
|
-
("limit", limit),
|
|
3994
|
-
("offset", offset),
|
|
3995
|
-
]
|
|
3112
|
+
for k, v in [("modified_after", modified_after), ("modified_before", modified_before), ("limit", limit), ("offset", offset)]
|
|
3996
3113
|
if v is not None
|
|
3997
3114
|
}
|
|
3998
3115
|
response = self._get(url, params=query_params)
|
|
3999
3116
|
response.raise_for_status()
|
|
4000
|
-
if (
|
|
4001
|
-
response.status_code == 204
|
|
4002
|
-
or not response.content
|
|
4003
|
-
or not response.text.strip()
|
|
4004
|
-
):
|
|
3117
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4005
3118
|
return None
|
|
4006
3119
|
try:
|
|
4007
3120
|
return response.json()
|
|
4008
3121
|
except ValueError:
|
|
4009
3122
|
return None
|
|
4010
3123
|
|
|
4011
|
-
def get_info_content_block(
|
|
4012
|
-
self,
|
|
4013
|
-
content_block_id: str | None = None,
|
|
4014
|
-
include_inclusion_data: bool | None = None,
|
|
3124
|
+
async def get_info_content_block(
|
|
3125
|
+
self, content_block_id: str | None = None, include_inclusion_data: bool | None = None
|
|
4015
3126
|
) -> dict[str, Any]:
|
|
4016
3127
|
"""
|
|
4017
3128
|
See Content Block Information
|
|
@@ -4032,27 +3143,18 @@ class BrazeApp(APIApplication):
|
|
|
4032
3143
|
"""
|
|
4033
3144
|
url = f"{self.base_url}/content_blocks/info"
|
|
4034
3145
|
query_params = {
|
|
4035
|
-
k: v
|
|
4036
|
-
for k, v in [
|
|
4037
|
-
("content_block_id", content_block_id),
|
|
4038
|
-
("include_inclusion_data", include_inclusion_data),
|
|
4039
|
-
]
|
|
4040
|
-
if v is not None
|
|
3146
|
+
k: v for k, v in [("content_block_id", content_block_id), ("include_inclusion_data", include_inclusion_data)] if v is not None
|
|
4041
3147
|
}
|
|
4042
3148
|
response = self._get(url, params=query_params)
|
|
4043
3149
|
response.raise_for_status()
|
|
4044
|
-
if (
|
|
4045
|
-
response.status_code == 204
|
|
4046
|
-
or not response.content
|
|
4047
|
-
or not response.text.strip()
|
|
4048
|
-
):
|
|
3150
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4049
3151
|
return None
|
|
4050
3152
|
try:
|
|
4051
3153
|
return response.json()
|
|
4052
3154
|
except ValueError:
|
|
4053
3155
|
return None
|
|
4054
3156
|
|
|
4055
|
-
def create_content_block(
|
|
3157
|
+
async def create_content_block(
|
|
4056
3158
|
self,
|
|
4057
3159
|
name: str | None = None,
|
|
4058
3160
|
description: str | None = None,
|
|
@@ -4081,37 +3183,20 @@ class BrazeApp(APIApplication):
|
|
|
4081
3183
|
Templates > Content Blocks, important
|
|
4082
3184
|
"""
|
|
4083
3185
|
request_body_data = None
|
|
4084
|
-
request_body_data = {
|
|
4085
|
-
|
|
4086
|
-
"description": description,
|
|
4087
|
-
"content": content,
|
|
4088
|
-
"state": state,
|
|
4089
|
-
"tags": tags,
|
|
4090
|
-
}
|
|
4091
|
-
request_body_data = {
|
|
4092
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
4093
|
-
}
|
|
3186
|
+
request_body_data = {"name": name, "description": description, "content": content, "state": state, "tags": tags}
|
|
3187
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
4094
3188
|
url = f"{self.base_url}/content_blocks/create"
|
|
4095
3189
|
query_params = {}
|
|
4096
|
-
response = self._post(
|
|
4097
|
-
url,
|
|
4098
|
-
data=request_body_data,
|
|
4099
|
-
params=query_params,
|
|
4100
|
-
content_type="application/json",
|
|
4101
|
-
)
|
|
3190
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
4102
3191
|
response.raise_for_status()
|
|
4103
|
-
if (
|
|
4104
|
-
response.status_code == 204
|
|
4105
|
-
or not response.content
|
|
4106
|
-
or not response.text.strip()
|
|
4107
|
-
):
|
|
3192
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4108
3193
|
return None
|
|
4109
3194
|
try:
|
|
4110
3195
|
return response.json()
|
|
4111
3196
|
except ValueError:
|
|
4112
3197
|
return None
|
|
4113
3198
|
|
|
4114
|
-
def update_content_block(
|
|
3199
|
+
async def update_content_block(
|
|
4115
3200
|
self,
|
|
4116
3201
|
content_block_id: str | None = None,
|
|
4117
3202
|
name: str | None = None,
|
|
@@ -4150,35 +3235,20 @@ class BrazeApp(APIApplication):
|
|
|
4150
3235
|
"state": state,
|
|
4151
3236
|
"tags": tags,
|
|
4152
3237
|
}
|
|
4153
|
-
request_body_data = {
|
|
4154
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
4155
|
-
}
|
|
3238
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
4156
3239
|
url = f"{self.base_url}/content_blocks/update"
|
|
4157
3240
|
query_params = {}
|
|
4158
|
-
response = self._post(
|
|
4159
|
-
url,
|
|
4160
|
-
data=request_body_data,
|
|
4161
|
-
params=query_params,
|
|
4162
|
-
content_type="application/json",
|
|
4163
|
-
)
|
|
3241
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
4164
3242
|
response.raise_for_status()
|
|
4165
|
-
if (
|
|
4166
|
-
response.status_code == 204
|
|
4167
|
-
or not response.content
|
|
4168
|
-
or not response.text.strip()
|
|
4169
|
-
):
|
|
3243
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4170
3244
|
return None
|
|
4171
3245
|
try:
|
|
4172
3246
|
return response.json()
|
|
4173
3247
|
except ValueError:
|
|
4174
3248
|
return None
|
|
4175
3249
|
|
|
4176
|
-
def list_email_templates(
|
|
4177
|
-
self,
|
|
4178
|
-
modified_after: str | None = None,
|
|
4179
|
-
modified_before: str | None = None,
|
|
4180
|
-
limit: int | None = None,
|
|
4181
|
-
offset: int | None = None,
|
|
3250
|
+
async def list_email_templates(
|
|
3251
|
+
self, modified_after: str | None = None, modified_before: str | None = None, limit: int | None = None, offset: int | None = None
|
|
4182
3252
|
) -> dict[str, Any]:
|
|
4183
3253
|
"""
|
|
4184
3254
|
List Available Email Templates
|
|
@@ -4202,30 +3272,19 @@ class BrazeApp(APIApplication):
|
|
|
4202
3272
|
url = f"{self.base_url}/templates/email/list"
|
|
4203
3273
|
query_params = {
|
|
4204
3274
|
k: v
|
|
4205
|
-
for k, v in [
|
|
4206
|
-
("modified_after", modified_after),
|
|
4207
|
-
("modified_before", modified_before),
|
|
4208
|
-
("limit", limit),
|
|
4209
|
-
("offset", offset),
|
|
4210
|
-
]
|
|
3275
|
+
for k, v in [("modified_after", modified_after), ("modified_before", modified_before), ("limit", limit), ("offset", offset)]
|
|
4211
3276
|
if v is not None
|
|
4212
3277
|
}
|
|
4213
3278
|
response = self._get(url, params=query_params)
|
|
4214
3279
|
response.raise_for_status()
|
|
4215
|
-
if (
|
|
4216
|
-
response.status_code == 204
|
|
4217
|
-
or not response.content
|
|
4218
|
-
or not response.text.strip()
|
|
4219
|
-
):
|
|
3280
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4220
3281
|
return None
|
|
4221
3282
|
try:
|
|
4222
3283
|
return response.json()
|
|
4223
3284
|
except ValueError:
|
|
4224
3285
|
return None
|
|
4225
3286
|
|
|
4226
|
-
def get_email_template_info(
|
|
4227
|
-
self, email_template_id: str | None = None
|
|
4228
|
-
) -> dict[str, Any]:
|
|
3287
|
+
async def get_email_template_info(self, email_template_id: str | None = None) -> dict[str, Any]:
|
|
4229
3288
|
"""
|
|
4230
3289
|
See Email Template Information
|
|
4231
3290
|
|
|
@@ -4243,23 +3302,17 @@ class BrazeApp(APIApplication):
|
|
|
4243
3302
|
Templates > Email Templates
|
|
4244
3303
|
"""
|
|
4245
3304
|
url = f"{self.base_url}/templates/email/info"
|
|
4246
|
-
query_params = {
|
|
4247
|
-
k: v for k, v in [("email_template_id", email_template_id)] if v is not None
|
|
4248
|
-
}
|
|
3305
|
+
query_params = {k: v for k, v in [("email_template_id", email_template_id)] if v is not None}
|
|
4249
3306
|
response = self._get(url, params=query_params)
|
|
4250
3307
|
response.raise_for_status()
|
|
4251
|
-
if (
|
|
4252
|
-
response.status_code == 204
|
|
4253
|
-
or not response.content
|
|
4254
|
-
or not response.text.strip()
|
|
4255
|
-
):
|
|
3308
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4256
3309
|
return None
|
|
4257
3310
|
try:
|
|
4258
3311
|
return response.json()
|
|
4259
3312
|
except ValueError:
|
|
4260
3313
|
return None
|
|
4261
3314
|
|
|
4262
|
-
def create_email_template(
|
|
3315
|
+
async def create_email_template(
|
|
4263
3316
|
self,
|
|
4264
3317
|
template_name: str | None = None,
|
|
4265
3318
|
subject: str | None = None,
|
|
@@ -4298,32 +3351,19 @@ class BrazeApp(APIApplication):
|
|
|
4298
3351
|
"preheader": preheader,
|
|
4299
3352
|
"tags": tags,
|
|
4300
3353
|
}
|
|
4301
|
-
request_body_data = {
|
|
4302
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
4303
|
-
}
|
|
3354
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
4304
3355
|
url = f"{self.base_url}/templates/email/create"
|
|
4305
3356
|
query_params = {}
|
|
4306
|
-
response = self._post(
|
|
4307
|
-
url,
|
|
4308
|
-
data=request_body_data,
|
|
4309
|
-
params=query_params,
|
|
4310
|
-
content_type="application/json",
|
|
4311
|
-
)
|
|
3357
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
4312
3358
|
response.raise_for_status()
|
|
4313
|
-
if (
|
|
4314
|
-
response.status_code == 204
|
|
4315
|
-
or not response.content
|
|
4316
|
-
or not response.text.strip()
|
|
4317
|
-
):
|
|
3359
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4318
3360
|
return None
|
|
4319
3361
|
try:
|
|
4320
3362
|
return response.json()
|
|
4321
3363
|
except ValueError:
|
|
4322
3364
|
return None
|
|
4323
3365
|
|
|
4324
|
-
def rename_external_id(
|
|
4325
|
-
self, external_id_renames: list[dict[str, Any]] | None = None
|
|
4326
|
-
) -> dict[str, Any]:
|
|
3366
|
+
async def rename_external_id(self, external_id_renames: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
4327
3367
|
"""
|
|
4328
3368
|
Rename External ID
|
|
4329
3369
|
|
|
@@ -4341,35 +3381,20 @@ class BrazeApp(APIApplication):
|
|
|
4341
3381
|
User Data > External ID Migration
|
|
4342
3382
|
"""
|
|
4343
3383
|
request_body_data = None
|
|
4344
|
-
request_body_data = {
|
|
4345
|
-
|
|
4346
|
-
}
|
|
4347
|
-
request_body_data = {
|
|
4348
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
4349
|
-
}
|
|
3384
|
+
request_body_data = {"external_id_renames": external_id_renames}
|
|
3385
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
4350
3386
|
url = f"{self.base_url}/users/external_ids/rename"
|
|
4351
3387
|
query_params = {}
|
|
4352
|
-
response = self._post(
|
|
4353
|
-
url,
|
|
4354
|
-
data=request_body_data,
|
|
4355
|
-
params=query_params,
|
|
4356
|
-
content_type="application/json",
|
|
4357
|
-
)
|
|
3388
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
4358
3389
|
response.raise_for_status()
|
|
4359
|
-
if (
|
|
4360
|
-
response.status_code == 204
|
|
4361
|
-
or not response.content
|
|
4362
|
-
or not response.text.strip()
|
|
4363
|
-
):
|
|
3390
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4364
3391
|
return None
|
|
4365
3392
|
try:
|
|
4366
3393
|
return response.json()
|
|
4367
3394
|
except ValueError:
|
|
4368
3395
|
return None
|
|
4369
3396
|
|
|
4370
|
-
def remove_external_id(
|
|
4371
|
-
self, external_ids: list[str] | None = None
|
|
4372
|
-
) -> dict[str, Any]:
|
|
3397
|
+
async def remove_external_id(self, external_ids: list[str] | None = None) -> dict[str, Any]:
|
|
4373
3398
|
"""
|
|
4374
3399
|
Remove External ID
|
|
4375
3400
|
|
|
@@ -4387,35 +3412,20 @@ class BrazeApp(APIApplication):
|
|
|
4387
3412
|
User Data > External ID Migration
|
|
4388
3413
|
"""
|
|
4389
3414
|
request_body_data = None
|
|
4390
|
-
request_body_data = {
|
|
4391
|
-
|
|
4392
|
-
}
|
|
4393
|
-
request_body_data = {
|
|
4394
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
4395
|
-
}
|
|
3415
|
+
request_body_data = {"external_ids": external_ids}
|
|
3416
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
4396
3417
|
url = f"{self.base_url}/users/external_ids/remove"
|
|
4397
3418
|
query_params = {}
|
|
4398
|
-
response = self._post(
|
|
4399
|
-
url,
|
|
4400
|
-
data=request_body_data,
|
|
4401
|
-
params=query_params,
|
|
4402
|
-
content_type="application/json",
|
|
4403
|
-
)
|
|
3419
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
4404
3420
|
response.raise_for_status()
|
|
4405
|
-
if (
|
|
4406
|
-
response.status_code == 204
|
|
4407
|
-
or not response.content
|
|
4408
|
-
or not response.text.strip()
|
|
4409
|
-
):
|
|
3421
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4410
3422
|
return None
|
|
4411
3423
|
try:
|
|
4412
3424
|
return response.json()
|
|
4413
3425
|
except ValueError:
|
|
4414
3426
|
return None
|
|
4415
3427
|
|
|
4416
|
-
def update_user_alias(
|
|
4417
|
-
self, alias_updates: list[dict[str, Any]] | None = None
|
|
4418
|
-
) -> dict[str, Any]:
|
|
3428
|
+
async def update_user_alias(self, alias_updates: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
4419
3429
|
"""
|
|
4420
3430
|
Update User Alias
|
|
4421
3431
|
|
|
@@ -4433,35 +3443,20 @@ class BrazeApp(APIApplication):
|
|
|
4433
3443
|
User Data
|
|
4434
3444
|
"""
|
|
4435
3445
|
request_body_data = None
|
|
4436
|
-
request_body_data = {
|
|
4437
|
-
|
|
4438
|
-
}
|
|
4439
|
-
request_body_data = {
|
|
4440
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
4441
|
-
}
|
|
3446
|
+
request_body_data = {"alias_updates": alias_updates}
|
|
3447
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
4442
3448
|
url = f"{self.base_url}/users/alias/update"
|
|
4443
3449
|
query_params = {}
|
|
4444
|
-
response = self._post(
|
|
4445
|
-
url,
|
|
4446
|
-
data=request_body_data,
|
|
4447
|
-
params=query_params,
|
|
4448
|
-
content_type="application/json",
|
|
4449
|
-
)
|
|
3450
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
4450
3451
|
response.raise_for_status()
|
|
4451
|
-
if (
|
|
4452
|
-
response.status_code == 204
|
|
4453
|
-
or not response.content
|
|
4454
|
-
or not response.text.strip()
|
|
4455
|
-
):
|
|
3452
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4456
3453
|
return None
|
|
4457
3454
|
try:
|
|
4458
3455
|
return response.json()
|
|
4459
3456
|
except ValueError:
|
|
4460
3457
|
return None
|
|
4461
3458
|
|
|
4462
|
-
def create_user_alias_new(
|
|
4463
|
-
self, user_aliases: list[dict[str, Any]] | None = None
|
|
4464
|
-
) -> dict[str, Any]:
|
|
3459
|
+
async def create_user_alias_new(self, user_aliases: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
4465
3460
|
"""
|
|
4466
3461
|
Create New User Aliases
|
|
4467
3462
|
|
|
@@ -4479,37 +3474,21 @@ class BrazeApp(APIApplication):
|
|
|
4479
3474
|
User Data
|
|
4480
3475
|
"""
|
|
4481
3476
|
request_body_data = None
|
|
4482
|
-
request_body_data = {
|
|
4483
|
-
|
|
4484
|
-
}
|
|
4485
|
-
request_body_data = {
|
|
4486
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
4487
|
-
}
|
|
3477
|
+
request_body_data = {"user_aliases": user_aliases}
|
|
3478
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
4488
3479
|
url = f"{self.base_url}/users/alias/new"
|
|
4489
3480
|
query_params = {}
|
|
4490
|
-
response = self._post(
|
|
4491
|
-
url,
|
|
4492
|
-
data=request_body_data,
|
|
4493
|
-
params=query_params,
|
|
4494
|
-
content_type="application/json",
|
|
4495
|
-
)
|
|
3481
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
4496
3482
|
response.raise_for_status()
|
|
4497
|
-
if (
|
|
4498
|
-
response.status_code == 204
|
|
4499
|
-
or not response.content
|
|
4500
|
-
or not response.text.strip()
|
|
4501
|
-
):
|
|
3483
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4502
3484
|
return None
|
|
4503
3485
|
try:
|
|
4504
3486
|
return response.json()
|
|
4505
3487
|
except ValueError:
|
|
4506
3488
|
return None
|
|
4507
3489
|
|
|
4508
|
-
def delete_user(
|
|
4509
|
-
self,
|
|
4510
|
-
external_ids: list[str] | None = None,
|
|
4511
|
-
braze_ids: list[str] | None = None,
|
|
4512
|
-
user_aliases: list[dict[str, Any]] | None = None,
|
|
3490
|
+
async def delete_user(
|
|
3491
|
+
self, external_ids: list[str] | None = None, braze_ids: list[str] | None = None, user_aliases: list[dict[str, Any]] | None = None
|
|
4513
3492
|
) -> dict[str, Any]:
|
|
4514
3493
|
"""
|
|
4515
3494
|
Delete Users
|
|
@@ -4530,37 +3509,20 @@ class BrazeApp(APIApplication):
|
|
|
4530
3509
|
User Data
|
|
4531
3510
|
"""
|
|
4532
3511
|
request_body_data = None
|
|
4533
|
-
request_body_data = {
|
|
4534
|
-
|
|
4535
|
-
"braze_ids": braze_ids,
|
|
4536
|
-
"user_aliases": user_aliases,
|
|
4537
|
-
}
|
|
4538
|
-
request_body_data = {
|
|
4539
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
4540
|
-
}
|
|
3512
|
+
request_body_data = {"external_ids": external_ids, "braze_ids": braze_ids, "user_aliases": user_aliases}
|
|
3513
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
4541
3514
|
url = f"{self.base_url}/users/delete"
|
|
4542
3515
|
query_params = {}
|
|
4543
|
-
response = self._post(
|
|
4544
|
-
url,
|
|
4545
|
-
data=request_body_data,
|
|
4546
|
-
params=query_params,
|
|
4547
|
-
content_type="application/json",
|
|
4548
|
-
)
|
|
3516
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
4549
3517
|
response.raise_for_status()
|
|
4550
|
-
if (
|
|
4551
|
-
response.status_code == 204
|
|
4552
|
-
or not response.content
|
|
4553
|
-
or not response.text.strip()
|
|
4554
|
-
):
|
|
3518
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4555
3519
|
return None
|
|
4556
3520
|
try:
|
|
4557
3521
|
return response.json()
|
|
4558
3522
|
except ValueError:
|
|
4559
3523
|
return None
|
|
4560
3524
|
|
|
4561
|
-
def identify_user(
|
|
4562
|
-
self, aliases_to_identify: list[dict[str, Any]] | None = None
|
|
4563
|
-
) -> dict[str, Any]:
|
|
3525
|
+
async def identify_user(self, aliases_to_identify: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
4564
3526
|
"""
|
|
4565
3527
|
Identify Users
|
|
4566
3528
|
|
|
@@ -4578,35 +3540,20 @@ class BrazeApp(APIApplication):
|
|
|
4578
3540
|
User Data
|
|
4579
3541
|
"""
|
|
4580
3542
|
request_body_data = None
|
|
4581
|
-
request_body_data = {
|
|
4582
|
-
|
|
4583
|
-
}
|
|
4584
|
-
request_body_data = {
|
|
4585
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
4586
|
-
}
|
|
3543
|
+
request_body_data = {"aliases_to_identify": aliases_to_identify}
|
|
3544
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
4587
3545
|
url = f"{self.base_url}/users/identify"
|
|
4588
3546
|
query_params = {}
|
|
4589
|
-
response = self._post(
|
|
4590
|
-
url,
|
|
4591
|
-
data=request_body_data,
|
|
4592
|
-
params=query_params,
|
|
4593
|
-
content_type="application/json",
|
|
4594
|
-
)
|
|
3547
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
4595
3548
|
response.raise_for_status()
|
|
4596
|
-
if (
|
|
4597
|
-
response.status_code == 204
|
|
4598
|
-
or not response.content
|
|
4599
|
-
or not response.text.strip()
|
|
4600
|
-
):
|
|
3549
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4601
3550
|
return None
|
|
4602
3551
|
try:
|
|
4603
3552
|
return response.json()
|
|
4604
3553
|
except ValueError:
|
|
4605
3554
|
return None
|
|
4606
3555
|
|
|
4607
|
-
def merge_users_post(
|
|
4608
|
-
self, merge_updates: list[dict[str, Any]] | None = None
|
|
4609
|
-
) -> dict[str, Any]:
|
|
3556
|
+
async def merge_users_post(self, merge_updates: list[dict[str, Any]] | None = None) -> dict[str, Any]:
|
|
4610
3557
|
"""
|
|
4611
3558
|
Merge Users
|
|
4612
3559
|
|
|
@@ -4624,26 +3571,13 @@ class BrazeApp(APIApplication):
|
|
|
4624
3571
|
User Data
|
|
4625
3572
|
"""
|
|
4626
3573
|
request_body_data = None
|
|
4627
|
-
request_body_data = {
|
|
4628
|
-
|
|
4629
|
-
}
|
|
4630
|
-
request_body_data = {
|
|
4631
|
-
k: v for k, v in request_body_data.items() if v is not None
|
|
4632
|
-
}
|
|
3574
|
+
request_body_data = {"merge_updates": merge_updates}
|
|
3575
|
+
request_body_data = {k: v for k, v in request_body_data.items() if v is not None}
|
|
4633
3576
|
url = f"{self.base_url}/users/merge"
|
|
4634
3577
|
query_params = {}
|
|
4635
|
-
response = self._post(
|
|
4636
|
-
url,
|
|
4637
|
-
data=request_body_data,
|
|
4638
|
-
params=query_params,
|
|
4639
|
-
content_type="application/json",
|
|
4640
|
-
)
|
|
3578
|
+
response = self._post(url, data=request_body_data, params=query_params, content_type="application/json")
|
|
4641
3579
|
response.raise_for_status()
|
|
4642
|
-
if (
|
|
4643
|
-
response.status_code == 204
|
|
4644
|
-
or not response.content
|
|
4645
|
-
or not response.text.strip()
|
|
4646
|
-
):
|
|
3580
|
+
if response.status_code == 204 or not response.content or (not response.text.strip()):
|
|
4647
3581
|
return None
|
|
4648
3582
|
try:
|
|
4649
3583
|
return response.json()
|