Skip to main content

azure_devops_rust_api/graph/
models.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3#![allow(non_camel_case_types)]
4#![allow(unused_imports)]
5use serde::de::{value, Deserializer, IntoDeserializer};
6use serde::{Deserialize, Serialize, Serializer};
7use std::str::FromStr;
8#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
9pub struct AadGraphMember {
10    #[serde(flatten)]
11    pub graph_member: GraphMember,
12    #[doc = "The short, generally unique name for the user in the backing directory. For AAD users, this corresponds to the mail nickname, which is often but not necessarily similar to the part of the user's mail address before the @ sign. For GitHub users, this corresponds to the GitHub user handle."]
13    #[serde(
14        rename = "directoryAlias",
15        default,
16        skip_serializing_if = "Option::is_none"
17    )]
18    pub directory_alias: Option<String>,
19    #[doc = "When true, the group has been deleted in the identity provider"]
20    #[serde(
21        rename = "isDeletedInOrigin",
22        default,
23        skip_serializing_if = "Option::is_none"
24    )]
25    pub is_deleted_in_origin: Option<bool>,
26    #[doc = "The meta type of the user in the origin, such as \"member\", \"guest\", etc. See UserMetaType for the set of possible values."]
27    #[serde(rename = "metaType", default, skip_serializing_if = "Option::is_none")]
28    pub meta_type: Option<String>,
29}
30impl AadGraphMember {
31    pub fn new() -> Self {
32        Self::default()
33    }
34}
35#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
36pub struct Avatar {
37    #[serde(
38        rename = "isAutoGenerated",
39        default,
40        skip_serializing_if = "Option::is_none"
41    )]
42    pub is_auto_generated: Option<bool>,
43    #[serde(default, skip_serializing_if = "Option::is_none")]
44    pub size: Option<avatar::Size>,
45    #[serde(
46        rename = "timeStamp",
47        default,
48        skip_serializing_if = "Option::is_none",
49        with = "crate::date_time::rfc3339::option"
50    )]
51    pub time_stamp: Option<time::OffsetDateTime>,
52    #[serde(
53        default,
54        deserialize_with = "crate::serde::deserialize_null_as_default",
55        skip_serializing_if = "Vec::is_empty"
56    )]
57    pub value: Vec<String>,
58}
59impl Avatar {
60    pub fn new() -> Self {
61        Self::default()
62    }
63}
64pub mod avatar {
65    use super::*;
66    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
67    pub enum Size {
68        #[serde(rename = "small")]
69        Small,
70        #[serde(rename = "medium")]
71        Medium,
72        #[serde(rename = "large")]
73        Large,
74    }
75}
76#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
77pub struct GraphCachePolicies {
78    #[doc = "Size of the cache"]
79    #[serde(rename = "cacheSize", default, skip_serializing_if = "Option::is_none")]
80    pub cache_size: Option<i32>,
81}
82impl GraphCachePolicies {
83    pub fn new() -> Self {
84        Self::default()
85    }
86}
87#[doc = "Subject descriptor of a Graph entity"]
88#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
89pub struct GraphDescriptorResult {
90    #[doc = "Links"]
91    #[serde(rename = "_links", default, skip_serializing_if = "Option::is_none")]
92    pub links: Option<serde_json::Value>,
93    #[serde(default, skip_serializing_if = "Option::is_none")]
94    pub value: Option<String>,
95}
96impl GraphDescriptorResult {
97    pub fn new() -> Self {
98        Self::default()
99    }
100}
101#[doc = "Represents a set of data used to communicate with a federated provider on behalf of a particular user."]
102#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
103pub struct GraphFederatedProviderData {
104    #[doc = "The access token that can be used to communicated with the federated provider on behalf on the target identity, if we were able to successfully acquire one, otherwise <code>null</code>, if we were not."]
105    #[serde(
106        rename = "accessToken",
107        default,
108        skip_serializing_if = "Option::is_none"
109    )]
110    pub access_token: Option<String>,
111    #[doc = "The name of the federated provider, e.g. \"github.com\"."]
112    #[serde(
113        rename = "providerName",
114        default,
115        skip_serializing_if = "Option::is_none"
116    )]
117    pub provider_name: Option<String>,
118    #[doc = "The descriptor of the graph subject to which this federated provider data corresponds."]
119    #[serde(
120        rename = "subjectDescriptor",
121        default,
122        skip_serializing_if = "Option::is_none"
123    )]
124    pub subject_descriptor: Option<String>,
125    #[doc = "The version number of this federated provider data, which corresponds to when it was last updated. Can be used to prevent returning stale provider data from the cache when the caller is aware of a newer version, such as to prevent local cache poisoning from a remote cache or store. This is the app layer equivalent of the data layer sequence ID."]
126    #[serde(default, skip_serializing_if = "Option::is_none")]
127    pub version: Option<i64>,
128}
129impl GraphFederatedProviderData {
130    pub fn new() -> Self {
131        Self::default()
132    }
133}
134#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
135pub struct GraphGlobalExtendedPropertyBatch {
136    #[serde(
137        rename = "propertyNameFilters",
138        default,
139        deserialize_with = "crate::serde::deserialize_null_as_default",
140        skip_serializing_if = "Vec::is_empty"
141    )]
142    pub property_name_filters: Vec<String>,
143    #[serde(
144        rename = "subjectDescriptors",
145        default,
146        deserialize_with = "crate::serde::deserialize_null_as_default",
147        skip_serializing_if = "Vec::is_empty"
148    )]
149    pub subject_descriptors: Vec<String>,
150}
151impl GraphGlobalExtendedPropertyBatch {
152    pub fn new() -> Self {
153        Self::default()
154    }
155}
156#[doc = "Graph group entity"]
157#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
158pub struct GraphGroup {
159    #[serde(flatten)]
160    pub graph_member: GraphMember,
161    #[doc = "A short phrase to help human readers disambiguate groups with similar names"]
162    #[serde(default, skip_serializing_if = "Option::is_none")]
163    pub description: Option<String>,
164}
165impl GraphGroup {
166    pub fn new() -> Self {
167        Self::default()
168    }
169}
170#[doc = "Do not attempt to use this type to create a new group. This type does not contain sufficient fields to create a new group."]
171#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
172pub struct GraphGroupCreationContext {
173    #[doc = "Optional: If provided, we will use this identifier for the storage key of the created group"]
174    #[serde(
175        rename = "storageKey",
176        default,
177        skip_serializing_if = "Option::is_none"
178    )]
179    pub storage_key: Option<String>,
180}
181impl GraphGroupCreationContext {
182    pub fn new() -> Self {
183        Self::default()
184    }
185}
186#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
187pub struct GraphGroupList {
188    #[serde(default, skip_serializing_if = "Option::is_none")]
189    pub count: Option<i32>,
190    #[serde(
191        default,
192        deserialize_with = "crate::serde::deserialize_null_as_default",
193        skip_serializing_if = "Vec::is_empty"
194    )]
195    pub value: Vec<GraphGroup>,
196}
197impl GraphGroupList {
198    pub fn new() -> Self {
199        Self::default()
200    }
201}
202#[doc = "Use this type to create a new group using the mail address as a reference to an existing group from an external AD or AAD backed provider. This is the subset of GraphGroup fields required for creation of a group for the AAD and AD use case."]
203#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
204pub struct GraphGroupMailAddressCreationContext {
205    #[serde(flatten)]
206    pub graph_group_creation_context: GraphGroupCreationContext,
207    #[doc = "This should be the mail address or the group in the source AD or AAD provider. Example: jamal@contoso.com Team Services will communicate with the source provider to fill all other fields on creation."]
208    #[serde(
209        rename = "mailAddress",
210        default,
211        skip_serializing_if = "Option::is_none"
212    )]
213    pub mail_address: Option<String>,
214}
215impl GraphGroupMailAddressCreationContext {
216    pub fn new() -> Self {
217        Self::default()
218    }
219}
220#[doc = "Use this type to create a new group using the OriginID as a reference to an existing group from an external AD or AAD backed provider. This is the subset of GraphGroup fields required for creation of a group for the AD and AAD use case."]
221#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
222pub struct GraphGroupOriginIdCreationContext {
223    #[serde(flatten)]
224    pub graph_group_creation_context: GraphGroupCreationContext,
225    #[doc = "This should be the object id or sid of the group from the source AD or AAD provider. Example: d47d025a-ce2f-4a79-8618-e8862ade30dd Team Services will communicate with the source provider to fill all other fields on creation."]
226    #[serde(rename = "originId", default, skip_serializing_if = "Option::is_none")]
227    pub origin_id: Option<String>,
228}
229impl GraphGroupOriginIdCreationContext {
230    pub fn new() -> Self {
231        Self::default()
232    }
233}
234#[doc = "Use this type to create a new Vsts group that is not backed by an external provider."]
235#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
236pub struct GraphGroupVstsCreationContext {
237    #[serde(flatten)]
238    pub graph_group_creation_context: GraphGroupCreationContext,
239    #[doc = "For internal use only in back compat scenarios."]
240    #[serde(
241        rename = "crossProject",
242        default,
243        skip_serializing_if = "Option::is_none"
244    )]
245    pub cross_project: Option<bool>,
246    #[doc = "Used by VSTS groups; if set this will be the group description, otherwise ignored"]
247    #[serde(default, skip_serializing_if = "Option::is_none")]
248    pub description: Option<String>,
249    #[serde(default, skip_serializing_if = "Option::is_none")]
250    pub descriptor: Option<String>,
251    #[doc = "Used by VSTS groups; if set this will be the group DisplayName, otherwise ignored"]
252    #[serde(
253        rename = "displayName",
254        default,
255        skip_serializing_if = "Option::is_none"
256    )]
257    pub display_name: Option<String>,
258    #[doc = "For internal use only in back compat scenarios."]
259    #[serde(
260        rename = "restrictedVisibility",
261        default,
262        skip_serializing_if = "Option::is_none"
263    )]
264    pub restricted_visibility: Option<bool>,
265    #[doc = "For internal use only in back compat scenarios."]
266    #[serde(
267        rename = "specialGroupType",
268        default,
269        skip_serializing_if = "Option::is_none"
270    )]
271    pub special_group_type: Option<String>,
272}
273impl GraphGroupVstsCreationContext {
274    pub fn new() -> Self {
275        Self::default()
276    }
277}
278#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
279pub struct GraphMember {
280    #[serde(flatten)]
281    pub graph_subject: GraphSubject,
282    #[doc = "This represents the name of the container of origin for a graph member. (For MSA this is \"Windows Live ID\", for AD the name of the domain, for AAD the tenantID of the directory, for VSTS groups the ScopeId, etc)"]
283    #[serde(default, skip_serializing_if = "Option::is_none")]
284    pub domain: Option<String>,
285    #[doc = "The email address of record for a given graph member. This may be different than the principal name."]
286    #[serde(
287        rename = "mailAddress",
288        default,
289        skip_serializing_if = "Option::is_none"
290    )]
291    pub mail_address: Option<String>,
292    #[doc = "This is the PrincipalName of this graph member from the source provider. The source provider may change this field over time and it is not guaranteed to be immutable for the life of the graph member by VSTS."]
293    #[serde(
294        rename = "principalName",
295        default,
296        skip_serializing_if = "Option::is_none"
297    )]
298    pub principal_name: Option<String>,
299}
300impl GraphMember {
301    pub fn new() -> Self {
302        Self::default()
303    }
304}
305#[doc = "Relationship between a container and a member"]
306#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
307pub struct GraphMembership {
308    #[doc = "Links"]
309    #[serde(rename = "_links", default, skip_serializing_if = "Option::is_none")]
310    pub links: Option<serde_json::Value>,
311    #[serde(
312        rename = "containerDescriptor",
313        default,
314        skip_serializing_if = "Option::is_none"
315    )]
316    pub container_descriptor: Option<String>,
317    #[serde(
318        rename = "memberDescriptor",
319        default,
320        skip_serializing_if = "Option::is_none"
321    )]
322    pub member_descriptor: Option<String>,
323}
324impl GraphMembership {
325    pub fn new() -> Self {
326        Self::default()
327    }
328}
329#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
330pub struct GraphMembershipList {
331    #[serde(default, skip_serializing_if = "Option::is_none")]
332    pub count: Option<i32>,
333    #[serde(
334        default,
335        deserialize_with = "crate::serde::deserialize_null_as_default",
336        skip_serializing_if = "Vec::is_empty"
337    )]
338    pub value: Vec<GraphMembership>,
339}
340impl GraphMembershipList {
341    pub fn new() -> Self {
342        Self::default()
343    }
344}
345#[doc = "Status of a Graph membership (active/inactive)"]
346#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
347pub struct GraphMembershipState {
348    #[doc = "Links"]
349    #[serde(rename = "_links", default, skip_serializing_if = "Option::is_none")]
350    pub links: Option<serde_json::Value>,
351    #[doc = "When true, the membership is active"]
352    #[serde(default, skip_serializing_if = "Option::is_none")]
353    pub active: Option<bool>,
354}
355impl GraphMembershipState {
356    pub fn new() -> Self {
357        Self::default()
358    }
359}
360#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
361pub struct GraphMembershipTraversal {
362    #[doc = "Reason why the subject could not be traversed completely"]
363    #[serde(
364        rename = "incompletenessReason",
365        default,
366        skip_serializing_if = "Option::is_none"
367    )]
368    pub incompleteness_reason: Option<String>,
369    #[doc = "When true, the subject is traversed completely"]
370    #[serde(
371        rename = "isComplete",
372        default,
373        skip_serializing_if = "Option::is_none"
374    )]
375    pub is_complete: Option<bool>,
376    #[doc = "The traversed subject descriptor"]
377    #[serde(
378        rename = "subjectDescriptor",
379        default,
380        skip_serializing_if = "Option::is_none"
381    )]
382    pub subject_descriptor: Option<String>,
383    #[doc = "Subject descriptor ids of the traversed members"]
384    #[serde(
385        rename = "traversedSubjectIds",
386        default,
387        deserialize_with = "crate::serde::deserialize_null_as_default",
388        skip_serializing_if = "Vec::is_empty"
389    )]
390    pub traversed_subject_ids: Vec<String>,
391    #[doc = "Subject descriptors of the traversed members"]
392    #[serde(
393        rename = "traversedSubjects",
394        default,
395        deserialize_with = "crate::serde::deserialize_null_as_default",
396        skip_serializing_if = "Vec::is_empty"
397    )]
398    pub traversed_subjects: Vec<String>,
399}
400impl GraphMembershipTraversal {
401    pub fn new() -> Self {
402        Self::default()
403    }
404}
405#[doc = "Who is the provider for this user and what is the identifier and domain that is used to uniquely identify the user."]
406#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
407pub struct GraphProviderInfo {
408    #[doc = "The descriptor is the primary way to reference the graph subject while the system is running. This field will uniquely identify the same graph subject across both Accounts and Organizations."]
409    #[serde(default, skip_serializing_if = "Option::is_none")]
410    pub descriptor: Option<String>,
411    #[doc = "This represents the name of the container of origin for a graph member. (For MSA this is \"Windows Live ID\", for AAD the tenantID of the directory.)"]
412    #[serde(default, skip_serializing_if = "Option::is_none")]
413    pub domain: Option<String>,
414    #[doc = "The type of source provider for the origin identifier (ex: \"aad\", \"msa\")"]
415    #[serde(default, skip_serializing_if = "Option::is_none")]
416    pub origin: Option<String>,
417    #[doc = "The unique identifier from the system of origin. (For MSA this is the PUID in hex notation, for AAD this is the object id.)"]
418    #[serde(rename = "originId", default, skip_serializing_if = "Option::is_none")]
419    pub origin_id: Option<String>,
420}
421impl GraphProviderInfo {
422    pub fn new() -> Self {
423        Self::default()
424    }
425}
426#[doc = "Container where a graph entity is defined (organization, project, team)"]
427#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
428pub struct GraphScope {
429    #[serde(flatten)]
430    pub graph_subject: GraphSubject,
431    #[doc = "The subject descriptor that references the administrators group for this scope. Only members of this group can change the contents of this scope or assign other users permissions to access this scope."]
432    #[serde(
433        rename = "administratorDescriptor",
434        default,
435        skip_serializing_if = "Option::is_none"
436    )]
437    pub administrator_descriptor: Option<String>,
438    #[doc = "When true, this scope is also a securing host for one or more scopes."]
439    #[serde(rename = "isGlobal", default, skip_serializing_if = "Option::is_none")]
440    pub is_global: Option<bool>,
441    #[doc = "The subject descriptor for the closest account or organization in the ancestor tree of this scope."]
442    #[serde(
443        rename = "parentDescriptor",
444        default,
445        skip_serializing_if = "Option::is_none"
446    )]
447    pub parent_descriptor: Option<String>,
448    #[doc = "The type of this scope. Typically ServiceHost or TeamProject."]
449    #[serde(rename = "scopeType", default, skip_serializing_if = "Option::is_none")]
450    pub scope_type: Option<graph_scope::ScopeType>,
451    #[doc = "The subject descriptor for the containing organization in the ancestor tree of this scope."]
452    #[serde(
453        rename = "securingHostDescriptor",
454        default,
455        skip_serializing_if = "Option::is_none"
456    )]
457    pub securing_host_descriptor: Option<String>,
458}
459impl GraphScope {
460    pub fn new() -> Self {
461        Self::default()
462    }
463}
464pub mod graph_scope {
465    use super::*;
466    #[doc = "The type of this scope. Typically ServiceHost or TeamProject."]
467    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
468    pub enum ScopeType {
469        #[serde(rename = "generic")]
470        Generic,
471        #[serde(rename = "serviceHost")]
472        ServiceHost,
473        #[serde(rename = "teamProject")]
474        TeamProject,
475    }
476}
477#[doc = "This type is the subset of fields that can be provided by the user to create a Vsts scope. Scope creation is currently limited to internal back-compat scenarios. End users that attempt to create a scope with this API will fail."]
478#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
479pub struct GraphScopeCreationContext {
480    #[doc = "Set this field to override the default description of this scope's admin group."]
481    #[serde(
482        rename = "adminGroupDescription",
483        default,
484        skip_serializing_if = "Option::is_none"
485    )]
486    pub admin_group_description: Option<String>,
487    #[doc = "All scopes have an Administrator Group that controls access to the contents of the scope. Set this field to use a non-default group name for that administrators group."]
488    #[serde(
489        rename = "adminGroupName",
490        default,
491        skip_serializing_if = "Option::is_none"
492    )]
493    pub admin_group_name: Option<String>,
494    #[doc = "Set this optional field if this scope is created on behalf of a user other than the user making the request. This should be the Id of the user that is not the requester."]
495    #[serde(rename = "creatorId", default, skip_serializing_if = "Option::is_none")]
496    pub creator_id: Option<String>,
497    #[doc = "The scope must be provided with a unique name within the parent scope. This means the created scope can have a parent or child with the same name, but no siblings with the same name."]
498    #[serde(default, skip_serializing_if = "Option::is_none")]
499    pub name: Option<String>,
500    #[doc = "The type of scope being created."]
501    #[serde(rename = "scopeType", default, skip_serializing_if = "Option::is_none")]
502    pub scope_type: Option<graph_scope_creation_context::ScopeType>,
503    #[doc = "An optional ID that uniquely represents the scope within it's parent scope. If this parameter is not provided, Vsts will generate on automatically."]
504    #[serde(
505        rename = "storageKey",
506        default,
507        skip_serializing_if = "Option::is_none"
508    )]
509    pub storage_key: Option<String>,
510}
511impl GraphScopeCreationContext {
512    pub fn new() -> Self {
513        Self::default()
514    }
515}
516pub mod graph_scope_creation_context {
517    use super::*;
518    #[doc = "The type of scope being created."]
519    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
520    pub enum ScopeType {
521        #[serde(rename = "generic")]
522        Generic,
523        #[serde(rename = "serviceHost")]
524        ServiceHost,
525        #[serde(rename = "teamProject")]
526        TeamProject,
527    }
528}
529#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
530pub struct GraphServicePrincipal {
531    #[serde(flatten)]
532    pub aad_graph_member: AadGraphMember,
533    #[serde(
534        rename = "applicationId",
535        default,
536        skip_serializing_if = "Option::is_none"
537    )]
538    pub application_id: Option<String>,
539}
540impl GraphServicePrincipal {
541    pub fn new() -> Self {
542        Self::default()
543    }
544}
545#[doc = "Do not attempt to use this type to create a new service principal. Use one of the subclasses instead. This type does not contain sufficient fields to create a new service principal."]
546#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
547pub struct GraphServicePrincipalCreationContext {
548    #[doc = "Optional: If provided, we will use this identifier for the storage key of the created service principal"]
549    #[serde(
550        rename = "storageKey",
551        default,
552        skip_serializing_if = "Option::is_none"
553    )]
554    pub storage_key: Option<String>,
555}
556impl GraphServicePrincipalCreationContext {
557    pub fn new() -> Self {
558        Self::default()
559    }
560}
561#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
562pub struct GraphServicePrincipalList {
563    #[serde(default, skip_serializing_if = "Option::is_none")]
564    pub count: Option<i32>,
565    #[serde(
566        default,
567        deserialize_with = "crate::serde::deserialize_null_as_default",
568        skip_serializing_if = "Vec::is_empty"
569    )]
570    pub value: Vec<GraphServicePrincipal>,
571}
572impl GraphServicePrincipalList {
573    pub fn new() -> Self {
574        Self::default()
575    }
576}
577#[doc = "Use this type to create a new service principal using the OriginID as a reference to an existing service principal from an external AAD backed provider. This is the subset of GraphServicePrincipal fields required for creation of a GraphServicePrincipal for the AAD use case when looking up the service principal by its unique ID in the backing provider."]
578#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
579pub struct GraphServicePrincipalOriginIdCreationContext {
580    #[serde(flatten)]
581    pub graph_service_principal_creation_context: GraphServicePrincipalCreationContext,
582    #[doc = "This should be the object id of the service principal from the AAD provider. Example: d47d025a-ce2f-4a79-8618-e8862ade30dd Team Services will communicate with the source provider to fill all other fields on creation."]
583    #[serde(rename = "originId", default, skip_serializing_if = "Option::is_none")]
584    pub origin_id: Option<String>,
585}
586impl GraphServicePrincipalOriginIdCreationContext {
587    pub fn new() -> Self {
588        Self::default()
589    }
590}
591#[doc = "Use this type to update an existing service principal using the OriginID as a reference to an existing service principal from an external AAD backed provider. This is the subset of GraphServicePrincipal fields required for creation of a GraphServicePrincipal for AAD use case when looking up the service principal by its unique ID in the backing provider."]
592#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
593pub struct GraphServicePrincipalOriginIdUpdateContext {
594    #[doc = "This should be the object id or sid of the service principal from the source AAD provider. Example: d47d025a-ce2f-4a79-8618-e8862ade30dd Azure Devops will communicate with the source provider to fill all other fields on creation."]
595    #[serde(rename = "originId", default, skip_serializing_if = "Option::is_none")]
596    pub origin_id: Option<String>,
597}
598impl GraphServicePrincipalOriginIdUpdateContext {
599    pub fn new() -> Self {
600        Self::default()
601    }
602}
603#[doc = "Do not attempt to use this type to update service principal. Use one of the subclasses instead. This type does not contain sufficient fields to create a new service principal."]
604#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
605pub struct GraphServicePrincipalUpdateContext {}
606impl GraphServicePrincipalUpdateContext {
607    pub fn new() -> Self {
608        Self::default()
609    }
610}
611#[doc = "Storage key of a Graph entity"]
612#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
613pub struct GraphStorageKeyResult {
614    #[doc = "Links"]
615    #[serde(rename = "_links", default, skip_serializing_if = "Option::is_none")]
616    pub links: Option<serde_json::Value>,
617    #[serde(default, skip_serializing_if = "Option::is_none")]
618    pub value: Option<String>,
619}
620impl GraphStorageKeyResult {
621    pub fn new() -> Self {
622        Self::default()
623    }
624}
625#[doc = "Top-level graph entity"]
626#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
627pub struct GraphSubject {
628    #[serde(flatten)]
629    pub graph_subject_base: GraphSubjectBase,
630    #[doc = "[Internal Use Only] The legacy descriptor is here in case you need to access old version IMS using identity descriptor."]
631    #[serde(
632        rename = "legacyDescriptor",
633        default,
634        skip_serializing_if = "Option::is_none"
635    )]
636    pub legacy_descriptor: Option<String>,
637    #[doc = "The type of source provider for the origin identifier (ex:AD, AAD, MSA)"]
638    #[serde(default, skip_serializing_if = "Option::is_none")]
639    pub origin: Option<String>,
640    #[doc = "The unique identifier from the system of origin. Typically a sid, object id or Guid. Linking and unlinking operations can cause this value to change for a user because the user is not backed by a different provider and has a different unique id in the new provider."]
641    #[serde(rename = "originId", default, skip_serializing_if = "Option::is_none")]
642    pub origin_id: Option<String>,
643    #[doc = "This field identifies the type of the graph subject (ex: Group, Scope, User)."]
644    #[serde(
645        rename = "subjectKind",
646        default,
647        skip_serializing_if = "Option::is_none"
648    )]
649    pub subject_kind: Option<String>,
650}
651impl GraphSubject {
652    pub fn new() -> Self {
653        Self::default()
654    }
655}
656#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
657pub struct GraphSubjectBase {
658    #[doc = "Links"]
659    #[serde(rename = "_links", default, skip_serializing_if = "Option::is_none")]
660    pub links: Option<serde_json::Value>,
661    #[doc = "The descriptor is the primary way to reference the graph subject while the system is running. This field will uniquely identify the same graph subject across both Accounts and Organizations."]
662    #[serde(default, skip_serializing_if = "Option::is_none")]
663    pub descriptor: Option<String>,
664    #[doc = "This is the non-unique display name of the graph subject. To change this field, you must alter its value in the source provider."]
665    #[serde(
666        rename = "displayName",
667        default,
668        skip_serializing_if = "Option::is_none"
669    )]
670    pub display_name: Option<String>,
671    #[doc = "This url is the full route to the source resource of this graph subject."]
672    #[serde(default, skip_serializing_if = "Option::is_none")]
673    pub url: Option<String>,
674}
675impl GraphSubjectBase {
676    pub fn new() -> Self {
677        Self::default()
678    }
679}
680#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
681pub struct GraphSubjectList {
682    #[serde(default, skip_serializing_if = "Option::is_none")]
683    pub count: Option<i32>,
684    #[serde(
685        default,
686        deserialize_with = "crate::serde::deserialize_null_as_default",
687        skip_serializing_if = "Vec::is_empty"
688    )]
689    pub value: Vec<GraphSubject>,
690}
691impl GraphSubjectList {
692    pub fn new() -> Self {
693        Self::default()
694    }
695}
696#[doc = "Batching of subjects to lookup using the Graph API"]
697#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
698pub struct GraphSubjectLookup {
699    #[serde(
700        rename = "lookupKeys",
701        default,
702        deserialize_with = "crate::serde::deserialize_null_as_default",
703        skip_serializing_if = "Vec::is_empty"
704    )]
705    pub lookup_keys: Vec<GraphSubjectLookupKey>,
706}
707impl GraphSubjectLookup {
708    pub fn new() -> Self {
709        Self::default()
710    }
711}
712#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
713pub struct GraphSubjectLookupKey {
714    #[serde(default, skip_serializing_if = "Option::is_none")]
715    pub descriptor: Option<String>,
716}
717impl GraphSubjectLookupKey {
718    pub fn new() -> Self {
719        Self::default()
720    }
721}
722#[doc = "Subject to search using the Graph API"]
723#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
724pub struct GraphSubjectQuery {
725    #[doc = "Search term to search for Azure Devops users or/and groups"]
726    #[serde(default, skip_serializing_if = "Option::is_none")]
727    pub query: Option<String>,
728    #[doc = "Optional parameter. Specify a non-default scope (collection, project) to search for users or groups within the scope."]
729    #[serde(
730        rename = "scopeDescriptor",
731        default,
732        skip_serializing_if = "Option::is_none"
733    )]
734    pub scope_descriptor: Option<String>,
735    #[doc = "\"User\" or \"Group\" can be specified, both or either"]
736    #[serde(
737        rename = "subjectKind",
738        default,
739        deserialize_with = "crate::serde::deserialize_null_as_default",
740        skip_serializing_if = "Vec::is_empty"
741    )]
742    pub subject_kind: Vec<String>,
743}
744impl GraphSubjectQuery {
745    pub fn new() -> Self {
746        Self::default()
747    }
748}
749#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
750pub struct GraphSystemSubject {
751    #[serde(flatten)]
752    pub graph_subject: GraphSubject,
753}
754impl GraphSystemSubject {
755    pub fn new() -> Self {
756        Self::default()
757    }
758}
759#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
760pub struct GraphUser {
761    #[serde(flatten)]
762    pub aad_graph_member: AadGraphMember,
763}
764impl GraphUser {
765    pub fn new() -> Self {
766        Self::default()
767    }
768}
769#[doc = "Do not attempt to use this type to create a new user. Use one of the subclasses instead. This type does not contain sufficient fields to create a new user."]
770#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
771pub struct GraphUserCreationContext {
772    #[doc = "Optional: If provided, we will use this identifier for the storage key of the created user"]
773    #[serde(
774        rename = "storageKey",
775        default,
776        skip_serializing_if = "Option::is_none"
777    )]
778    pub storage_key: Option<String>,
779}
780impl GraphUserCreationContext {
781    pub fn new() -> Self {
782        Self::default()
783    }
784}
785#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
786pub struct GraphUserList {
787    #[serde(default, skip_serializing_if = "Option::is_none")]
788    pub count: Option<i32>,
789    #[serde(
790        default,
791        deserialize_with = "crate::serde::deserialize_null_as_default",
792        skip_serializing_if = "Vec::is_empty"
793    )]
794    pub value: Vec<GraphUser>,
795}
796impl GraphUserList {
797    pub fn new() -> Self {
798        Self::default()
799    }
800}
801#[doc = "Use this type to create a new user using the mail address as a reference to an existing user from an external AD or AAD backed provider. This is the subset of GraphUser fields required for creation of a GraphUser for the AD and AAD use case when looking up the user by its mail address in the backing provider."]
802#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
803pub struct GraphUserMailAddressCreationContext {
804    #[serde(flatten)]
805    pub graph_user_creation_context: GraphUserCreationContext,
806    #[doc = "This should be the mail address of the user in the source AD or AAD provider. Example: Jamal.Hartnett@contoso.com Team Services will communicate with the source provider to fill all other fields on creation."]
807    #[serde(
808        rename = "mailAddress",
809        default,
810        skip_serializing_if = "Option::is_none"
811    )]
812    pub mail_address: Option<String>,
813}
814impl GraphUserMailAddressCreationContext {
815    pub fn new() -> Self {
816        Self::default()
817    }
818}
819#[doc = "Use this type to create a new user using the OriginID as a reference to an existing user from an external AD or AAD backed provider. This is the subset of GraphUser fields required for creation of a GraphUser for the AD and AAD use case when looking up the user by its unique ID in the backing provider."]
820#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
821pub struct GraphUserOriginIdCreationContext {
822    #[serde(flatten)]
823    pub graph_user_creation_context: GraphUserCreationContext,
824    #[doc = "This should be the name of the origin provider. Example: github.com"]
825    #[serde(default, skip_serializing_if = "Option::is_none")]
826    pub origin: Option<String>,
827    #[doc = "This should be the object id or sid of the user from the source AD or AAD provider. Example: d47d025a-ce2f-4a79-8618-e8862ade30dd Team Services will communicate with the source provider to fill all other fields on creation."]
828    #[serde(rename = "originId", default, skip_serializing_if = "Option::is_none")]
829    pub origin_id: Option<String>,
830}
831impl GraphUserOriginIdCreationContext {
832    pub fn new() -> Self {
833        Self::default()
834    }
835}
836#[doc = "Use this type to update an existing user using the OriginID as a reference to an existing user from an external AD or AAD backed provider. This is the subset of GraphUser fields required for creation of a GraphUser for the AD and AAD use case when looking up the user by its unique ID in the backing provider."]
837#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
838pub struct GraphUserOriginIdUpdateContext {
839    #[doc = "This should be the object id or sid of the user from the source AD or AAD provider. Example: d47d025a-ce2f-4a79-8618-e8862ade30dd Azure Devops will communicate with the source provider to fill all other fields on creation."]
840    #[serde(rename = "originId", default, skip_serializing_if = "Option::is_none")]
841    pub origin_id: Option<String>,
842}
843impl GraphUserOriginIdUpdateContext {
844    pub fn new() -> Self {
845        Self::default()
846    }
847}
848#[doc = "Use this type to create a new user using the principal name as a reference to an existing user from an external AD or AAD backed provider. This is the subset of GraphUser fields required for creation of a GraphUser for the AD and AAD use case when looking up the user by its principal name in the backing provider."]
849#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
850pub struct GraphUserPrincipalNameCreationContext {
851    #[serde(flatten)]
852    pub graph_user_creation_context: GraphUserCreationContext,
853    #[doc = "This should be the principal name or upn of the user in the source AD or AAD provider. Example: jamal@contoso.com Team Services will communicate with the source provider to fill all other fields on creation."]
854    #[serde(
855        rename = "principalName",
856        default,
857        skip_serializing_if = "Option::is_none"
858    )]
859    pub principal_name: Option<String>,
860}
861impl GraphUserPrincipalNameCreationContext {
862    pub fn new() -> Self {
863        Self::default()
864    }
865}
866#[doc = "Use this type for transfering identity rights, for instance after performing a Tenant switch."]
867#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
868pub struct GraphUserPrincipalNameUpdateContext {
869    #[doc = "This should be Principal Name (UPN) to which we want to transfer rights. Example: destination@email.com"]
870    #[serde(
871        rename = "principalName",
872        default,
873        skip_serializing_if = "Option::is_none"
874    )]
875    pub principal_name: Option<String>,
876}
877impl GraphUserPrincipalNameUpdateContext {
878    pub fn new() -> Self {
879        Self::default()
880    }
881}
882#[doc = "Do not attempt to use this type to update user. Use one of the subclasses instead. This type does not contain sufficient fields to create a new user."]
883#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
884pub struct GraphUserUpdateContext {}
885impl GraphUserUpdateContext {
886    pub fn new() -> Self {
887        Self::default()
888    }
889}
890#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
891pub struct IdentityMapping {
892    #[serde(default, skip_serializing_if = "Option::is_none")]
893    pub source: Option<UserPrincipalName>,
894    #[serde(default, skip_serializing_if = "Option::is_none")]
895    pub target: Option<UserPrincipalName>,
896}
897impl IdentityMapping {
898    pub fn new() -> Self {
899        Self::default()
900    }
901}
902#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
903pub struct IdentityMappings {
904    #[serde(
905        default,
906        deserialize_with = "crate::serde::deserialize_null_as_default",
907        skip_serializing_if = "Vec::is_empty"
908    )]
909    pub mappings: Vec<IdentityMapping>,
910}
911impl IdentityMappings {
912    pub fn new() -> Self {
913        Self::default()
914    }
915}
916#[doc = "Represents an abstract JSON token."]
917#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
918pub struct JToken {
919    #[doc = "Represents an abstract JSON token."]
920    #[serde(default, skip_serializing_if = "Option::is_none")]
921    pub first: Option<Box<JToken>>,
922    #[doc = "Gets a value indicating whether this token has child tokens."]
923    #[serde(rename = "hasValues", default, skip_serializing_if = "Option::is_none")]
924    pub has_values: Option<bool>,
925    #[doc = "Represents an abstract JSON token."]
926    #[serde(default, skip_serializing_if = "Option::is_none")]
927    pub item: Option<Box<JToken>>,
928    #[doc = "Represents an abstract JSON token."]
929    #[serde(default, skip_serializing_if = "Option::is_none")]
930    pub last: Option<Box<JToken>>,
931    #[doc = "Represents an abstract JSON token."]
932    #[serde(default, skip_serializing_if = "Option::is_none")]
933    pub next: Option<Box<JToken>>,
934    #[doc = "Gets or sets the parent."]
935    #[serde(default, skip_serializing_if = "Option::is_none")]
936    pub parent: Option<String>,
937    #[doc = "Gets the path of the JSON token."]
938    #[serde(default, skip_serializing_if = "Option::is_none")]
939    pub path: Option<String>,
940    #[doc = "Represents an abstract JSON token."]
941    #[serde(default, skip_serializing_if = "Option::is_none")]
942    pub previous: Option<Box<JToken>>,
943    #[doc = "Represents an abstract JSON token."]
944    #[serde(default, skip_serializing_if = "Option::is_none")]
945    pub root: Option<Box<JToken>>,
946    #[doc = "Gets the node type for this JToken."]
947    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
948    pub type_: Option<String>,
949}
950impl JToken {
951    pub fn new() -> Self {
952        Self::default()
953    }
954}
955#[doc = "The JSON model for JSON Patch Operations"]
956#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
957pub struct JsonPatchDocument {}
958impl JsonPatchDocument {
959    pub fn new() -> Self {
960        Self::default()
961    }
962}
963#[doc = "The JSON model for a JSON Patch operation"]
964#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
965pub struct JsonPatchOperation {
966    #[doc = "The path to copy from for the Move/Copy operation."]
967    #[serde(default, skip_serializing_if = "Option::is_none")]
968    pub from: Option<String>,
969    #[doc = "The patch operation"]
970    #[serde(default, skip_serializing_if = "Option::is_none")]
971    pub op: Option<json_patch_operation::Op>,
972    #[doc = "The path for the operation. In the case of an array, a zero based index can be used to specify the position in the array (e.g. /biscuits/0/name). The \"-\" character can be used instead of an index to insert at the end of the array (e.g. /biscuits/-)."]
973    #[serde(default, skip_serializing_if = "Option::is_none")]
974    pub path: Option<String>,
975    #[doc = "The value for the operation. This is either a primitive or a JToken."]
976    #[serde(default, skip_serializing_if = "Option::is_none")]
977    pub value: Option<serde_json::Value>,
978}
979impl JsonPatchOperation {
980    pub fn new() -> Self {
981        Self::default()
982    }
983}
984pub mod json_patch_operation {
985    use super::*;
986    #[doc = "The patch operation"]
987    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
988    pub enum Op {
989        #[serde(rename = "add")]
990        Add,
991        #[serde(rename = "remove")]
992        Remove,
993        #[serde(rename = "replace")]
994        Replace,
995        #[serde(rename = "move")]
996        Move,
997        #[serde(rename = "copy")]
998        Copy,
999        #[serde(rename = "test")]
1000        Test,
1001    }
1002}
1003#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1004pub struct MappingResult {
1005    #[serde(default, skip_serializing_if = "Option::is_none")]
1006    pub code: Option<String>,
1007    #[serde(
1008        rename = "errorMessage",
1009        default,
1010        skip_serializing_if = "Option::is_none"
1011    )]
1012    pub error_message: Option<String>,
1013}
1014impl MappingResult {
1015    pub fn new() -> Self {
1016        Self::default()
1017    }
1018}
1019#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1020pub struct PagedGraphGroups {
1021    #[doc = "This will be non-null if there is another page of data. There will never be more than one continuation token returned by a request."]
1022    #[serde(
1023        rename = "continuationToken",
1024        default,
1025        deserialize_with = "crate::serde::deserialize_null_as_default",
1026        skip_serializing_if = "Vec::is_empty"
1027    )]
1028    pub continuation_token: Vec<String>,
1029    #[doc = "The enumerable list of groups found within a page."]
1030    #[serde(
1031        rename = "graphGroups",
1032        default,
1033        deserialize_with = "crate::serde::deserialize_null_as_default",
1034        skip_serializing_if = "Vec::is_empty"
1035    )]
1036    pub graph_groups: Vec<GraphGroup>,
1037}
1038impl PagedGraphGroups {
1039    pub fn new() -> Self {
1040        Self::default()
1041    }
1042}
1043#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1044pub struct PagedGraphMembers {
1045    #[doc = "This will be non-null if there is another page of data. There will never be more than one continuation token returned by a request."]
1046    #[serde(
1047        rename = "continuationToken",
1048        default,
1049        deserialize_with = "crate::serde::deserialize_null_as_default",
1050        skip_serializing_if = "Vec::is_empty"
1051    )]
1052    pub continuation_token: Vec<String>,
1053    #[doc = "The enumerable list of members found within a page."]
1054    #[serde(
1055        rename = "graphMembers",
1056        default,
1057        deserialize_with = "crate::serde::deserialize_null_as_default",
1058        skip_serializing_if = "Vec::is_empty"
1059    )]
1060    pub graph_members: Vec<GraphMember>,
1061}
1062impl PagedGraphMembers {
1063    pub fn new() -> Self {
1064        Self::default()
1065    }
1066}
1067#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1068pub struct PagedGraphServicePrincipals {
1069    #[doc = "This will be non-null if there is another page of data. There will never be more than one continuation token returned by a request."]
1070    #[serde(
1071        rename = "continuationToken",
1072        default,
1073        deserialize_with = "crate::serde::deserialize_null_as_default",
1074        skip_serializing_if = "Vec::is_empty"
1075    )]
1076    pub continuation_token: Vec<String>,
1077    #[doc = "The enumerable list of service principals found within a page."]
1078    #[serde(
1079        rename = "graphServicePrincipals",
1080        default,
1081        deserialize_with = "crate::serde::deserialize_null_as_default",
1082        skip_serializing_if = "Vec::is_empty"
1083    )]
1084    pub graph_service_principals: Vec<GraphServicePrincipal>,
1085}
1086impl PagedGraphServicePrincipals {
1087    pub fn new() -> Self {
1088        Self::default()
1089    }
1090}
1091#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1092pub struct PagedGraphUsers {
1093    #[doc = "This will be non-null if there is another page of data. There will never be more than one continuation token returned by a request."]
1094    #[serde(
1095        rename = "continuationToken",
1096        default,
1097        deserialize_with = "crate::serde::deserialize_null_as_default",
1098        skip_serializing_if = "Vec::is_empty"
1099    )]
1100    pub continuation_token: Vec<String>,
1101    #[doc = "The enumerable set of users found within a page."]
1102    #[serde(
1103        rename = "graphUsers",
1104        default,
1105        deserialize_with = "crate::serde::deserialize_null_as_default",
1106        skip_serializing_if = "Vec::is_empty"
1107    )]
1108    pub graph_users: Vec<GraphUser>,
1109}
1110impl PagedGraphUsers {
1111    pub fn new() -> Self {
1112        Self::default()
1113    }
1114}
1115#[doc = "The class to represent a collection of REST reference links."]
1116#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1117pub struct ReferenceLinks {
1118    #[doc = "The readonly view of the links.  Because Reference links are readonly, we only want to expose them as read only."]
1119    #[serde(default, skip_serializing_if = "Option::is_none")]
1120    pub links: Option<serde_json::Value>,
1121}
1122impl ReferenceLinks {
1123    pub fn new() -> Self {
1124        Self::default()
1125    }
1126}
1127#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1128pub struct RequestAccessPayLoad {
1129    #[serde(default, skip_serializing_if = "Option::is_none")]
1130    pub message: Option<String>,
1131    #[serde(
1132        rename = "projectUri",
1133        default,
1134        skip_serializing_if = "Option::is_none"
1135    )]
1136    pub project_uri: Option<String>,
1137    #[serde(
1138        rename = "urlRequested",
1139        default,
1140        skip_serializing_if = "Option::is_none"
1141    )]
1142    pub url_requested: Option<String>,
1143}
1144impl RequestAccessPayLoad {
1145    pub fn new() -> Self {
1146        Self::default()
1147    }
1148}
1149#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1150pub struct ResolveDisconnectedUsersResponse {
1151    #[serde(default, skip_serializing_if = "Option::is_none")]
1152    pub code: Option<String>,
1153    #[serde(
1154        rename = "errorMessage",
1155        default,
1156        skip_serializing_if = "Option::is_none"
1157    )]
1158    pub error_message: Option<String>,
1159    #[serde(
1160        rename = "mappingResults",
1161        default,
1162        deserialize_with = "crate::serde::deserialize_null_as_default",
1163        skip_serializing_if = "Vec::is_empty"
1164    )]
1165    pub mapping_results: Vec<MappingResult>,
1166}
1167impl ResolveDisconnectedUsersResponse {
1168    pub fn new() -> Self {
1169        Self::default()
1170    }
1171}
1172#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1173pub struct UserPrincipalName {
1174    #[serde(
1175        rename = "principalName",
1176        default,
1177        skip_serializing_if = "Option::is_none"
1178    )]
1179    pub principal_name: Option<String>,
1180}
1181impl UserPrincipalName {
1182    pub fn new() -> Self {
1183        Self::default()
1184    }
1185}
1186#[doc = "This class is used to serialize collections as a single JSON object on the wire."]
1187#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1188pub struct VssJsonCollectionWrapper {
1189    #[serde(flatten)]
1190    pub vss_json_collection_wrapper_base: VssJsonCollectionWrapperBase,
1191    #[doc = "The serialized item."]
1192    #[serde(default, skip_serializing_if = "Option::is_none")]
1193    pub value: Option<String>,
1194}
1195impl VssJsonCollectionWrapper {
1196    pub fn new() -> Self {
1197        Self::default()
1198    }
1199}
1200#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1201pub struct VssJsonCollectionWrapperBase {
1202    #[doc = "The number of serialized items."]
1203    #[serde(default, skip_serializing_if = "Option::is_none")]
1204    pub count: Option<i32>,
1205}
1206impl VssJsonCollectionWrapperBase {
1207    pub fn new() -> Self {
1208        Self::default()
1209    }
1210}