azure_devops_rust_api/permissions_report/
models.rs1#![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}