Skip to main content

onesignal_rust_api/apis/
default_api.rs

1/*
2 * OneSignal
3 *
4 * A powerful way to send personalized messages at scale and build effective customer engagement strategies. Learn more at onesignal.com
5 *
6 * The version of the OpenAPI document: 5.4.0
7 * Contact: devrel@onesignal.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13
14use crate::apis::ResponseContent;
15use super::{Error, configuration};
16
17
18/// struct for typed errors of method [`cancel_notification`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum CancelNotificationError {
22    Status400(crate::models::GenericError),
23    Status404(crate::models::GenericError),
24    Status429(crate::models::RateLimitError),
25    UnknownValue(serde_json::Value),
26}
27
28/// struct for typed errors of method [`copy_template_to_app`]
29#[derive(Debug, Clone, Serialize, Deserialize)]
30#[serde(untagged)]
31pub enum CopyTemplateToAppError {
32    Status400(crate::models::GenericError),
33    UnknownValue(serde_json::Value),
34}
35
36/// struct for typed errors of method [`create_alias`]
37#[derive(Debug, Clone, Serialize, Deserialize)]
38#[serde(untagged)]
39pub enum CreateAliasError {
40    Status400(crate::models::GenericError),
41    Status404(crate::models::GenericError),
42    Status409(crate::models::GenericError),
43    Status429(crate::models::RateLimitError),
44    UnknownValue(serde_json::Value),
45}
46
47/// struct for typed errors of method [`create_alias_by_subscription`]
48#[derive(Debug, Clone, Serialize, Deserialize)]
49#[serde(untagged)]
50pub enum CreateAliasBySubscriptionError {
51    Status400(crate::models::GenericError),
52    Status404(crate::models::GenericError),
53    Status409(crate::models::GenericError),
54    Status429(crate::models::RateLimitError),
55    UnknownValue(serde_json::Value),
56}
57
58/// struct for typed errors of method [`create_api_key`]
59#[derive(Debug, Clone, Serialize, Deserialize)]
60#[serde(untagged)]
61pub enum CreateApiKeyError {
62    Status400(crate::models::GenericError),
63    UnknownValue(serde_json::Value),
64}
65
66/// struct for typed errors of method [`create_app`]
67#[derive(Debug, Clone, Serialize, Deserialize)]
68#[serde(untagged)]
69pub enum CreateAppError {
70    Status400(crate::models::GenericError),
71    Status429(crate::models::RateLimitError),
72    UnknownValue(serde_json::Value),
73}
74
75/// struct for typed errors of method [`create_custom_events`]
76#[derive(Debug, Clone, Serialize, Deserialize)]
77#[serde(untagged)]
78pub enum CreateCustomEventsError {
79    Status400(crate::models::GenericError),
80    Status401(crate::models::GenericError),
81    Status429(crate::models::RateLimitError),
82    UnknownValue(serde_json::Value),
83}
84
85/// struct for typed errors of method [`create_notification`]
86#[derive(Debug, Clone, Serialize, Deserialize)]
87#[serde(untagged)]
88pub enum CreateNotificationError {
89    Status400(crate::models::GenericError),
90    Status429(crate::models::RateLimitError),
91    UnknownValue(serde_json::Value),
92}
93
94/// struct for typed errors of method [`create_segment`]
95#[derive(Debug, Clone, Serialize, Deserialize)]
96#[serde(untagged)]
97pub enum CreateSegmentError {
98    Status400(crate::models::GenericError),
99    Status409(crate::models::CreateSegmentConflictResponse),
100    Status429(crate::models::RateLimitError),
101    UnknownValue(serde_json::Value),
102}
103
104/// struct for typed errors of method [`create_subscription`]
105#[derive(Debug, Clone, Serialize, Deserialize)]
106#[serde(untagged)]
107pub enum CreateSubscriptionError {
108    Status400(crate::models::GenericError),
109    Status404(crate::models::GenericError),
110    Status409(crate::models::GenericError),
111    Status429(crate::models::RateLimitError),
112    UnknownValue(serde_json::Value),
113}
114
115/// struct for typed errors of method [`create_template`]
116#[derive(Debug, Clone, Serialize, Deserialize)]
117#[serde(untagged)]
118pub enum CreateTemplateError {
119    Status400(crate::models::GenericError),
120    Status422(crate::models::GenericError),
121    UnknownValue(serde_json::Value),
122}
123
124/// struct for typed errors of method [`create_user`]
125#[derive(Debug, Clone, Serialize, Deserialize)]
126#[serde(untagged)]
127pub enum CreateUserError {
128    Status400(crate::models::GenericError),
129    Status409(crate::models::CreateUserConflictResponse),
130    Status429(crate::models::RateLimitError),
131    UnknownValue(serde_json::Value),
132}
133
134/// struct for typed errors of method [`delete_alias`]
135#[derive(Debug, Clone, Serialize, Deserialize)]
136#[serde(untagged)]
137pub enum DeleteAliasError {
138    Status400(crate::models::GenericError),
139    Status404(crate::models::GenericError),
140    Status409(crate::models::GenericError),
141    Status429(crate::models::RateLimitError),
142    UnknownValue(serde_json::Value),
143}
144
145/// struct for typed errors of method [`delete_api_key`]
146#[derive(Debug, Clone, Serialize, Deserialize)]
147#[serde(untagged)]
148pub enum DeleteApiKeyError {
149    Status400(crate::models::GenericError),
150    UnknownValue(serde_json::Value),
151}
152
153/// struct for typed errors of method [`delete_segment`]
154#[derive(Debug, Clone, Serialize, Deserialize)]
155#[serde(untagged)]
156pub enum DeleteSegmentError {
157    Status400(crate::models::GenericError),
158    Status404(crate::models::GenericSuccessBoolResponse),
159    Status429(crate::models::RateLimitError),
160    UnknownValue(serde_json::Value),
161}
162
163/// struct for typed errors of method [`delete_subscription`]
164#[derive(Debug, Clone, Serialize, Deserialize)]
165#[serde(untagged)]
166pub enum DeleteSubscriptionError {
167    Status400(crate::models::GenericError),
168    Status404(crate::models::GenericError),
169    Status409(crate::models::GenericError),
170    Status429(crate::models::RateLimitError),
171    UnknownValue(serde_json::Value),
172}
173
174/// struct for typed errors of method [`delete_template`]
175#[derive(Debug, Clone, Serialize, Deserialize)]
176#[serde(untagged)]
177pub enum DeleteTemplateError {
178    Status400(crate::models::GenericError),
179    Status404(crate::models::GenericError),
180    UnknownValue(serde_json::Value),
181}
182
183/// struct for typed errors of method [`delete_user`]
184#[derive(Debug, Clone, Serialize, Deserialize)]
185#[serde(untagged)]
186pub enum DeleteUserError {
187    Status400(crate::models::GenericError),
188    Status409(crate::models::GenericError),
189    Status429(crate::models::RateLimitError),
190    UnknownValue(serde_json::Value),
191}
192
193/// struct for typed errors of method [`export_events`]
194#[derive(Debug, Clone, Serialize, Deserialize)]
195#[serde(untagged)]
196pub enum ExportEventsError {
197    Status400(crate::models::GenericError),
198    Status404(crate::models::GenericError),
199    Status429(crate::models::RateLimitError),
200    UnknownValue(serde_json::Value),
201}
202
203/// struct for typed errors of method [`export_subscriptions`]
204#[derive(Debug, Clone, Serialize, Deserialize)]
205#[serde(untagged)]
206pub enum ExportSubscriptionsError {
207    Status400(crate::models::GenericError),
208    Status429(crate::models::RateLimitError),
209    UnknownValue(serde_json::Value),
210}
211
212/// struct for typed errors of method [`get_aliases`]
213#[derive(Debug, Clone, Serialize, Deserialize)]
214#[serde(untagged)]
215pub enum GetAliasesError {
216    Status400(crate::models::GenericError),
217    Status404(crate::models::GenericError),
218    Status429(crate::models::RateLimitError),
219    UnknownValue(serde_json::Value),
220}
221
222/// struct for typed errors of method [`get_aliases_by_subscription`]
223#[derive(Debug, Clone, Serialize, Deserialize)]
224#[serde(untagged)]
225pub enum GetAliasesBySubscriptionError {
226    Status400(crate::models::GenericError),
227    Status404(crate::models::GenericError),
228    UnknownValue(serde_json::Value),
229}
230
231/// struct for typed errors of method [`get_app`]
232#[derive(Debug, Clone, Serialize, Deserialize)]
233#[serde(untagged)]
234pub enum GetAppError {
235    Status400(crate::models::GenericError),
236    Status429(crate::models::RateLimitError),
237    UnknownValue(serde_json::Value),
238}
239
240/// struct for typed errors of method [`get_apps`]
241#[derive(Debug, Clone, Serialize, Deserialize)]
242#[serde(untagged)]
243pub enum GetAppsError {
244    Status400(crate::models::GenericError),
245    Status429(crate::models::RateLimitError),
246    UnknownValue(serde_json::Value),
247}
248
249/// struct for typed errors of method [`get_notification`]
250#[derive(Debug, Clone, Serialize, Deserialize)]
251#[serde(untagged)]
252pub enum GetNotificationError {
253    Status400(crate::models::GenericError),
254    Status404(crate::models::GenericError),
255    Status429(crate::models::RateLimitError),
256    UnknownValue(serde_json::Value),
257}
258
259/// struct for typed errors of method [`get_notification_history`]
260#[derive(Debug, Clone, Serialize, Deserialize)]
261#[serde(untagged)]
262pub enum GetNotificationHistoryError {
263    Status400(crate::models::GenericError),
264    Status404(crate::models::GenericError),
265    Status429(crate::models::RateLimitError),
266    UnknownValue(serde_json::Value),
267}
268
269/// struct for typed errors of method [`get_notifications`]
270#[derive(Debug, Clone, Serialize, Deserialize)]
271#[serde(untagged)]
272pub enum GetNotificationsError {
273    Status400(crate::models::GenericError),
274    Status429(crate::models::RateLimitError),
275    UnknownValue(serde_json::Value),
276}
277
278/// struct for typed errors of method [`get_outcomes`]
279#[derive(Debug, Clone, Serialize, Deserialize)]
280#[serde(untagged)]
281pub enum GetOutcomesError {
282    Status400(crate::models::GenericError),
283    Status429(crate::models::RateLimitError),
284    UnknownValue(serde_json::Value),
285}
286
287/// struct for typed errors of method [`get_segments`]
288#[derive(Debug, Clone, Serialize, Deserialize)]
289#[serde(untagged)]
290pub enum GetSegmentsError {
291    Status400(crate::models::GenericError),
292    Status429(crate::models::RateLimitError),
293    UnknownValue(serde_json::Value),
294}
295
296/// struct for typed errors of method [`get_user`]
297#[derive(Debug, Clone, Serialize, Deserialize)]
298#[serde(untagged)]
299pub enum GetUserError {
300    Status400(crate::models::GenericError),
301    Status404(crate::models::GenericError),
302    Status429(crate::models::RateLimitError),
303    UnknownValue(serde_json::Value),
304}
305
306/// struct for typed errors of method [`rotate_api_key`]
307#[derive(Debug, Clone, Serialize, Deserialize)]
308#[serde(untagged)]
309pub enum RotateApiKeyError {
310    Status400(crate::models::GenericError),
311    UnknownValue(serde_json::Value),
312}
313
314/// struct for typed errors of method [`start_live_activity`]
315#[derive(Debug, Clone, Serialize, Deserialize)]
316#[serde(untagged)]
317pub enum StartLiveActivityError {
318    Status400(crate::models::GenericError),
319    Status429(crate::models::RateLimitError),
320    UnknownValue(serde_json::Value),
321}
322
323/// struct for typed errors of method [`transfer_subscription`]
324#[derive(Debug, Clone, Serialize, Deserialize)]
325#[serde(untagged)]
326pub enum TransferSubscriptionError {
327    Status400(crate::models::GenericError),
328    Status404(crate::models::GenericError),
329    Status409(crate::models::GenericError),
330    Status429(crate::models::RateLimitError),
331    UnknownValue(serde_json::Value),
332}
333
334/// struct for typed errors of method [`unsubscribe_email_with_token`]
335#[derive(Debug, Clone, Serialize, Deserialize)]
336#[serde(untagged)]
337pub enum UnsubscribeEmailWithTokenError {
338    Status400(crate::models::GenericError),
339    Status429(crate::models::RateLimitError),
340    UnknownValue(serde_json::Value),
341}
342
343/// struct for typed errors of method [`update_api_key`]
344#[derive(Debug, Clone, Serialize, Deserialize)]
345#[serde(untagged)]
346pub enum UpdateApiKeyError {
347    Status400(crate::models::GenericError),
348    UnknownValue(serde_json::Value),
349}
350
351/// struct for typed errors of method [`update_app`]
352#[derive(Debug, Clone, Serialize, Deserialize)]
353#[serde(untagged)]
354pub enum UpdateAppError {
355    Status400(crate::models::GenericError),
356    Status429(crate::models::RateLimitError),
357    UnknownValue(serde_json::Value),
358}
359
360/// struct for typed errors of method [`update_live_activity`]
361#[derive(Debug, Clone, Serialize, Deserialize)]
362#[serde(untagged)]
363pub enum UpdateLiveActivityError {
364    Status400(crate::models::GenericError),
365    Status429(crate::models::RateLimitError),
366    UnknownValue(serde_json::Value),
367}
368
369/// struct for typed errors of method [`update_subscription`]
370#[derive(Debug, Clone, Serialize, Deserialize)]
371#[serde(untagged)]
372pub enum UpdateSubscriptionError {
373    Status400(crate::models::GenericError),
374    Status404(crate::models::GenericError),
375    Status409(crate::models::GenericError),
376    Status429(crate::models::RateLimitError),
377    UnknownValue(serde_json::Value),
378}
379
380/// struct for typed errors of method [`update_subscription_by_token`]
381#[derive(Debug, Clone, Serialize, Deserialize)]
382#[serde(untagged)]
383pub enum UpdateSubscriptionByTokenError {
384    Status400(crate::models::GenericError),
385    Status404(crate::models::GenericError),
386    UnknownValue(serde_json::Value),
387}
388
389/// struct for typed errors of method [`update_template`]
390#[derive(Debug, Clone, Serialize, Deserialize)]
391#[serde(untagged)]
392pub enum UpdateTemplateError {
393    Status400(crate::models::GenericError),
394    UnknownValue(serde_json::Value),
395}
396
397/// struct for typed errors of method [`update_user`]
398#[derive(Debug, Clone, Serialize, Deserialize)]
399#[serde(untagged)]
400pub enum UpdateUserError {
401    Status400(crate::models::GenericError),
402    Status409(crate::models::GenericError),
403    Status429(crate::models::RateLimitError),
404    UnknownValue(serde_json::Value),
405}
406
407/// struct for typed errors of method [`view_api_keys`]
408#[derive(Debug, Clone, Serialize, Deserialize)]
409#[serde(untagged)]
410pub enum ViewApiKeysError {
411    Status400(crate::models::GenericError),
412    UnknownValue(serde_json::Value),
413}
414
415/// struct for typed errors of method [`view_template`]
416#[derive(Debug, Clone, Serialize, Deserialize)]
417#[serde(untagged)]
418pub enum ViewTemplateError {
419    Status400(crate::models::GenericError),
420    Status404(crate::models::GenericError),
421    UnknownValue(serde_json::Value),
422}
423
424/// struct for typed errors of method [`view_templates`]
425#[derive(Debug, Clone, Serialize, Deserialize)]
426#[serde(untagged)]
427pub enum ViewTemplatesError {
428    Status400(crate::models::GenericError),
429    Status429(crate::models::RateLimitError),
430    UnknownValue(serde_json::Value),
431}
432
433
434/// Used to stop a scheduled or currently outgoing notification
435pub async fn cancel_notification(configuration: &configuration::Configuration, app_id: &str, notification_id: &str) -> Result<crate::models::GenericSuccessBoolResponse, Error<CancelNotificationError>> {
436    let configuration = configuration;
437
438    let client = &configuration.client;
439
440    let uri_str = format!("{}/notifications/{notification_id}", configuration.base_path, notification_id=crate::apis::urlencode(notification_id));
441    let mut req_builder = client.request(reqwest::Method::DELETE, uri_str.as_str());
442
443    req_builder = req_builder.query(&[("app_id", &app_id.to_string())]);
444    if let Some(ref user_agent) = configuration.user_agent {
445        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
446    }
447
448    // Adds a telemetry header
449    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
450
451    if let Some(ref token) = configuration.rest_api_key_token {
452        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
453    }
454
455    let req = req_builder.build()?;
456    let resp = client.execute(req).await?;
457
458    let status = resp.status();
459    let content = resp.text().await?;
460
461    if !status.is_client_error() && !status.is_server_error() {
462        serde_json::from_str(&content).map_err(Error::from)
463    } else {
464        let entity: Option<CancelNotificationError> = serde_json::from_str(&content).ok();
465        let error = ResponseContent { status: status, content: content, entity: entity };
466        Err(Error::ResponseError(error))
467    }
468}
469
470/// Copy a template to a destination app.
471pub async fn copy_template_to_app(configuration: &configuration::Configuration, template_id: &str, app_id: &str, copy_template_request: crate::models::CopyTemplateRequest) -> Result<crate::models::TemplateResource, Error<CopyTemplateToAppError>> {
472    let configuration = configuration;
473
474    let client = &configuration.client;
475
476    let uri_str = format!("{}/templates/{template_id}/copy_to_app", configuration.base_path, template_id=crate::apis::urlencode(template_id));
477    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
478
479    req_builder = req_builder.query(&[("app_id", &app_id.to_string())]);
480    if let Some(ref user_agent) = configuration.user_agent {
481        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
482    }
483
484    // Adds a telemetry header
485    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
486
487    if let Some(ref token) = configuration.organization_api_key_token {
488        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
489    }
490    req_builder = req_builder.json(&copy_template_request);
491
492    let req = req_builder.build()?;
493    let resp = client.execute(req).await?;
494
495    let status = resp.status();
496    let content = resp.text().await?;
497
498    if !status.is_client_error() && !status.is_server_error() {
499        serde_json::from_str(&content).map_err(Error::from)
500    } else {
501        let entity: Option<CopyTemplateToAppError> = serde_json::from_str(&content).ok();
502        let error = ResponseContent { status: status, content: content, entity: entity };
503        Err(Error::ResponseError(error))
504    }
505}
506
507/// Upserts one or more Aliases to an existing User identified by (:alias_label, :alias_id).
508pub async fn create_alias(configuration: &configuration::Configuration, app_id: &str, alias_label: &str, alias_id: &str, user_identity_body: crate::models::UserIdentityBody) -> Result<crate::models::UserIdentityBody, Error<CreateAliasError>> {
509    let configuration = configuration;
510
511    let client = &configuration.client;
512
513    let uri_str = format!("{}/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity", configuration.base_path, app_id=crate::apis::urlencode(app_id), alias_label=crate::apis::urlencode(alias_label), alias_id=crate::apis::urlencode(alias_id));
514    let mut req_builder = client.request(reqwest::Method::PATCH, uri_str.as_str());
515
516    if let Some(ref user_agent) = configuration.user_agent {
517        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
518    }
519
520    // Adds a telemetry header
521    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
522
523    if let Some(ref token) = configuration.rest_api_key_token {
524        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
525    }
526    req_builder = req_builder.json(&user_identity_body);
527
528    let req = req_builder.build()?;
529    let resp = client.execute(req).await?;
530
531    let status = resp.status();
532    let content = resp.text().await?;
533
534    if !status.is_client_error() && !status.is_server_error() {
535        serde_json::from_str(&content).map_err(Error::from)
536    } else {
537        let entity: Option<CreateAliasError> = serde_json::from_str(&content).ok();
538        let error = ResponseContent { status: status, content: content, entity: entity };
539        Err(Error::ResponseError(error))
540    }
541}
542
543/// Upserts one or more Aliases for the User identified by :subscription_id.
544pub async fn create_alias_by_subscription(configuration: &configuration::Configuration, app_id: &str, subscription_id: &str, user_identity_body: crate::models::UserIdentityBody) -> Result<crate::models::UserIdentityBody, Error<CreateAliasBySubscriptionError>> {
545    let configuration = configuration;
546
547    let client = &configuration.client;
548
549    let uri_str = format!("{}/apps/{app_id}/subscriptions/{subscription_id}/user/identity", configuration.base_path, app_id=crate::apis::urlencode(app_id), subscription_id=crate::apis::urlencode(subscription_id));
550    let mut req_builder = client.request(reqwest::Method::PATCH, uri_str.as_str());
551
552    if let Some(ref user_agent) = configuration.user_agent {
553        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
554    }
555
556    // Adds a telemetry header
557    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
558
559    if let Some(ref token) = configuration.rest_api_key_token {
560        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
561    }
562    req_builder = req_builder.json(&user_identity_body);
563
564    let req = req_builder.build()?;
565    let resp = client.execute(req).await?;
566
567    let status = resp.status();
568    let content = resp.text().await?;
569
570    if !status.is_client_error() && !status.is_server_error() {
571        serde_json::from_str(&content).map_err(Error::from)
572    } else {
573        let entity: Option<CreateAliasBySubscriptionError> = serde_json::from_str(&content).ok();
574        let error = ResponseContent { status: status, content: content, entity: entity };
575        Err(Error::ResponseError(error))
576    }
577}
578
579/// Use this API to create a new App API Key (also called a Rich Authentication Token) for a specific OneSignal app. These keys are used to authenticate API requests at the app level and offer enhanced security features, including optional IP allowlisting.
580pub async fn create_api_key(configuration: &configuration::Configuration, app_id: &str, create_api_key_request: crate::models::CreateApiKeyRequest) -> Result<crate::models::CreateApiKeyResponse, Error<CreateApiKeyError>> {
581    let configuration = configuration;
582
583    let client = &configuration.client;
584
585    let uri_str = format!("{}/apps/{app_id}/auth/tokens", configuration.base_path, app_id=crate::apis::urlencode(app_id));
586    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
587
588    if let Some(ref user_agent) = configuration.user_agent {
589        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
590    }
591
592    // Adds a telemetry header
593    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
594
595    if let Some(ref token) = configuration.organization_api_key_token {
596        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
597    }
598    req_builder = req_builder.json(&create_api_key_request);
599
600    let req = req_builder.build()?;
601    let resp = client.execute(req).await?;
602
603    let status = resp.status();
604    let content = resp.text().await?;
605
606    if !status.is_client_error() && !status.is_server_error() {
607        serde_json::from_str(&content).map_err(Error::from)
608    } else {
609        let entity: Option<CreateApiKeyError> = serde_json::from_str(&content).ok();
610        let error = ResponseContent { status: status, content: content, entity: entity };
611        Err(Error::ResponseError(error))
612    }
613}
614
615/// Creates a new OneSignal app
616pub async fn create_app(configuration: &configuration::Configuration, app: crate::models::App) -> Result<crate::models::App, Error<CreateAppError>> {
617    let configuration = configuration;
618
619    let client = &configuration.client;
620
621    let uri_str = format!("{}/apps", configuration.base_path);
622    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
623
624    if let Some(ref user_agent) = configuration.user_agent {
625        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
626    }
627
628    // Adds a telemetry header
629    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
630
631    if let Some(ref token) = configuration.organization_api_key_token {
632        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
633    }
634    req_builder = req_builder.json(&app);
635
636    let req = req_builder.build()?;
637    let resp = client.execute(req).await?;
638
639    let status = resp.status();
640    let content = resp.text().await?;
641
642    if !status.is_client_error() && !status.is_server_error() {
643        serde_json::from_str(&content).map_err(Error::from)
644    } else {
645        let entity: Option<CreateAppError> = serde_json::from_str(&content).ok();
646        let error = ResponseContent { status: status, content: content, entity: entity };
647        Err(Error::ResponseError(error))
648    }
649}
650
651/// The Custom Events API allows you to record user events. Custom events can represent any action users take in your application, such as completing a purchase, viewing content, or achieving milestones.
652pub async fn create_custom_events(configuration: &configuration::Configuration, app_id: &str, custom_events_request: crate::models::CustomEventsRequest) -> Result<serde_json::Value, Error<CreateCustomEventsError>> {
653    let configuration = configuration;
654
655    let client = &configuration.client;
656
657    let uri_str = format!("{}/apps/{app_id}/integrations/custom_events", configuration.base_path, app_id=crate::apis::urlencode(app_id));
658    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
659
660    if let Some(ref user_agent) = configuration.user_agent {
661        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
662    }
663
664    // Adds a telemetry header
665    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
666
667    if let Some(ref token) = configuration.rest_api_key_token {
668        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
669    }
670    req_builder = req_builder.json(&custom_events_request);
671
672    let req = req_builder.build()?;
673    let resp = client.execute(req).await?;
674
675    let status = resp.status();
676    let content = resp.text().await?;
677
678    if !status.is_client_error() && !status.is_server_error() {
679        serde_json::from_str(&content).map_err(Error::from)
680    } else {
681        let entity: Option<CreateCustomEventsError> = serde_json::from_str(&content).ok();
682        let error = ResponseContent { status: status, content: content, entity: entity };
683        Err(Error::ResponseError(error))
684    }
685}
686
687/// Sends notifications to your users 
688pub async fn create_notification(configuration: &configuration::Configuration, notification: crate::models::Notification) -> Result<crate::models::CreateNotificationSuccessResponse, Error<CreateNotificationError>> {
689    let configuration = configuration;
690
691    let client = &configuration.client;
692
693    let uri_str = format!("{}/notifications", configuration.base_path);
694    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
695
696    if let Some(ref user_agent) = configuration.user_agent {
697        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
698    }
699
700    // Adds a telemetry header
701    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
702
703    if let Some(ref token) = configuration.rest_api_key_token {
704        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
705    }
706    req_builder = req_builder.json(&notification);
707
708    let req = req_builder.build()?;
709    let resp = client.execute(req).await?;
710
711    let status = resp.status();
712    let content = resp.text().await?;
713
714    if !status.is_client_error() && !status.is_server_error() {
715        serde_json::from_str(&content).map_err(Error::from)
716    } else {
717        let entity: Option<CreateNotificationError> = serde_json::from_str(&content).ok();
718        let error = ResponseContent { status: status, content: content, entity: entity };
719        Err(Error::ResponseError(error))
720    }
721}
722
723/// Create a segment visible and usable in the dashboard and API - Required: OneSignal Paid Plan The Create Segment method is used when you want your server to programmatically create a segment instead of using the OneSignal Dashboard UI. Just like creating Segments from the dashboard you can pass in filters with multiple \"AND\" or \"OR\" operator's. &#x1F6A7; Does Not Update Segments This endpoint will only create segments, it does not edit or update currently created Segments. You will need to use the Delete Segment endpoint and re-create it with this endpoint to edit. 
724pub async fn create_segment(configuration: &configuration::Configuration, app_id: &str, segment: Option<crate::models::Segment>) -> Result<crate::models::CreateSegmentSuccessResponse, Error<CreateSegmentError>> {
725    let configuration = configuration;
726
727    let client = &configuration.client;
728
729    let uri_str = format!("{}/apps/{app_id}/segments", configuration.base_path, app_id=crate::apis::urlencode(app_id));
730    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
731
732    if let Some(ref user_agent) = configuration.user_agent {
733        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
734    }
735
736    // Adds a telemetry header
737    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
738
739    if let Some(ref token) = configuration.rest_api_key_token {
740        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
741    }
742    req_builder = req_builder.json(&segment);
743
744    let req = req_builder.build()?;
745    let resp = client.execute(req).await?;
746
747    let status = resp.status();
748    let content = resp.text().await?;
749
750    if !status.is_client_error() && !status.is_server_error() {
751        serde_json::from_str(&content).map_err(Error::from)
752    } else {
753        let entity: Option<CreateSegmentError> = serde_json::from_str(&content).ok();
754        let error = ResponseContent { status: status, content: content, entity: entity };
755        Err(Error::ResponseError(error))
756    }
757}
758
759/// Creates a new Subscription under the User provided. Useful to add email addresses and SMS numbers to the User.
760pub async fn create_subscription(configuration: &configuration::Configuration, app_id: &str, alias_label: &str, alias_id: &str, subscription_body: crate::models::SubscriptionBody) -> Result<crate::models::SubscriptionBody, Error<CreateSubscriptionError>> {
761    let configuration = configuration;
762
763    let client = &configuration.client;
764
765    let uri_str = format!("{}/apps/{app_id}/users/by/{alias_label}/{alias_id}/subscriptions", configuration.base_path, app_id=crate::apis::urlencode(app_id), alias_label=crate::apis::urlencode(alias_label), alias_id=crate::apis::urlencode(alias_id));
766    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
767
768    if let Some(ref user_agent) = configuration.user_agent {
769        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
770    }
771
772    // Adds a telemetry header
773    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
774
775    if let Some(ref token) = configuration.rest_api_key_token {
776        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
777    }
778    req_builder = req_builder.json(&subscription_body);
779
780    let req = req_builder.build()?;
781    let resp = client.execute(req).await?;
782
783    let status = resp.status();
784    let content = resp.text().await?;
785
786    if !status.is_client_error() && !status.is_server_error() {
787        serde_json::from_str(&content).map_err(Error::from)
788    } else {
789        let entity: Option<CreateSubscriptionError> = serde_json::from_str(&content).ok();
790        let error = ResponseContent { status: status, content: content, entity: entity };
791        Err(Error::ResponseError(error))
792    }
793}
794
795/// Create reusable message templates for push, email, and SMS channels.
796pub async fn create_template(configuration: &configuration::Configuration, create_template_request: crate::models::CreateTemplateRequest) -> Result<crate::models::TemplateResource, Error<CreateTemplateError>> {
797    let configuration = configuration;
798
799    let client = &configuration.client;
800
801    let uri_str = format!("{}/templates", configuration.base_path);
802    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
803
804    if let Some(ref user_agent) = configuration.user_agent {
805        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
806    }
807
808    // Adds a telemetry header
809    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
810
811    if let Some(ref token) = configuration.rest_api_key_token {
812        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
813    }
814    req_builder = req_builder.json(&create_template_request);
815
816    let req = req_builder.build()?;
817    let resp = client.execute(req).await?;
818
819    let status = resp.status();
820    let content = resp.text().await?;
821
822    if !status.is_client_error() && !status.is_server_error() {
823        serde_json::from_str(&content).map_err(Error::from)
824    } else {
825        let entity: Option<CreateTemplateError> = serde_json::from_str(&content).ok();
826        let error = ResponseContent { status: status, content: content, entity: entity };
827        Err(Error::ResponseError(error))
828    }
829}
830
831/// Creates a User, optionally Subscriptions owned by the User as well as Aliases. Aliases provided in the payload will be used to look up an existing User.
832pub async fn create_user(configuration: &configuration::Configuration, app_id: &str, user: crate::models::User) -> Result<crate::models::User, Error<CreateUserError>> {
833    let configuration = configuration;
834
835    let client = &configuration.client;
836
837    let uri_str = format!("{}/apps/{app_id}/users", configuration.base_path, app_id=crate::apis::urlencode(app_id));
838    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
839
840    if let Some(ref user_agent) = configuration.user_agent {
841        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
842    }
843
844    // Adds a telemetry header
845    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
846
847    if let Some(ref token) = configuration.rest_api_key_token {
848        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
849    }
850    req_builder = req_builder.json(&user);
851
852    let req = req_builder.build()?;
853    let resp = client.execute(req).await?;
854
855    let status = resp.status();
856    let content = resp.text().await?;
857
858    if !status.is_client_error() && !status.is_server_error() {
859        serde_json::from_str(&content).map_err(Error::from)
860    } else {
861        let entity: Option<CreateUserError> = serde_json::from_str(&content).ok();
862        let error = ResponseContent { status: status, content: content, entity: entity };
863        Err(Error::ResponseError(error))
864    }
865}
866
867/// Deletes an alias by alias label
868pub async fn delete_alias(configuration: &configuration::Configuration, app_id: &str, alias_label: &str, alias_id: &str, alias_label_to_delete: &str) -> Result<crate::models::UserIdentityBody, Error<DeleteAliasError>> {
869    let configuration = configuration;
870
871    let client = &configuration.client;
872
873    let uri_str = format!("{}/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity/{alias_label_to_delete}", configuration.base_path, app_id=crate::apis::urlencode(app_id), alias_label=crate::apis::urlencode(alias_label), alias_id=crate::apis::urlencode(alias_id), alias_label_to_delete=crate::apis::urlencode(alias_label_to_delete));
874    let mut req_builder = client.request(reqwest::Method::DELETE, uri_str.as_str());
875
876    if let Some(ref user_agent) = configuration.user_agent {
877        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
878    }
879
880    // Adds a telemetry header
881    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
882
883    if let Some(ref token) = configuration.rest_api_key_token {
884        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
885    }
886
887    let req = req_builder.build()?;
888    let resp = client.execute(req).await?;
889
890    let status = resp.status();
891    let content = resp.text().await?;
892
893    if !status.is_client_error() && !status.is_server_error() {
894        serde_json::from_str(&content).map_err(Error::from)
895    } else {
896        let entity: Option<DeleteAliasError> = serde_json::from_str(&content).ok();
897        let error = ResponseContent { status: status, content: content, entity: entity };
898        Err(Error::ResponseError(error))
899    }
900}
901
902/// Delete a specific Rich Authentication Token (App API Key) for a OneSignal app. Requires your Organization API Key and the token’s unique ID, not the token value itself.
903pub async fn delete_api_key(configuration: &configuration::Configuration, app_id: &str, token_id: &str) -> Result<serde_json::Value, Error<DeleteApiKeyError>> {
904    let configuration = configuration;
905
906    let client = &configuration.client;
907
908    let uri_str = format!("{}/apps/{app_id}/auth/tokens/{token_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id), token_id=crate::apis::urlencode(token_id));
909    let mut req_builder = client.request(reqwest::Method::DELETE, uri_str.as_str());
910
911    if let Some(ref user_agent) = configuration.user_agent {
912        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
913    }
914
915    // Adds a telemetry header
916    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
917
918    if let Some(ref token) = configuration.organization_api_key_token {
919        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
920    }
921
922    let req = req_builder.build()?;
923    let resp = client.execute(req).await?;
924
925    let status = resp.status();
926    let content = resp.text().await?;
927
928    if !status.is_client_error() && !status.is_server_error() {
929        serde_json::from_str(&content).map_err(Error::from)
930    } else {
931        let entity: Option<DeleteApiKeyError> = serde_json::from_str(&content).ok();
932        let error = ResponseContent { status: status, content: content, entity: entity };
933        Err(Error::ResponseError(error))
934    }
935}
936
937/// Delete a segment (not user devices) - Required: OneSignal Paid Plan You can delete a segment under your app by calling this API. You must provide an API key in the Authorization header that has admin access on the app. The segment_id can be found in the URL of the segment when viewing it in the dashboard. 
938pub async fn delete_segment(configuration: &configuration::Configuration, app_id: &str, segment_id: &str) -> Result<crate::models::GenericSuccessBoolResponse, Error<DeleteSegmentError>> {
939    let configuration = configuration;
940
941    let client = &configuration.client;
942
943    let uri_str = format!("{}/apps/{app_id}/segments/{segment_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id), segment_id=crate::apis::urlencode(segment_id));
944    let mut req_builder = client.request(reqwest::Method::DELETE, uri_str.as_str());
945
946    if let Some(ref user_agent) = configuration.user_agent {
947        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
948    }
949
950    // Adds a telemetry header
951    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
952
953    if let Some(ref token) = configuration.rest_api_key_token {
954        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
955    }
956
957    let req = req_builder.build()?;
958    let resp = client.execute(req).await?;
959
960    let status = resp.status();
961    let content = resp.text().await?;
962
963    if !status.is_client_error() && !status.is_server_error() {
964        serde_json::from_str(&content).map_err(Error::from)
965    } else {
966        let entity: Option<DeleteSegmentError> = serde_json::from_str(&content).ok();
967        let error = ResponseContent { status: status, content: content, entity: entity };
968        Err(Error::ResponseError(error))
969    }
970}
971
972/// Deletes the Subscription.
973pub async fn delete_subscription(configuration: &configuration::Configuration, app_id: &str, subscription_id: &str) -> Result<(), Error<DeleteSubscriptionError>> {
974    let configuration = configuration;
975
976    let client = &configuration.client;
977
978    let uri_str = format!("{}/apps/{app_id}/subscriptions/{subscription_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id), subscription_id=crate::apis::urlencode(subscription_id));
979    let mut req_builder = client.request(reqwest::Method::DELETE, uri_str.as_str());
980
981    if let Some(ref user_agent) = configuration.user_agent {
982        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
983    }
984
985    // Adds a telemetry header
986    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
987
988    if let Some(ref token) = configuration.rest_api_key_token {
989        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
990    }
991
992    let req = req_builder.build()?;
993    let resp = client.execute(req).await?;
994
995    let status = resp.status();
996    let content = resp.text().await?;
997
998    if !status.is_client_error() && !status.is_server_error() {
999        Ok(())
1000    } else {
1001        let entity: Option<DeleteSubscriptionError> = serde_json::from_str(&content).ok();
1002        let error = ResponseContent { status: status, content: content, entity: entity };
1003        Err(Error::ResponseError(error))
1004    }
1005}
1006
1007/// Delete a template by id.
1008pub async fn delete_template(configuration: &configuration::Configuration, template_id: &str, app_id: &str) -> Result<crate::models::GenericSuccessBoolResponse, Error<DeleteTemplateError>> {
1009    let configuration = configuration;
1010
1011    let client = &configuration.client;
1012
1013    let uri_str = format!("{}/templates/{template_id}", configuration.base_path, template_id=crate::apis::urlencode(template_id));
1014    let mut req_builder = client.request(reqwest::Method::DELETE, uri_str.as_str());
1015
1016    req_builder = req_builder.query(&[("app_id", &app_id.to_string())]);
1017    if let Some(ref user_agent) = configuration.user_agent {
1018        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1019    }
1020
1021    // Adds a telemetry header
1022    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1023
1024    if let Some(ref token) = configuration.rest_api_key_token {
1025        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1026    }
1027
1028    let req = req_builder.build()?;
1029    let resp = client.execute(req).await?;
1030
1031    let status = resp.status();
1032    let content = resp.text().await?;
1033
1034    if !status.is_client_error() && !status.is_server_error() {
1035        serde_json::from_str(&content).map_err(Error::from)
1036    } else {
1037        let entity: Option<DeleteTemplateError> = serde_json::from_str(&content).ok();
1038        let error = ResponseContent { status: status, content: content, entity: entity };
1039        Err(Error::ResponseError(error))
1040    }
1041}
1042
1043/// Removes the User identified by (:alias_label, :alias_id), and all Subscriptions and Aliases
1044pub async fn delete_user(configuration: &configuration::Configuration, app_id: &str, alias_label: &str, alias_id: &str) -> Result<(), Error<DeleteUserError>> {
1045    let configuration = configuration;
1046
1047    let client = &configuration.client;
1048
1049    let uri_str = format!("{}/apps/{app_id}/users/by/{alias_label}/{alias_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id), alias_label=crate::apis::urlencode(alias_label), alias_id=crate::apis::urlencode(alias_id));
1050    let mut req_builder = client.request(reqwest::Method::DELETE, uri_str.as_str());
1051
1052    if let Some(ref user_agent) = configuration.user_agent {
1053        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1054    }
1055
1056    // Adds a telemetry header
1057    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1058
1059    if let Some(ref token) = configuration.rest_api_key_token {
1060        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1061    }
1062
1063    let req = req_builder.build()?;
1064    let resp = client.execute(req).await?;
1065
1066    let status = resp.status();
1067    let content = resp.text().await?;
1068
1069    if !status.is_client_error() && !status.is_server_error() {
1070        Ok(())
1071    } else {
1072        let entity: Option<DeleteUserError> = serde_json::from_str(&content).ok();
1073        let error = ResponseContent { status: status, content: content, entity: entity };
1074        Err(Error::ResponseError(error))
1075    }
1076}
1077
1078/// Generate a compressed CSV report of all of the events data for a notification. This will return a URL immediately upon success but it may take several minutes for the CSV to become available at that URL depending on the volume of data. Only one export can be in-progress per OneSignal account at any given time.
1079pub async fn export_events(configuration: &configuration::Configuration, notification_id: &str, app_id: &str) -> Result<crate::models::ExportEventsSuccessResponse, Error<ExportEventsError>> {
1080    let configuration = configuration;
1081
1082    let client = &configuration.client;
1083
1084    let uri_str = format!("{}/notifications/{notification_id}/export_events?app_id={app_id}", configuration.base_path, notification_id=crate::apis::urlencode(notification_id));
1085    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
1086
1087    req_builder = req_builder.query(&[("app_id", &app_id.to_string())]);
1088    if let Some(ref user_agent) = configuration.user_agent {
1089        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1090    }
1091
1092    // Adds a telemetry header
1093    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1094
1095    if let Some(ref token) = configuration.rest_api_key_token {
1096        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1097    }
1098
1099    let req = req_builder.build()?;
1100    let resp = client.execute(req).await?;
1101
1102    let status = resp.status();
1103    let content = resp.text().await?;
1104
1105    if !status.is_client_error() && !status.is_server_error() {
1106        serde_json::from_str(&content).map_err(Error::from)
1107    } else {
1108        let entity: Option<ExportEventsError> = serde_json::from_str(&content).ok();
1109        let error = ResponseContent { status: status, content: content, entity: entity };
1110        Err(Error::ResponseError(error))
1111    }
1112}
1113
1114/// Generate a compressed CSV export of all of your current user data This method can be used to generate a compressed CSV export of all of your current user data. It is a much faster alternative than retrieving this data using the /players API endpoint. The file will be compressed using GZip. The file may take several minutes to generate depending on the number of users in your app. The URL generated will be available for 3 days and includes random v4 uuid as part of the resource name to be unguessable. &#x1F6A7; 403 Error Responses          You can test if it is complete by making a GET request to the csv_file_url value. This file may take time to generate depending on how many device records are being pulled. If the file is not ready, a 403 error will be returned. Otherwise the file itself will be returned. &#x1F6A7; Requires Authentication Key Requires your OneSignal App's REST API Key, available in Keys & IDs. &#x1F6A7; Concurrent Exports Only one concurrent export is allowed per OneSignal account. Please ensure you have successfully downloaded the .csv.gz file before exporting another app. CSV File Format: - Default Columns:   | Field | Details |   | --- | --- |   | id | OneSignal Player Id |   | identifier | Push Token |   | session_count | Number of times they visited the app or site   | language | Device language code |   | timezone | Number of seconds away from UTC. Example: -28800 |   | game_version | Version of your mobile app gathered from Android Studio versionCode in your App/build.gradle and iOS uses kCFBundleVersionKey in Xcode. |   | device_os | Device Operating System Version. Example: 80 = Chrome 80, 9 = Android 9 |   | device_type | Device Operating System Type |   | device_model | Device Hardware String Code. Example: Mobile Web Subscribers will have `Linux armv` |   | ad_id | Based on the Google Advertising Id for Android, identifierForVendor for iOS. OptedOut means user turned off Advertising tracking on the device. |   | tags | Current OneSignal Data Tags on the device. |   | last_active | Date and time the user last opened the mobile app or visited the site. |   | playtime | Total amount of time in seconds the user had the mobile app open. |   | amount_spent |  Mobile only - amount spent in USD on In-App Purchases. |    | created_at | Date and time the device record was created in OneSignal. Mobile - first time they opened the app with OneSignal SDK. Web - first time the user subscribed to the site. |   | invalid_identifier | t = unsubscribed, f = subscibed |   | badge_count | Current number of badges on the device | - Extra Columns:   | Field | Details |   | --- | --- |   | external_user_id | Your User Id set on the device |   | notification_types | Notification types |   | location | Location points (Latitude and Longitude) set on the device. |   | country | Country code |   | rooted | Android device rooted or not |   | ip | IP Address of the device if being tracked. See Handling Personal Data. |   | web_auth | Web Only authorization key. |   | web_p256 | Web Only p256 key. | 
1115pub async fn export_subscriptions(configuration: &configuration::Configuration, app_id: &str, export_subscriptions_request_body: Option<crate::models::ExportSubscriptionsRequestBody>) -> Result<crate::models::ExportSubscriptionsSuccessResponse, Error<ExportSubscriptionsError>> {
1116    let configuration = configuration;
1117
1118    let client = &configuration.client;
1119
1120    let uri_str = format!("{}/players/csv_export?app_id={app_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id));
1121    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
1122
1123    if let Some(ref user_agent) = configuration.user_agent {
1124        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1125    }
1126
1127    // Adds a telemetry header
1128    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1129
1130    if let Some(ref token) = configuration.rest_api_key_token {
1131        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1132    }
1133    req_builder = req_builder.json(&export_subscriptions_request_body);
1134
1135    let req = req_builder.build()?;
1136    let resp = client.execute(req).await?;
1137
1138    let status = resp.status();
1139    let content = resp.text().await?;
1140
1141    if !status.is_client_error() && !status.is_server_error() {
1142        serde_json::from_str(&content).map_err(Error::from)
1143    } else {
1144        let entity: Option<ExportSubscriptionsError> = serde_json::from_str(&content).ok();
1145        let error = ResponseContent { status: status, content: content, entity: entity };
1146        Err(Error::ResponseError(error))
1147    }
1148}
1149
1150/// Lists all Aliases for the User identified by (:alias_label, :alias_id).
1151pub async fn get_aliases(configuration: &configuration::Configuration, app_id: &str, alias_label: &str, alias_id: &str) -> Result<crate::models::UserIdentityBody, Error<GetAliasesError>> {
1152    let configuration = configuration;
1153
1154    let client = &configuration.client;
1155
1156    let uri_str = format!("{}/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity", configuration.base_path, app_id=crate::apis::urlencode(app_id), alias_label=crate::apis::urlencode(alias_label), alias_id=crate::apis::urlencode(alias_id));
1157    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1158
1159    if let Some(ref user_agent) = configuration.user_agent {
1160        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1161    }
1162
1163    // Adds a telemetry header
1164    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1165
1166    if let Some(ref token) = configuration.rest_api_key_token {
1167        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1168    }
1169
1170    let req = req_builder.build()?;
1171    let resp = client.execute(req).await?;
1172
1173    let status = resp.status();
1174    let content = resp.text().await?;
1175
1176    if !status.is_client_error() && !status.is_server_error() {
1177        serde_json::from_str(&content).map_err(Error::from)
1178    } else {
1179        let entity: Option<GetAliasesError> = serde_json::from_str(&content).ok();
1180        let error = ResponseContent { status: status, content: content, entity: entity };
1181        Err(Error::ResponseError(error))
1182    }
1183}
1184
1185/// Lists all Aliases for the User identified by :subscription_id.
1186pub async fn get_aliases_by_subscription(configuration: &configuration::Configuration, app_id: &str, subscription_id: &str) -> Result<crate::models::UserIdentityBody, Error<GetAliasesBySubscriptionError>> {
1187    let configuration = configuration;
1188
1189    let client = &configuration.client;
1190
1191    let uri_str = format!("{}/apps/{app_id}/subscriptions/{subscription_id}/user/identity", configuration.base_path, app_id=crate::apis::urlencode(app_id), subscription_id=crate::apis::urlencode(subscription_id));
1192    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1193
1194    if let Some(ref user_agent) = configuration.user_agent {
1195        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1196    }
1197
1198    // Adds a telemetry header
1199    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1200
1201    if let Some(ref token) = configuration.rest_api_key_token {
1202        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1203    }
1204
1205    let req = req_builder.build()?;
1206    let resp = client.execute(req).await?;
1207
1208    let status = resp.status();
1209    let content = resp.text().await?;
1210
1211    if !status.is_client_error() && !status.is_server_error() {
1212        serde_json::from_str(&content).map_err(Error::from)
1213    } else {
1214        let entity: Option<GetAliasesBySubscriptionError> = serde_json::from_str(&content).ok();
1215        let error = ResponseContent { status: status, content: content, entity: entity };
1216        Err(Error::ResponseError(error))
1217    }
1218}
1219
1220/// View the details of a single OneSignal app
1221pub async fn get_app(configuration: &configuration::Configuration, app_id: &str) -> Result<crate::models::App, Error<GetAppError>> {
1222    let configuration = configuration;
1223
1224    let client = &configuration.client;
1225
1226    let uri_str = format!("{}/apps/{app_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id));
1227    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1228
1229    if let Some(ref user_agent) = configuration.user_agent {
1230        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1231    }
1232
1233    // Adds a telemetry header
1234    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1235
1236    if let Some(ref token) = configuration.organization_api_key_token {
1237        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1238    }
1239
1240    let req = req_builder.build()?;
1241    let resp = client.execute(req).await?;
1242
1243    let status = resp.status();
1244    let content = resp.text().await?;
1245
1246    if !status.is_client_error() && !status.is_server_error() {
1247        serde_json::from_str(&content).map_err(Error::from)
1248    } else {
1249        let entity: Option<GetAppError> = serde_json::from_str(&content).ok();
1250        let error = ResponseContent { status: status, content: content, entity: entity };
1251        Err(Error::ResponseError(error))
1252    }
1253}
1254
1255/// View the details of all of your current OneSignal apps
1256pub async fn get_apps(configuration: &configuration::Configuration, ) -> Result<Vec<crate::models::App>, Error<GetAppsError>> {
1257    let configuration = configuration;
1258
1259    let client = &configuration.client;
1260
1261    let uri_str = format!("{}/apps", configuration.base_path);
1262    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1263
1264    if let Some(ref user_agent) = configuration.user_agent {
1265        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1266    }
1267
1268    // Adds a telemetry header
1269    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1270
1271    if let Some(ref token) = configuration.organization_api_key_token {
1272        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1273    }
1274
1275    let req = req_builder.build()?;
1276    let resp = client.execute(req).await?;
1277
1278    let status = resp.status();
1279    let content = resp.text().await?;
1280
1281    if !status.is_client_error() && !status.is_server_error() {
1282        serde_json::from_str(&content).map_err(Error::from)
1283    } else {
1284        let entity: Option<GetAppsError> = serde_json::from_str(&content).ok();
1285        let error = ResponseContent { status: status, content: content, entity: entity };
1286        Err(Error::ResponseError(error))
1287    }
1288}
1289
1290/// View the details of a single notification and outcomes associated with it
1291pub async fn get_notification(configuration: &configuration::Configuration, app_id: &str, notification_id: &str) -> Result<crate::models::NotificationWithMeta, Error<GetNotificationError>> {
1292    let configuration = configuration;
1293
1294    let client = &configuration.client;
1295
1296    let uri_str = format!("{}/notifications/{notification_id}", configuration.base_path, notification_id=crate::apis::urlencode(notification_id));
1297    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1298
1299    req_builder = req_builder.query(&[("app_id", &app_id.to_string())]);
1300    if let Some(ref user_agent) = configuration.user_agent {
1301        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1302    }
1303
1304    // Adds a telemetry header
1305    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1306
1307    if let Some(ref token) = configuration.rest_api_key_token {
1308        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1309    }
1310
1311    let req = req_builder.build()?;
1312    let resp = client.execute(req).await?;
1313
1314    let status = resp.status();
1315    let content = resp.text().await?;
1316
1317    if !status.is_client_error() && !status.is_server_error() {
1318        serde_json::from_str(&content).map_err(Error::from)
1319    } else {
1320        let entity: Option<GetNotificationError> = serde_json::from_str(&content).ok();
1321        let error = ResponseContent { status: status, content: content, entity: entity };
1322        Err(Error::ResponseError(error))
1323    }
1324}
1325
1326/// -> View the devices sent a message - OneSignal Paid Plan Required This method will return all devices that were sent the given notification_id of an Email or Push Notification if used within 7 days of the date sent. After 7 days of the sending date, the message history data will be unavailable. After a successful response is received, the destination url may be polled until the file becomes available. Most exports are done in ~1-3 minutes, so setting a poll interval of 10 seconds should be adequate. For use cases that are not meant to be consumed by a script, an email will be sent to the supplied email address. &#x1F6A7; Requirements A OneSignal Paid Plan. Turn on Send History via OneSignal API in Settings -> Analytics. Cannot get data before this was turned on. Must be called within 7 days after sending the message. Messages targeting under 1000 recipients will not have \"sent\" events recorded, but will show \"clicked\" events. Requires your OneSignal App's REST API Key, available in Keys & IDs.
1327pub async fn get_notification_history(configuration: &configuration::Configuration, notification_id: &str, get_notification_history_request_body: crate::models::GetNotificationHistoryRequestBody) -> Result<crate::models::NotificationHistorySuccessResponse, Error<GetNotificationHistoryError>> {
1328    let configuration = configuration;
1329
1330    let client = &configuration.client;
1331
1332    let uri_str = format!("{}/notifications/{notification_id}/history", configuration.base_path, notification_id=crate::apis::urlencode(notification_id));
1333    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
1334
1335    if let Some(ref user_agent) = configuration.user_agent {
1336        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1337    }
1338
1339    // Adds a telemetry header
1340    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1341
1342    if let Some(ref token) = configuration.rest_api_key_token {
1343        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1344    }
1345    req_builder = req_builder.json(&get_notification_history_request_body);
1346
1347    let req = req_builder.build()?;
1348    let resp = client.execute(req).await?;
1349
1350    let status = resp.status();
1351    let content = resp.text().await?;
1352
1353    if !status.is_client_error() && !status.is_server_error() {
1354        serde_json::from_str(&content).map_err(Error::from)
1355    } else {
1356        let entity: Option<GetNotificationHistoryError> = serde_json::from_str(&content).ok();
1357        let error = ResponseContent { status: status, content: content, entity: entity };
1358        Err(Error::ResponseError(error))
1359    }
1360}
1361
1362/// View the details of multiple notifications
1363pub async fn get_notifications(configuration: &configuration::Configuration, app_id: &str, limit: Option<i32>, offset: Option<i32>, kind: Option<i32>) -> Result<crate::models::NotificationSlice, Error<GetNotificationsError>> {
1364    let configuration = configuration;
1365
1366    let client = &configuration.client;
1367
1368    let uri_str = format!("{}/notifications", configuration.base_path);
1369    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1370
1371    req_builder = req_builder.query(&[("app_id", &app_id.to_string())]);
1372    if let Some(ref str) = limit {
1373        req_builder = req_builder.query(&[("limit", &str.to_string())]);
1374    }
1375    if let Some(ref str) = offset {
1376        req_builder = req_builder.query(&[("offset", &str.to_string())]);
1377    }
1378    if let Some(ref str) = kind {
1379        req_builder = req_builder.query(&[("kind", &str.to_string())]);
1380    }
1381    if let Some(ref user_agent) = configuration.user_agent {
1382        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1383    }
1384
1385    // Adds a telemetry header
1386    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1387
1388    if let Some(ref token) = configuration.rest_api_key_token {
1389        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1390    }
1391
1392    let req = req_builder.build()?;
1393    let resp = client.execute(req).await?;
1394
1395    let status = resp.status();
1396    let content = resp.text().await?;
1397
1398    if !status.is_client_error() && !status.is_server_error() {
1399        serde_json::from_str(&content).map_err(Error::from)
1400    } else {
1401        let entity: Option<GetNotificationsError> = serde_json::from_str(&content).ok();
1402        let error = ResponseContent { status: status, content: content, entity: entity };
1403        Err(Error::ResponseError(error))
1404    }
1405}
1406
1407/// View the details of all the outcomes associated with your app  &#x1F6A7; Requires Authentication Key Requires your OneSignal App's REST API Key, available in Keys & IDs.  &#x1F6A7; Outcome Data Limitations Outcomes are only accessible for around 30 days before deleted from our servers. You will need to export this data every month if you want to keep it. 
1408pub async fn get_outcomes(configuration: &configuration::Configuration, app_id: &str, outcome_names: &str, outcome_names2: Option<&str>, outcome_time_range: Option<&str>, outcome_platforms: Option<&str>, outcome_attribution: Option<&str>) -> Result<crate::models::OutcomesData, Error<GetOutcomesError>> {
1409    let configuration = configuration;
1410
1411    let client = &configuration.client;
1412
1413    let uri_str = format!("{}/apps/{app_id}/outcomes", configuration.base_path, app_id=crate::apis::urlencode(app_id));
1414    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1415
1416    req_builder = req_builder.query(&[("outcome_names", &outcome_names.to_string())]);
1417    if let Some(ref str) = outcome_names2 {
1418        req_builder = req_builder.query(&[("outcome_names[]", &str.to_string())]);
1419    }
1420    if let Some(ref str) = outcome_time_range {
1421        req_builder = req_builder.query(&[("outcome_time_range", &str.to_string())]);
1422    }
1423    if let Some(ref str) = outcome_platforms {
1424        req_builder = req_builder.query(&[("outcome_platforms", &str.to_string())]);
1425    }
1426    if let Some(ref str) = outcome_attribution {
1427        req_builder = req_builder.query(&[("outcome_attribution", &str.to_string())]);
1428    }
1429    if let Some(ref user_agent) = configuration.user_agent {
1430        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1431    }
1432
1433    // Adds a telemetry header
1434    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1435
1436    if let Some(ref token) = configuration.rest_api_key_token {
1437        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1438    }
1439
1440    let req = req_builder.build()?;
1441    let resp = client.execute(req).await?;
1442
1443    let status = resp.status();
1444    let content = resp.text().await?;
1445
1446    if !status.is_client_error() && !status.is_server_error() {
1447        serde_json::from_str(&content).map_err(Error::from)
1448    } else {
1449        let entity: Option<GetOutcomesError> = serde_json::from_str(&content).ok();
1450        let error = ResponseContent { status: status, content: content, entity: entity };
1451        Err(Error::ResponseError(error))
1452    }
1453}
1454
1455/// Returns an array of segments from an app.
1456pub async fn get_segments(configuration: &configuration::Configuration, app_id: &str, offset: Option<i32>, limit: Option<i32>) -> Result<crate::models::GetSegmentsSuccessResponse, Error<GetSegmentsError>> {
1457    let configuration = configuration;
1458
1459    let client = &configuration.client;
1460
1461    let uri_str = format!("{}/apps/{app_id}/segments", configuration.base_path, app_id=crate::apis::urlencode(app_id));
1462    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1463
1464    if let Some(ref str) = offset {
1465        req_builder = req_builder.query(&[("offset", &str.to_string())]);
1466    }
1467    if let Some(ref str) = limit {
1468        req_builder = req_builder.query(&[("limit", &str.to_string())]);
1469    }
1470    if let Some(ref user_agent) = configuration.user_agent {
1471        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1472    }
1473
1474    // Adds a telemetry header
1475    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1476
1477    if let Some(ref token) = configuration.rest_api_key_token {
1478        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1479    }
1480
1481    let req = req_builder.build()?;
1482    let resp = client.execute(req).await?;
1483
1484    let status = resp.status();
1485    let content = resp.text().await?;
1486
1487    if !status.is_client_error() && !status.is_server_error() {
1488        serde_json::from_str(&content).map_err(Error::from)
1489    } else {
1490        let entity: Option<GetSegmentsError> = serde_json::from_str(&content).ok();
1491        let error = ResponseContent { status: status, content: content, entity: entity };
1492        Err(Error::ResponseError(error))
1493    }
1494}
1495
1496/// Returns the User’s properties, Aliases, and Subscriptions.
1497pub async fn get_user(configuration: &configuration::Configuration, app_id: &str, alias_label: &str, alias_id: &str) -> Result<crate::models::User, Error<GetUserError>> {
1498    let configuration = configuration;
1499
1500    let client = &configuration.client;
1501
1502    let uri_str = format!("{}/apps/{app_id}/users/by/{alias_label}/{alias_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id), alias_label=crate::apis::urlencode(alias_label), alias_id=crate::apis::urlencode(alias_id));
1503    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1504
1505    if let Some(ref user_agent) = configuration.user_agent {
1506        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1507    }
1508
1509    // Adds a telemetry header
1510    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1511
1512    if let Some(ref token) = configuration.rest_api_key_token {
1513        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1514    }
1515
1516    let req = req_builder.build()?;
1517    let resp = client.execute(req).await?;
1518
1519    let status = resp.status();
1520    let content = resp.text().await?;
1521
1522    if !status.is_client_error() && !status.is_server_error() {
1523        serde_json::from_str(&content).map_err(Error::from)
1524    } else {
1525        let entity: Option<GetUserError> = serde_json::from_str(&content).ok();
1526        let error = ResponseContent { status: status, content: content, entity: entity };
1527        Err(Error::ResponseError(error))
1528    }
1529}
1530
1531/// Rotate a Rich Authentication Token (App API Key) for a OneSignal app. Rotating a key revokes the current token and generates a new one under the same configuration—ideal when a token is lost or compromised but you don’t want to recreate and reconfigure it from scratch.
1532pub async fn rotate_api_key(configuration: &configuration::Configuration, app_id: &str, token_id: &str) -> Result<crate::models::CreateApiKeyResponse, Error<RotateApiKeyError>> {
1533    let configuration = configuration;
1534
1535    let client = &configuration.client;
1536
1537    let uri_str = format!("{}/apps/{app_id}/auth/tokens/{token_id}/rotate", configuration.base_path, app_id=crate::apis::urlencode(app_id), token_id=crate::apis::urlencode(token_id));
1538    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
1539
1540    if let Some(ref user_agent) = configuration.user_agent {
1541        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1542    }
1543
1544    // Adds a telemetry header
1545    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1546
1547    if let Some(ref token) = configuration.organization_api_key_token {
1548        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1549    }
1550
1551    let req = req_builder.build()?;
1552    let resp = client.execute(req).await?;
1553
1554    let status = resp.status();
1555    let content = resp.text().await?;
1556
1557    if !status.is_client_error() && !status.is_server_error() {
1558        serde_json::from_str(&content).map_err(Error::from)
1559    } else {
1560        let entity: Option<RotateApiKeyError> = serde_json::from_str(&content).ok();
1561        let error = ResponseContent { status: status, content: content, entity: entity };
1562        Err(Error::ResponseError(error))
1563    }
1564}
1565
1566/// Remotely start a Live Activity on iOS devices via OneSignal’s REST API.
1567pub async fn start_live_activity(configuration: &configuration::Configuration, app_id: &str, activity_type: &str, start_live_activity_request: crate::models::StartLiveActivityRequest) -> Result<crate::models::StartLiveActivitySuccessResponse, Error<StartLiveActivityError>> {
1568    let configuration = configuration;
1569
1570    let client = &configuration.client;
1571
1572    let uri_str = format!("{}/apps/{app_id}/activities/activity/{activity_type}", configuration.base_path, app_id=crate::apis::urlencode(app_id), activity_type=crate::apis::urlencode(activity_type));
1573    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
1574
1575    if let Some(ref user_agent) = configuration.user_agent {
1576        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1577    }
1578
1579    // Adds a telemetry header
1580    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1581
1582    if let Some(ref token) = configuration.rest_api_key_token {
1583        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1584    }
1585    req_builder = req_builder.json(&start_live_activity_request);
1586
1587    let req = req_builder.build()?;
1588    let resp = client.execute(req).await?;
1589
1590    let status = resp.status();
1591    let content = resp.text().await?;
1592
1593    if !status.is_client_error() && !status.is_server_error() {
1594        serde_json::from_str(&content).map_err(Error::from)
1595    } else {
1596        let entity: Option<StartLiveActivityError> = serde_json::from_str(&content).ok();
1597        let error = ResponseContent { status: status, content: content, entity: entity };
1598        Err(Error::ResponseError(error))
1599    }
1600}
1601
1602/// Transfers this Subscription to the User identified by the identity in the payload.
1603pub async fn transfer_subscription(configuration: &configuration::Configuration, app_id: &str, subscription_id: &str, transfer_subscription_request_body: crate::models::TransferSubscriptionRequestBody) -> Result<crate::models::UserIdentityBody, Error<TransferSubscriptionError>> {
1604    let configuration = configuration;
1605
1606    let client = &configuration.client;
1607
1608    let uri_str = format!("{}/apps/{app_id}/subscriptions/{subscription_id}/owner", configuration.base_path, app_id=crate::apis::urlencode(app_id), subscription_id=crate::apis::urlencode(subscription_id));
1609    let mut req_builder = client.request(reqwest::Method::PATCH, uri_str.as_str());
1610
1611    if let Some(ref user_agent) = configuration.user_agent {
1612        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1613    }
1614
1615    // Adds a telemetry header
1616    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1617
1618    if let Some(ref token) = configuration.rest_api_key_token {
1619        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1620    }
1621    req_builder = req_builder.json(&transfer_subscription_request_body);
1622
1623    let req = req_builder.build()?;
1624    let resp = client.execute(req).await?;
1625
1626    let status = resp.status();
1627    let content = resp.text().await?;
1628
1629    if !status.is_client_error() && !status.is_server_error() {
1630        serde_json::from_str(&content).map_err(Error::from)
1631    } else {
1632        let entity: Option<TransferSubscriptionError> = serde_json::from_str(&content).ok();
1633        let error = ResponseContent { status: status, content: content, entity: entity };
1634        Err(Error::ResponseError(error))
1635    }
1636}
1637
1638/// Unsubscribe an email with a token when using your own custom email unsubscribe landing page
1639pub async fn unsubscribe_email_with_token(configuration: &configuration::Configuration, app_id: &str, notification_id: &str, token: &str) -> Result<crate::models::GenericSuccessBoolResponse, Error<UnsubscribeEmailWithTokenError>> {
1640    let configuration = configuration;
1641
1642    let client = &configuration.client;
1643
1644    let uri_str = format!("{}/apps/{app_id}/notifications/{notification_id}/unsubscribe", configuration.base_path, app_id=crate::apis::urlencode(app_id), notification_id=crate::apis::urlencode(notification_id));
1645    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
1646
1647    req_builder = req_builder.query(&[("token", &token.to_string())]);
1648    if let Some(ref user_agent) = configuration.user_agent {
1649        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1650    }
1651
1652    // Adds a telemetry header
1653    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1654
1655    if let Some(ref token) = configuration.rest_api_key_token {
1656        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1657    }
1658
1659    let req = req_builder.build()?;
1660    let resp = client.execute(req).await?;
1661
1662    let status = resp.status();
1663    let content = resp.text().await?;
1664
1665    if !status.is_client_error() && !status.is_server_error() {
1666        serde_json::from_str(&content).map_err(Error::from)
1667    } else {
1668        let entity: Option<UnsubscribeEmailWithTokenError> = serde_json::from_str(&content).ok();
1669        let error = ResponseContent { status: status, content: content, entity: entity };
1670        Err(Error::ResponseError(error))
1671    }
1672}
1673
1674/// Update a Rich Authentication Token (App API Key) for a OneSignal app.
1675pub async fn update_api_key(configuration: &configuration::Configuration, app_id: &str, token_id: &str, update_api_key_request: crate::models::UpdateApiKeyRequest) -> Result<serde_json::Value, Error<UpdateApiKeyError>> {
1676    let configuration = configuration;
1677
1678    let client = &configuration.client;
1679
1680    let uri_str = format!("{}/apps/{app_id}/auth/tokens/{token_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id), token_id=crate::apis::urlencode(token_id));
1681    let mut req_builder = client.request(reqwest::Method::PATCH, uri_str.as_str());
1682
1683    if let Some(ref user_agent) = configuration.user_agent {
1684        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1685    }
1686
1687    // Adds a telemetry header
1688    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1689
1690    if let Some(ref token) = configuration.organization_api_key_token {
1691        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1692    }
1693    req_builder = req_builder.json(&update_api_key_request);
1694
1695    let req = req_builder.build()?;
1696    let resp = client.execute(req).await?;
1697
1698    let status = resp.status();
1699    let content = resp.text().await?;
1700
1701    if !status.is_client_error() && !status.is_server_error() {
1702        serde_json::from_str(&content).map_err(Error::from)
1703    } else {
1704        let entity: Option<UpdateApiKeyError> = serde_json::from_str(&content).ok();
1705        let error = ResponseContent { status: status, content: content, entity: entity };
1706        Err(Error::ResponseError(error))
1707    }
1708}
1709
1710/// Updates the name or configuration settings of an existing OneSignal app
1711pub async fn update_app(configuration: &configuration::Configuration, app_id: &str, app: crate::models::App) -> Result<crate::models::App, Error<UpdateAppError>> {
1712    let configuration = configuration;
1713
1714    let client = &configuration.client;
1715
1716    let uri_str = format!("{}/apps/{app_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id));
1717    let mut req_builder = client.request(reqwest::Method::PUT, uri_str.as_str());
1718
1719    if let Some(ref user_agent) = configuration.user_agent {
1720        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1721    }
1722
1723    // Adds a telemetry header
1724    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1725
1726    if let Some(ref token) = configuration.organization_api_key_token {
1727        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1728    }
1729    req_builder = req_builder.json(&app);
1730
1731    let req = req_builder.build()?;
1732    let resp = client.execute(req).await?;
1733
1734    let status = resp.status();
1735    let content = resp.text().await?;
1736
1737    if !status.is_client_error() && !status.is_server_error() {
1738        serde_json::from_str(&content).map_err(Error::from)
1739    } else {
1740        let entity: Option<UpdateAppError> = serde_json::from_str(&content).ok();
1741        let error = ResponseContent { status: status, content: content, entity: entity };
1742        Err(Error::ResponseError(error))
1743    }
1744}
1745
1746/// Updates a specified live activity.
1747pub async fn update_live_activity(configuration: &configuration::Configuration, app_id: &str, activity_id: &str, update_live_activity_request: crate::models::UpdateLiveActivityRequest) -> Result<crate::models::UpdateLiveActivitySuccessResponse, Error<UpdateLiveActivityError>> {
1748    let configuration = configuration;
1749
1750    let client = &configuration.client;
1751
1752    let uri_str = format!("{}/apps/{app_id}/live_activities/{activity_id}/notifications", configuration.base_path, app_id=crate::apis::urlencode(app_id), activity_id=crate::apis::urlencode(activity_id));
1753    let mut req_builder = client.request(reqwest::Method::POST, uri_str.as_str());
1754
1755    if let Some(ref user_agent) = configuration.user_agent {
1756        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1757    }
1758
1759    // Adds a telemetry header
1760    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1761
1762    if let Some(ref token) = configuration.rest_api_key_token {
1763        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1764    }
1765    req_builder = req_builder.json(&update_live_activity_request);
1766
1767    let req = req_builder.build()?;
1768    let resp = client.execute(req).await?;
1769
1770    let status = resp.status();
1771    let content = resp.text().await?;
1772
1773    if !status.is_client_error() && !status.is_server_error() {
1774        serde_json::from_str(&content).map_err(Error::from)
1775    } else {
1776        let entity: Option<UpdateLiveActivityError> = serde_json::from_str(&content).ok();
1777        let error = ResponseContent { status: status, content: content, entity: entity };
1778        Err(Error::ResponseError(error))
1779    }
1780}
1781
1782/// Updates an existing Subscription’s properties.
1783pub async fn update_subscription(configuration: &configuration::Configuration, app_id: &str, subscription_id: &str, subscription_body: crate::models::SubscriptionBody) -> Result<(), Error<UpdateSubscriptionError>> {
1784    let configuration = configuration;
1785
1786    let client = &configuration.client;
1787
1788    let uri_str = format!("{}/apps/{app_id}/subscriptions/{subscription_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id), subscription_id=crate::apis::urlencode(subscription_id));
1789    let mut req_builder = client.request(reqwest::Method::PATCH, uri_str.as_str());
1790
1791    if let Some(ref user_agent) = configuration.user_agent {
1792        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1793    }
1794
1795    // Adds a telemetry header
1796    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1797
1798    if let Some(ref token) = configuration.rest_api_key_token {
1799        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1800    }
1801    req_builder = req_builder.json(&subscription_body);
1802
1803    let req = req_builder.build()?;
1804    let resp = client.execute(req).await?;
1805
1806    let status = resp.status();
1807    let content = resp.text().await?;
1808
1809    if !status.is_client_error() && !status.is_server_error() {
1810        Ok(())
1811    } else {
1812        let entity: Option<UpdateSubscriptionError> = serde_json::from_str(&content).ok();
1813        let error = ResponseContent { status: status, content: content, entity: entity };
1814        Err(Error::ResponseError(error))
1815    }
1816}
1817
1818/// Update properties on an existing OneSignal subscription using its token.
1819pub async fn update_subscription_by_token(configuration: &configuration::Configuration, app_id: &str, token_type: &str, token: &str, subscription_body: crate::models::SubscriptionBody) -> Result<serde_json::Value, Error<UpdateSubscriptionByTokenError>> {
1820    let configuration = configuration;
1821
1822    let client = &configuration.client;
1823
1824    let uri_str = format!("{}/apps/{app_id}/subscriptions_by_token/{token_type}/{token}", configuration.base_path, app_id=crate::apis::urlencode(app_id), token_type=crate::apis::urlencode(token_type), token=crate::apis::urlencode(token));
1825    let mut req_builder = client.request(reqwest::Method::PATCH, uri_str.as_str());
1826
1827    if let Some(ref user_agent) = configuration.user_agent {
1828        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1829    }
1830
1831    // Adds a telemetry header
1832    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1833
1834    if let Some(ref token) = configuration.rest_api_key_token {
1835        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1836    }
1837    req_builder = req_builder.json(&subscription_body);
1838
1839    let req = req_builder.build()?;
1840    let resp = client.execute(req).await?;
1841
1842    let status = resp.status();
1843    let content = resp.text().await?;
1844
1845    if !status.is_client_error() && !status.is_server_error() {
1846        serde_json::from_str(&content).map_err(Error::from)
1847    } else {
1848        let entity: Option<UpdateSubscriptionByTokenError> = serde_json::from_str(&content).ok();
1849        let error = ResponseContent { status: status, content: content, entity: entity };
1850        Err(Error::ResponseError(error))
1851    }
1852}
1853
1854/// Update an existing template.
1855pub async fn update_template(configuration: &configuration::Configuration, template_id: &str, app_id: &str, update_template_request: crate::models::UpdateTemplateRequest) -> Result<crate::models::TemplateResource, Error<UpdateTemplateError>> {
1856    let configuration = configuration;
1857
1858    let client = &configuration.client;
1859
1860    let uri_str = format!("{}/templates/{template_id}", configuration.base_path, template_id=crate::apis::urlencode(template_id));
1861    let mut req_builder = client.request(reqwest::Method::PATCH, uri_str.as_str());
1862
1863    req_builder = req_builder.query(&[("app_id", &app_id.to_string())]);
1864    if let Some(ref user_agent) = configuration.user_agent {
1865        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1866    }
1867
1868    // Adds a telemetry header
1869    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1870
1871    if let Some(ref token) = configuration.rest_api_key_token {
1872        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1873    }
1874    req_builder = req_builder.json(&update_template_request);
1875
1876    let req = req_builder.build()?;
1877    let resp = client.execute(req).await?;
1878
1879    let status = resp.status();
1880    let content = resp.text().await?;
1881
1882    if !status.is_client_error() && !status.is_server_error() {
1883        serde_json::from_str(&content).map_err(Error::from)
1884    } else {
1885        let entity: Option<UpdateTemplateError> = serde_json::from_str(&content).ok();
1886        let error = ResponseContent { status: status, content: content, entity: entity };
1887        Err(Error::ResponseError(error))
1888    }
1889}
1890
1891/// Updates an existing User’s properties.
1892pub async fn update_user(configuration: &configuration::Configuration, app_id: &str, alias_label: &str, alias_id: &str, update_user_request: crate::models::UpdateUserRequest) -> Result<crate::models::PropertiesBody, Error<UpdateUserError>> {
1893    let configuration = configuration;
1894
1895    let client = &configuration.client;
1896
1897    let uri_str = format!("{}/apps/{app_id}/users/by/{alias_label}/{alias_id}", configuration.base_path, app_id=crate::apis::urlencode(app_id), alias_label=crate::apis::urlencode(alias_label), alias_id=crate::apis::urlencode(alias_id));
1898    let mut req_builder = client.request(reqwest::Method::PATCH, uri_str.as_str());
1899
1900    if let Some(ref user_agent) = configuration.user_agent {
1901        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1902    }
1903
1904    // Adds a telemetry header
1905    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1906
1907    if let Some(ref token) = configuration.rest_api_key_token {
1908        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1909    }
1910    req_builder = req_builder.json(&update_user_request);
1911
1912    let req = req_builder.build()?;
1913    let resp = client.execute(req).await?;
1914
1915    let status = resp.status();
1916    let content = resp.text().await?;
1917
1918    if !status.is_client_error() && !status.is_server_error() {
1919        serde_json::from_str(&content).map_err(Error::from)
1920    } else {
1921        let entity: Option<UpdateUserError> = serde_json::from_str(&content).ok();
1922        let error = ResponseContent { status: status, content: content, entity: entity };
1923        Err(Error::ResponseError(error))
1924    }
1925}
1926
1927/// View the details of all of your current app API keys (Rich Authentication Token) for a single OneSignal app.
1928pub async fn view_api_keys(configuration: &configuration::Configuration, app_id: &str) -> Result<crate::models::ApiKeyTokensListResponse, Error<ViewApiKeysError>> {
1929    let configuration = configuration;
1930
1931    let client = &configuration.client;
1932
1933    let uri_str = format!("{}/apps/{app_id}/auth/tokens", configuration.base_path, app_id=crate::apis::urlencode(app_id));
1934    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1935
1936    if let Some(ref user_agent) = configuration.user_agent {
1937        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1938    }
1939
1940    // Adds a telemetry header
1941    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1942
1943    if let Some(ref token) = configuration.organization_api_key_token {
1944        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1945    }
1946
1947    let req = req_builder.build()?;
1948    let resp = client.execute(req).await?;
1949
1950    let status = resp.status();
1951    let content = resp.text().await?;
1952
1953    if !status.is_client_error() && !status.is_server_error() {
1954        serde_json::from_str(&content).map_err(Error::from)
1955    } else {
1956        let entity: Option<ViewApiKeysError> = serde_json::from_str(&content).ok();
1957        let error = ResponseContent { status: status, content: content, entity: entity };
1958        Err(Error::ResponseError(error))
1959    }
1960}
1961
1962/// Fetch a single template by id.
1963pub async fn view_template(configuration: &configuration::Configuration, template_id: &str, app_id: &str) -> Result<crate::models::TemplateResource, Error<ViewTemplateError>> {
1964    let configuration = configuration;
1965
1966    let client = &configuration.client;
1967
1968    let uri_str = format!("{}/templates/{template_id}", configuration.base_path, template_id=crate::apis::urlencode(template_id));
1969    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
1970
1971    req_builder = req_builder.query(&[("app_id", &app_id.to_string())]);
1972    if let Some(ref user_agent) = configuration.user_agent {
1973        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1974    }
1975
1976    // Adds a telemetry header
1977    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
1978
1979    if let Some(ref token) = configuration.rest_api_key_token {
1980        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
1981    }
1982
1983    let req = req_builder.build()?;
1984    let resp = client.execute(req).await?;
1985
1986    let status = resp.status();
1987    let content = resp.text().await?;
1988
1989    if !status.is_client_error() && !status.is_server_error() {
1990        serde_json::from_str(&content).map_err(Error::from)
1991    } else {
1992        let entity: Option<ViewTemplateError> = serde_json::from_str(&content).ok();
1993        let error = ResponseContent { status: status, content: content, entity: entity };
1994        Err(Error::ResponseError(error))
1995    }
1996}
1997
1998/// List templates for an app.
1999pub async fn view_templates(configuration: &configuration::Configuration, app_id: &str, limit: Option<i32>, offset: Option<i32>, channel: Option<&str>) -> Result<crate::models::TemplatesListResponse, Error<ViewTemplatesError>> {
2000    let configuration = configuration;
2001
2002    let client = &configuration.client;
2003
2004    let uri_str = format!("{}/templates", configuration.base_path);
2005    let mut req_builder = client.request(reqwest::Method::GET, uri_str.as_str());
2006
2007    req_builder = req_builder.query(&[("app_id", &app_id.to_string())]);
2008    if let Some(ref str) = limit {
2009        req_builder = req_builder.query(&[("limit", &str.to_string())]);
2010    }
2011    if let Some(ref str) = offset {
2012        req_builder = req_builder.query(&[("offset", &str.to_string())]);
2013    }
2014    if let Some(ref str) = channel {
2015        req_builder = req_builder.query(&[("channel", &str.to_string())]);
2016    }
2017    if let Some(ref user_agent) = configuration.user_agent {
2018        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2019    }
2020
2021    // Adds a telemetry header
2022    req_builder = req_builder.header("OS-Usage-Data", "kind=sdk, sdk-name=onesignal-rust, version=5.4.0");
2023
2024    if let Some(ref token) = configuration.rest_api_key_token {
2025        req_builder = req_builder.header("Authorization", format!("Key {}", token.to_owned()));
2026    }
2027
2028    let req = req_builder.build()?;
2029    let resp = client.execute(req).await?;
2030
2031    let status = resp.status();
2032    let content = resp.text().await?;
2033
2034    if !status.is_client_error() && !status.is_server_error() {
2035        serde_json::from_str(&content).map_err(Error::from)
2036    } else {
2037        let entity: Option<ViewTemplatesError> = serde_json::from_str(&content).ok();
2038        let error = ResponseContent { status: status, content: content, entity: entity };
2039        Err(Error::ResponseError(error))
2040    }
2041}
2042