1#![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}