azure_devops_rust_api/permissions_report/
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#[doc = "Detailed report of permissions for a set of groups and users over a set of security namespaces"]
9#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
10pub struct PermissionsReport {
11    #[doc = "Error if the report creation failed or empty if successful"]
12    #[serde(default, skip_serializing_if = "Option::is_none")]
13    pub error: Option<String>,
14    #[serde(default, skip_serializing_if = "Option::is_none")]
15    pub id: Option<String>,
16    #[doc = "Name of the report which typically includes the requestor's display name"]
17    #[serde(
18        rename = "reportName",
19        default,
20        skip_serializing_if = "Option::is_none"
21    )]
22    pub report_name: Option<String>,
23    #[serde(
24        rename = "reportStatus",
25        default,
26        skip_serializing_if = "Option::is_none"
27    )]
28    pub report_status: Option<permissions_report::ReportStatus>,
29    #[serde(
30        rename = "reportStatusLastUpdatedTime",
31        default,
32        skip_serializing_if = "Option::is_none",
33        with = "crate::date_time::rfc3339::option"
34    )]
35    pub report_status_last_updated_time: Option<time::OffsetDateTime>,
36    #[serde(
37        rename = "requestedTime",
38        default,
39        skip_serializing_if = "Option::is_none",
40        with = "crate::date_time::rfc3339::option"
41    )]
42    pub requested_time: Option<time::OffsetDateTime>,
43    #[doc = "User who requested the report be created"]
44    #[serde(default, skip_serializing_if = "Option::is_none")]
45    pub requestor: Option<String>,
46}
47impl PermissionsReport {
48    pub fn new() -> Self {
49        Self::default()
50    }
51}
52pub mod permissions_report {
53    use super::*;
54    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
55    pub enum ReportStatus {
56        #[serde(rename = "created")]
57        Created,
58        #[serde(rename = "inProgress")]
59        InProgress,
60        #[serde(rename = "completedWithErrors")]
61        CompletedWithErrors,
62        #[serde(rename = "completedSuccessfully")]
63        CompletedSuccessfully,
64        #[serde(rename = "deleted")]
65        Deleted,
66    }
67}
68#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
69pub struct PermissionsReportList {
70    #[serde(default, skip_serializing_if = "Option::is_none")]
71    pub count: Option<i32>,
72    #[serde(
73        default,
74        deserialize_with = "crate::serde::deserialize_null_as_default",
75        skip_serializing_if = "Vec::is_empty"
76    )]
77    pub value: Vec<PermissionsReport>,
78}
79impl PermissionsReportList {
80    pub fn new() -> Self {
81        Self::default()
82    }
83}
84#[doc = "Details for creating a permissions report"]
85#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
86pub struct PermissionsReportRequest {
87    #[doc = "List of groups and users to fetch permissions on.  An empty list will fetch all groups and users in the organization"]
88    #[serde(
89        default,
90        deserialize_with = "crate::serde::deserialize_null_as_default",
91        skip_serializing_if = "Vec::is_empty"
92    )]
93    pub descriptors: Vec<String>,
94    #[doc = "Name of the report to create, make it unique"]
95    #[serde(
96        rename = "reportName",
97        default,
98        skip_serializing_if = "Option::is_none"
99    )]
100    pub report_name: Option<String>,
101    #[doc = "List of resources to fetch permisions on"]
102    #[serde(
103        default,
104        deserialize_with = "crate::serde::deserialize_null_as_default",
105        skip_serializing_if = "Vec::is_empty"
106    )]
107    pub resources: Vec<PermissionsReportResource>,
108}
109impl PermissionsReportRequest {
110    pub fn new() -> Self {
111        Self::default()
112    }
113}
114#[doc = "Specifics of the resource for the permissions report"]
115#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
116pub struct PermissionsReportResource {
117    #[doc = "GUID, Name, or ref for the specified resource type"]
118    #[serde(
119        rename = "resourceId",
120        default,
121        skip_serializing_if = "Option::is_none"
122    )]
123    pub resource_id: Option<String>,
124    #[doc = "For repo resource type, resource name is the repo name"]
125    #[serde(
126        rename = "resourceName",
127        default,
128        skip_serializing_if = "Option::is_none"
129    )]
130    pub resource_name: Option<String>,
131    #[doc = "Specify the type of resource to report permissions on"]
132    #[serde(
133        rename = "resourceType",
134        default,
135        skip_serializing_if = "Option::is_none"
136    )]
137    pub resource_type: Option<permissions_report_resource::ResourceType>,
138}
139impl PermissionsReportResource {
140    pub fn new() -> Self {
141        Self::default()
142    }
143}
144pub mod permissions_report_resource {
145    use super::*;
146    #[doc = "Specify the type of resource to report permissions on"]
147    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
148    pub enum ResourceType {
149        #[serde(rename = "repo")]
150        Repo,
151        #[serde(rename = "ref")]
152        Ref,
153        #[serde(rename = "projectGit")]
154        ProjectGit,
155        #[serde(rename = "release")]
156        Release,
157        #[serde(rename = "tfvc")]
158        Tfvc,
159    }
160}
161#[doc = "The class to represent a collection of REST reference links."]
162#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
163pub struct ReferenceLinks {
164    #[doc = "The readonly view of the links.  Because Reference links are readonly, we only want to expose them as read only."]
165    #[serde(default, skip_serializing_if = "Option::is_none")]
166    pub links: Option<serde_json::Value>,
167}
168impl ReferenceLinks {
169    pub fn new() -> Self {
170        Self::default()
171    }
172}
173#[doc = "This class is used to serialize collections as a single JSON object on the wire."]
174#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
175pub struct VssJsonCollectionWrapper {
176    #[serde(flatten)]
177    pub vss_json_collection_wrapper_base: VssJsonCollectionWrapperBase,
178    #[doc = "The serialized item."]
179    #[serde(default, skip_serializing_if = "Option::is_none")]
180    pub value: Option<String>,
181}
182impl VssJsonCollectionWrapper {
183    pub fn new() -> Self {
184        Self::default()
185    }
186}
187#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
188pub struct VssJsonCollectionWrapperBase {
189    #[doc = "The number of serialized items."]
190    #[serde(default, skip_serializing_if = "Option::is_none")]
191    pub count: Option<i32>,
192}
193impl VssJsonCollectionWrapperBase {
194    pub fn new() -> Self {
195        Self::default()
196    }
197}