azure_devops_rust_api 0.7.2

Rust API library for Azure DevOps
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
#![allow(non_camel_case_types)]
#![allow(unused_imports)]
use serde::de::{value, Deserializer, IntoDeserializer};
use serde::{Deserialize, Serialize, Serializer};
use std::str::FromStr;
#[doc = "Copy options of a Dashboard."]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CopyDashboardOptions {
    #[doc = "Dashboard Scope. Can be either Project or Project_Team"]
    #[serde(
        rename = "copyDashboardScope",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub copy_dashboard_scope: Option<copy_dashboard_options::CopyDashboardScope>,
    #[doc = "Description of the dashboard"]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[doc = "Name of the dashboard"]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[doc = "ID of the project. Provided by service at creation time."]
    #[serde(rename = "projectId", default, skip_serializing_if = "Option::is_none")]
    pub project_id: Option<String>,
    #[doc = "Refresh interval of dashboard"]
    #[serde(
        rename = "refreshInterval",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub refresh_interval: Option<i32>,
    #[doc = "ID of the team. Provided by service at creation time"]
    #[serde(rename = "teamId", default, skip_serializing_if = "Option::is_none")]
    pub team_id: Option<String>,
}
impl CopyDashboardOptions {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod copy_dashboard_options {
    use super::*;
    #[doc = "Dashboard Scope. Can be either Project or Project_Team"]
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum CopyDashboardScope {
        #[serde(rename = "collection_User")]
        CollectionUser,
        #[serde(rename = "project_Team")]
        ProjectTeam,
        #[serde(rename = "project")]
        Project,
    }
}
#[doc = ""]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CopyDashboardResponse {
    #[doc = "Model of a Dashboard."]
    #[serde(
        rename = "copiedDashboard",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub copied_dashboard: Option<Dashboard>,
    #[doc = "Copy options of a Dashboard."]
    #[serde(
        rename = "copyDashboardOptions",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub copy_dashboard_options: Option<CopyDashboardOptions>,
}
impl CopyDashboardResponse {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "Model of a Dashboard."]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Dashboard {
    #[doc = "The class to represent a collection of REST reference links."]
    #[serde(rename = "_links", default, skip_serializing_if = "Option::is_none")]
    pub links: Option<ReferenceLinks>,
    #[doc = "Entity to which the dashboard is scoped."]
    #[serde(
        rename = "dashboardScope",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub dashboard_scope: Option<dashboard::DashboardScope>,
    #[doc = "Description of the dashboard."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[doc = "Server defined version tracking value, used for edit collision detection."]
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[doc = "ID of the group for a dashboard. For team-scoped dashboards, this is the unique identifier for the team associated with the dashboard. For project-scoped dashboards this property is empty."]
    #[serde(rename = "groupId", default, skip_serializing_if = "Option::is_none")]
    pub group_id: Option<String>,
    #[doc = "ID of the Dashboard. Provided by service at creation time."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[doc = "Name of the Dashboard."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[doc = "ID of the owner for a dashboard. For team-scoped dashboards, this is the unique identifier for the team associated with the dashboard. For project-scoped dashboards, this is the unique identifier for the user identity associated with the dashboard."]
    #[serde(rename = "ownerId", default, skip_serializing_if = "Option::is_none")]
    pub owner_id: Option<String>,
    #[doc = "Position of the dashboard, within a dashboard group. If unset at creation time, position is decided by the service."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub position: Option<i32>,
    #[doc = "Interval for client to automatically refresh the dashboard. Expressed in minutes."]
    #[serde(
        rename = "refreshInterval",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub refresh_interval: Option<i32>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub url: Option<String>,
    #[doc = "The set of Widgets on the dashboard."]
    #[serde(
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub widgets: Vec<Widget>,
}
impl Dashboard {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod dashboard {
    use super::*;
    #[doc = "Entity to which the dashboard is scoped."]
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DashboardScope {
        #[serde(rename = "collection_User")]
        CollectionUser,
        #[serde(rename = "project_Team")]
        ProjectTeam,
        #[serde(rename = "project")]
        Project,
    }
}
#[doc = "Describes a list of dashboards associated to an owner. Currently, teams own dashboard groups."]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DashboardGroup {
    #[doc = "The class to represent a collection of REST reference links."]
    #[serde(rename = "_links", default, skip_serializing_if = "Option::is_none")]
    pub links: Option<ReferenceLinks>,
    #[doc = "A list of Dashboards held by the Dashboard Group"]
    #[serde(
        rename = "dashboardEntries",
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub dashboard_entries: Vec<DashboardGroupEntry>,
    #[doc = "Deprecated: The old permission model describing the level of permissions for the current team. Pre-M125."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub permission: Option<dashboard_group::Permission>,
    #[doc = "A permissions bit mask describing the security permissions of the current team for dashboards. When this permission is the value None, use GroupMemberPermission. Permissions are evaluated based on the presence of a value other than None, else the GroupMemberPermission will be saved."]
    #[serde(
        rename = "teamDashboardPermission",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub team_dashboard_permission: Option<dashboard_group::TeamDashboardPermission>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub url: Option<String>,
}
impl DashboardGroup {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod dashboard_group {
    use super::*;
    #[doc = "Deprecated: The old permission model describing the level of permissions for the current team. Pre-M125."]
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Permission {
        #[serde(rename = "none")]
        None,
        #[serde(rename = "edit")]
        Edit,
        #[serde(rename = "manage")]
        Manage,
        #[serde(rename = "managePermissions")]
        ManagePermissions,
    }
    #[doc = "A permissions bit mask describing the security permissions of the current team for dashboards. When this permission is the value None, use GroupMemberPermission. Permissions are evaluated based on the presence of a value other than None, else the GroupMemberPermission will be saved."]
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum TeamDashboardPermission {
        #[serde(rename = "none")]
        None,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "edit")]
        Edit,
        #[serde(rename = "delete")]
        Delete,
        #[serde(rename = "managePermissions")]
        ManagePermissions,
    }
}
#[doc = "Dashboard group entry, wrapping around Dashboard (needed?)"]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DashboardGroupEntry {
    #[serde(flatten)]
    pub dashboard: Dashboard,
}
impl DashboardGroupEntry {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "Response from RestAPI when saving and editing DashboardGroupEntry"]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DashboardGroupEntryResponse {
    #[serde(flatten)]
    pub dashboard_group_entry: DashboardGroupEntry,
}
impl DashboardGroupEntryResponse {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = ""]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DashboardList {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub count: Option<i32>,
    #[serde(
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub value: Vec<Dashboard>,
}
impl DashboardList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = ""]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DashboardResponse {
    #[serde(flatten)]
    pub dashboard_group_entry: DashboardGroupEntry,
}
impl DashboardResponse {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "Lightbox configuration"]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct LightboxOptions {
    #[doc = "Height of desired lightbox, in pixels"]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub height: Option<i32>,
    #[doc = "Set to true to allow lightbox resizing, false to disallow lightbox resizing, defaults to false."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub resizable: Option<bool>,
    #[doc = "Width of desired lightbox, in pixels"]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub width: Option<i32>,
}
impl LightboxOptions {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "The class to represent a collection of REST reference links."]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ReferenceLinks {
    #[doc = "The readonly view of the links.  Because Reference links are readonly, we only want to expose them as read only."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub links: Option<serde_json::Value>,
}
impl ReferenceLinks {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "versioning for an artifact as described at:<http://semver>.org/, of the form major.minor.patch."]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SemanticVersion {
    #[doc = "Major version when you make incompatible API changes"]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub major: Option<i32>,
    #[doc = "Minor version when you add functionality in a backwards-compatible manner"]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub minor: Option<i32>,
    #[doc = "Patch version when you make backwards-compatible bug fixes"]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub patch: Option<i32>,
}
impl SemanticVersion {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "The Team Context for an operation."]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct TeamContext {
    #[doc = "The team project Id or name.  Ignored if ProjectId is set."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub project: Option<String>,
    #[doc = "The Team Project ID.  Required if Project is not set."]
    #[serde(rename = "projectId", default, skip_serializing_if = "Option::is_none")]
    pub project_id: Option<String>,
    #[doc = "The Team Id or name.  Ignored if TeamId is set."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub team: Option<String>,
    #[doc = "The Team Id"]
    #[serde(rename = "teamId", default, skip_serializing_if = "Option::is_none")]
    pub team_id: Option<String>,
}
impl TeamContext {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "This class is used to serialized collections as a single JSON object on the wire, to avoid serializing JSON arrays directly to the client, which can be a security hole"]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct VssJsonCollectionWrapper {
    #[serde(flatten)]
    pub vss_json_collection_wrapper_base: VssJsonCollectionWrapperBase,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub value: Option<String>,
}
impl VssJsonCollectionWrapper {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = ""]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct VssJsonCollectionWrapperBase {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub count: Option<i32>,
}
impl VssJsonCollectionWrapperBase {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "Widget data"]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Widget {
    #[doc = "The class to represent a collection of REST reference links."]
    #[serde(rename = "_links", default, skip_serializing_if = "Option::is_none")]
    pub links: Option<ReferenceLinks>,
    #[doc = "Refers to the allowed sizes for the widget. This gets populated when user wants to configure the widget"]
    #[serde(
        rename = "allowedSizes",
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub allowed_sizes: Vec<WidgetSize>,
    #[doc = "Read-Only Property from Dashboard Service. Indicates if settings are blocked for the current user."]
    #[serde(
        rename = "areSettingsBlockedForUser",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub are_settings_blocked_for_user: Option<bool>,
    #[doc = "Refers to unique identifier of a feature artifact. Used for pinning+unpinning a specific artifact."]
    #[serde(
        rename = "artifactId",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub artifact_id: Option<String>,
    #[serde(
        rename = "configurationContributionId",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub configuration_contribution_id: Option<String>,
    #[serde(
        rename = "configurationContributionRelativeId",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub configuration_contribution_relative_id: Option<String>,
    #[serde(
        rename = "contentUri",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub content_uri: Option<String>,
    #[doc = "The id of the underlying contribution defining the supplied Widget Configuration."]
    #[serde(
        rename = "contributionId",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub contribution_id: Option<String>,
    #[doc = "Model of a Dashboard."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub dashboard: Option<Dashboard>,
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(rename = "isEnabled", default, skip_serializing_if = "Option::is_none")]
    pub is_enabled: Option<bool>,
    #[serde(
        rename = "isNameConfigurable",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub is_name_configurable: Option<bool>,
    #[doc = "Lightbox configuration"]
    #[serde(
        rename = "lightboxOptions",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub lightbox_options: Option<LightboxOptions>,
    #[serde(
        rename = "loadingImageUrl",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub loading_image_url: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[doc = ""]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub position: Option<WidgetPosition>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub settings: Option<String>,
    #[doc = "versioning for an artifact as described at:<http://semver>.org/, of the form major.minor.patch."]
    #[serde(
        rename = "settingsVersion",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub settings_version: Option<SemanticVersion>,
    #[doc = ""]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub size: Option<WidgetSize>,
    #[serde(rename = "typeId", default, skip_serializing_if = "Option::is_none")]
    pub type_id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub url: Option<String>,
}
impl Widget {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = ""]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct WidgetList {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub count: Option<i32>,
    #[serde(
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub value: Vec<Widget>,
}
impl WidgetList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "Contribution based information describing Dashboard Widgets."]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct WidgetMetadata {
    #[doc = "Sizes supported by the Widget."]
    #[serde(
        rename = "allowedSizes",
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub allowed_sizes: Vec<WidgetSize>,
    #[doc = "Opt-in boolean that indicates if the widget requires the Analytics Service to function. Widgets requiring the analytics service are hidden from the catalog if the Analytics Service is not available."]
    #[serde(
        rename = "analyticsServiceRequired",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub analytics_service_required: Option<bool>,
    #[doc = "Resource for an icon in the widget catalog."]
    #[serde(
        rename = "catalogIconUrl",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub catalog_icon_url: Option<String>,
    #[doc = "Opt-in URL string pointing at widget information. Defaults to extension marketplace URL if omitted"]
    #[serde(
        rename = "catalogInfoUrl",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub catalog_info_url: Option<String>,
    #[doc = "The id of the underlying contribution defining the supplied Widget custom configuration UI. Null if custom configuration UI is not available."]
    #[serde(
        rename = "configurationContributionId",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub configuration_contribution_id: Option<String>,
    #[doc = "The relative id of the underlying contribution defining the supplied Widget custom configuration UI. Null if custom configuration UI is not available."]
    #[serde(
        rename = "configurationContributionRelativeId",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub configuration_contribution_relative_id: Option<String>,
    #[doc = "Indicates if the widget requires configuration before being added to dashboard."]
    #[serde(
        rename = "configurationRequired",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub configuration_required: Option<bool>,
    #[doc = "Uri for the widget content to be loaded from ."]
    #[serde(
        rename = "contentUri",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub content_uri: Option<String>,
    #[doc = "The id of the underlying contribution defining the supplied Widget."]
    #[serde(
        rename = "contributionId",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub contribution_id: Option<String>,
    #[doc = "Optional default settings to be copied into widget settings."]
    #[serde(
        rename = "defaultSettings",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub default_settings: Option<String>,
    #[doc = "Summary information describing the widget."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[doc = "Widgets can be disabled by the app store.  We'll need to gracefully handle for: - persistence (Allow) - Requests (Tag as disabled, and provide context)"]
    #[serde(rename = "isEnabled", default, skip_serializing_if = "Option::is_none")]
    pub is_enabled: Option<bool>,
    #[doc = "Opt-out boolean that indicates if the widget supports widget name/title configuration. Widgets ignoring the name should set it to false in the manifest."]
    #[serde(
        rename = "isNameConfigurable",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub is_name_configurable: Option<bool>,
    #[doc = "Opt-out boolean indicating if the widget is hidden from the catalog. Commonly, this is used to allow developers to disable creation of a deprecated widget. A widget must have a functional default state, or have a configuration experience, in order to be visible from the catalog."]
    #[serde(
        rename = "isVisibleFromCatalog",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub is_visible_from_catalog: Option<bool>,
    #[doc = "Keywords associated with this widget, non-filterable and invisible"]
    #[serde(
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub keywords: Vec<String>,
    #[doc = "Lightbox configuration"]
    #[serde(
        rename = "lightboxOptions",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub lightbox_options: Option<LightboxOptions>,
    #[doc = "Resource for a loading placeholder image on dashboard"]
    #[serde(
        rename = "loadingImageUrl",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub loading_image_url: Option<String>,
    #[doc = "User facing name of the widget type. Each widget must use a unique value here."]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[doc = "Publisher Name of this kind of widget."]
    #[serde(
        rename = "publisherName",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub publisher_name: Option<String>,
    #[doc = "Data contract required for the widget to function and to work in its container."]
    #[serde(
        rename = "supportedScopes",
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub supported_scopes: Vec<serde_json::Value>,
    #[doc = "Tags associated with this widget, visible on each widget and filterable."]
    #[serde(
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub tags: Vec<String>,
    #[doc = "Contribution target IDs"]
    #[serde(
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub targets: Vec<String>,
    #[doc = "Deprecated: locally unique developer-facing id of this kind of widget. ContributionId provides a globally unique identifier for widget types."]
    #[serde(rename = "typeId", default, skip_serializing_if = "Option::is_none")]
    pub type_id: Option<String>,
}
impl WidgetMetadata {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = ""]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct WidgetMetadataResponse {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub uri: Option<String>,
    #[doc = "Contribution based information describing Dashboard Widgets."]
    #[serde(
        rename = "widgetMetadata",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub widget_metadata: Option<WidgetMetadata>,
}
impl WidgetMetadataResponse {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = ""]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct WidgetPosition {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub column: Option<i32>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub row: Option<i32>,
}
impl WidgetPosition {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "Response from RestAPI when saving and editing Widget"]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct WidgetResponse {
    #[serde(flatten)]
    pub widget: Widget,
}
impl WidgetResponse {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = ""]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct WidgetSize {
    #[doc = "The Width of the widget, expressed in dashboard grid columns."]
    #[serde(
        rename = "columnSpan",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub column_span: Option<i32>,
    #[doc = "The height of the widget, expressed in dashboard grid rows."]
    #[serde(rename = "rowSpan", default, skip_serializing_if = "Option::is_none")]
    pub row_span: Option<i32>,
}
impl WidgetSize {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = ""]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct WidgetTypesResponse {
    #[doc = "The class to represent a collection of REST reference links."]
    #[serde(rename = "_links", default, skip_serializing_if = "Option::is_none")]
    pub links: Option<ReferenceLinks>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub uri: Option<String>,
    #[serde(
        rename = "widgetTypes",
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub widget_types: Vec<WidgetMetadata>,
}
impl WidgetTypesResponse {
    pub fn new() -> Self {
        Self::default()
    }
}
#[doc = "Wrapper class to support HTTP header generation using CreateResponse, ClientHeaderParameter and ClientResponseType in WidgetV2Controller"]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct WidgetsVersionedList {
    #[serde(
        rename = "eTag",
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub e_tag: Vec<String>,
    #[serde(
        default,
        skip_serializing_if = "Vec::is_empty",
        deserialize_with = "crate::serde::deserialize_null_default"
    )]
    pub widgets: Vec<Widget>,
}
impl WidgetsVersionedList {
    pub fn new() -> Self {
        Self::default()
    }
}