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 AccessTokenResult {
10 #[serde(
11 rename = "accessToken",
12 default,
13 skip_serializing_if = "Option::is_none"
14 )]
15 pub access_token: Option<JsonWebToken>,
16 #[serde(
17 rename = "accessTokenError",
18 default,
19 skip_serializing_if = "Option::is_none"
20 )]
21 pub access_token_error: Option<access_token_result::AccessTokenError>,
22 #[serde(
23 rename = "authorizationId",
24 default,
25 skip_serializing_if = "Option::is_none"
26 )]
27 pub authorization_id: Option<String>,
28 #[serde(
29 rename = "errorDescription",
30 default,
31 skip_serializing_if = "Option::is_none"
32 )]
33 pub error_description: Option<String>,
34 #[serde(rename = "hasError", default, skip_serializing_if = "Option::is_none")]
35 pub has_error: Option<bool>,
36 #[serde(
37 rename = "isFirstPartyClient",
38 default,
39 skip_serializing_if = "Option::is_none"
40 )]
41 pub is_first_party_client: Option<bool>,
42 #[serde(
43 rename = "refreshToken",
44 default,
45 skip_serializing_if = "Option::is_none"
46 )]
47 pub refresh_token: Option<RefreshTokenGrant>,
48 #[serde(default, skip_serializing_if = "Option::is_none")]
49 pub scope: Option<String>,
50 #[serde(rename = "tokenType", default, skip_serializing_if = "Option::is_none")]
51 pub token_type: Option<String>,
52 #[serde(
53 rename = "validTo",
54 default,
55 skip_serializing_if = "Option::is_none",
56 with = "crate::date_time::rfc3339::option"
57 )]
58 pub valid_to: Option<time::OffsetDateTime>,
59}
60impl AccessTokenResult {
61 pub fn new() -> Self {
62 Self::default()
63 }
64}
65pub mod access_token_result {
66 use super::*;
67 #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
68 pub enum AccessTokenError {
69 #[serde(rename = "none")]
70 None,
71 #[serde(rename = "grantTypeRequired")]
72 GrantTypeRequired,
73 #[serde(rename = "authorizationGrantRequired")]
74 AuthorizationGrantRequired,
75 #[serde(rename = "clientSecretRequired")]
76 ClientSecretRequired,
77 #[serde(rename = "redirectUriRequired")]
78 RedirectUriRequired,
79 #[serde(rename = "invalidAuthorizationGrant")]
80 InvalidAuthorizationGrant,
81 #[serde(rename = "invalidAuthorizationScopes")]
82 InvalidAuthorizationScopes,
83 #[serde(rename = "invalidRefreshToken")]
84 InvalidRefreshToken,
85 #[serde(rename = "authorizationNotFound")]
86 AuthorizationNotFound,
87 #[serde(rename = "authorizationGrantExpired")]
88 AuthorizationGrantExpired,
89 #[serde(rename = "accessAlreadyIssued")]
90 AccessAlreadyIssued,
91 #[serde(rename = "invalidRedirectUri")]
92 InvalidRedirectUri,
93 #[serde(rename = "accessTokenNotFound")]
94 AccessTokenNotFound,
95 #[serde(rename = "invalidAccessToken")]
96 InvalidAccessToken,
97 #[serde(rename = "accessTokenAlreadyRefreshed")]
98 AccessTokenAlreadyRefreshed,
99 #[serde(rename = "invalidClientSecret")]
100 InvalidClientSecret,
101 #[serde(rename = "clientSecretExpired")]
102 ClientSecretExpired,
103 #[serde(rename = "serverError")]
104 ServerError,
105 #[serde(rename = "accessDenied")]
106 AccessDenied,
107 #[serde(rename = "accessTokenKeyRequired")]
108 AccessTokenKeyRequired,
109 #[serde(rename = "invalidAccessTokenKey")]
110 InvalidAccessTokenKey,
111 #[serde(rename = "failedToGetAccessToken")]
112 FailedToGetAccessToken,
113 #[serde(rename = "invalidClientId")]
114 InvalidClientId,
115 #[serde(rename = "invalidClient")]
116 InvalidClient,
117 #[serde(rename = "invalidValidTo")]
118 InvalidValidTo,
119 #[serde(rename = "invalidUserId")]
120 InvalidUserId,
121 #[serde(rename = "failedToIssueAccessToken")]
122 FailedToIssueAccessToken,
123 #[serde(rename = "authorizationGrantScopeMissing")]
124 AuthorizationGrantScopeMissing,
125 #[serde(rename = "invalidPublicAccessTokenKey")]
126 InvalidPublicAccessTokenKey,
127 #[serde(rename = "invalidPublicAccessToken")]
128 InvalidPublicAccessToken,
129 #[serde(rename = "publicFeatureFlagNotEnabled")]
130 PublicFeatureFlagNotEnabled,
131 #[serde(rename = "sshPolicyDisabled")]
132 SshPolicyDisabled,
133 #[serde(rename = "hostAuthorizationNotFound")]
134 HostAuthorizationNotFound,
135 #[serde(rename = "hostAuthorizationIsNotValid")]
136 HostAuthorizationIsNotValid,
137 #[serde(rename = "invalidScope")]
138 InvalidScope,
139 }
140}
141#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
142pub struct AuthorizationGrant {
143 #[serde(rename = "grantType", default, skip_serializing_if = "Option::is_none")]
144 pub grant_type: Option<authorization_grant::GrantType>,
145}
146impl AuthorizationGrant {
147 pub fn new() -> Self {
148 Self::default()
149 }
150}
151pub mod authorization_grant {
152 use super::*;
153 #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
154 pub enum GrantType {
155 #[serde(rename = "none")]
156 None,
157 #[serde(rename = "jwtBearer")]
158 JwtBearer,
159 #[serde(rename = "refreshToken")]
160 RefreshToken,
161 #[serde(rename = "implicit")]
162 Implicit,
163 #[serde(rename = "clientCredentials")]
164 ClientCredentials,
165 }
166}
167#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
168pub struct IssuedToken {
169 #[serde(
170 rename = "isAuthenticated",
171 default,
172 skip_serializing_if = "Option::is_none"
173 )]
174 pub is_authenticated: Option<bool>,
175 #[serde(default, skip_serializing_if = "Option::is_none")]
176 pub properties: Option<serde_json::Value>,
177}
178impl IssuedToken {
179 pub fn new() -> Self {
180 Self::default()
181 }
182}
183#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
184pub struct JsonWebToken {
185 #[serde(flatten)]
186 pub issued_token: IssuedToken,
187}
188impl JsonWebToken {
189 pub fn new() -> Self {
190 Self::default()
191 }
192}
193#[doc = "Returned by the List method; contains a list of personal access tokens (PATs) and the continuation token to get the next page of results"]
194#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
195pub struct PagedPatTokens {
196 #[doc = "Used to access the next page of results in successive API calls to list personal access tokens (PATs)"]
197 #[serde(
198 rename = "continuationToken",
199 default,
200 skip_serializing_if = "Option::is_none"
201 )]
202 pub continuation_token: Option<String>,
203 #[doc = "The list of personal access tokens (PATs)"]
204 #[serde(
205 rename = "patTokens",
206 default,
207 deserialize_with = "crate::serde::deserialize_null_as_default",
208 skip_serializing_if = "Vec::is_empty"
209 )]
210 pub pat_tokens: Vec<PatToken>,
211}
212impl PagedPatTokens {
213 pub fn new() -> Self {
214 Self::default()
215 }
216}
217#[doc = "Represents a personal access token (PAT) used to access Azure DevOps resources"]
218#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
219pub struct PatToken {
220 #[doc = "Unique guid identifier"]
221 #[serde(
222 rename = "authorizationId",
223 default,
224 skip_serializing_if = "Option::is_none"
225 )]
226 pub authorization_id: Option<String>,
227 #[doc = "The token name"]
228 #[serde(
229 rename = "displayName",
230 default,
231 skip_serializing_if = "Option::is_none"
232 )]
233 pub display_name: Option<String>,
234 #[doc = "The token scopes for accessing Azure DevOps resources"]
235 #[serde(default, skip_serializing_if = "Option::is_none")]
236 pub scope: Option<String>,
237 #[doc = "The organizations for which the token is valid; null if the token applies to all of the user's accessible organizations"]
238 #[serde(
239 rename = "targetAccounts",
240 default,
241 deserialize_with = "crate::serde::deserialize_null_as_default",
242 skip_serializing_if = "Vec::is_empty"
243 )]
244 pub target_accounts: Vec<String>,
245 #[doc = "The unique token string generated at creation"]
246 #[serde(default, skip_serializing_if = "Option::is_none")]
247 pub token: Option<String>,
248 #[doc = "The token creation date"]
249 #[serde(
250 rename = "validFrom",
251 default,
252 skip_serializing_if = "Option::is_none",
253 with = "crate::date_time::rfc3339::option"
254 )]
255 pub valid_from: Option<time::OffsetDateTime>,
256 #[doc = "The token expiration date"]
257 #[serde(
258 rename = "validTo",
259 default,
260 skip_serializing_if = "Option::is_none",
261 with = "crate::date_time::rfc3339::option"
262 )]
263 pub valid_to: Option<time::OffsetDateTime>,
264}
265impl PatToken {
266 pub fn new() -> Self {
267 Self::default()
268 }
269}
270#[doc = "Encapsulates the request parameters for creating a new personal access token (PAT)"]
271#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
272pub struct PatTokenCreateRequest {
273 #[doc = "True, if this personal access token (PAT) is for all of the user's accessible organizations. False, if otherwise (e.g. if the token is for a specific organization)"]
274 #[serde(rename = "allOrgs", default, skip_serializing_if = "Option::is_none")]
275 pub all_orgs: Option<bool>,
276 #[doc = "The token name"]
277 #[serde(
278 rename = "displayName",
279 default,
280 skip_serializing_if = "Option::is_none"
281 )]
282 pub display_name: Option<String>,
283 #[doc = "The token scopes for accessing Azure DevOps resources"]
284 #[serde(default, skip_serializing_if = "Option::is_none")]
285 pub scope: Option<String>,
286 #[doc = "The token expiration date"]
287 #[serde(
288 rename = "validTo",
289 default,
290 skip_serializing_if = "Option::is_none",
291 with = "crate::date_time::rfc3339::option"
292 )]
293 pub valid_to: Option<time::OffsetDateTime>,
294}
295impl PatTokenCreateRequest {
296 pub fn new() -> Self {
297 Self::default()
298 }
299}
300#[doc = "Contains the resulting personal access token (PAT) and the error (if any) that occurred during the operation"]
301#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
302pub struct PatTokenResult {
303 #[doc = "Represents a personal access token (PAT) used to access Azure DevOps resources"]
304 #[serde(rename = "patToken", default, skip_serializing_if = "Option::is_none")]
305 pub pat_token: Option<PatToken>,
306 #[doc = "The error (if any) that occurred"]
307 #[serde(
308 rename = "patTokenError",
309 default,
310 skip_serializing_if = "Option::is_none"
311 )]
312 pub pat_token_error: Option<pat_token_result::PatTokenError>,
313}
314impl PatTokenResult {
315 pub fn new() -> Self {
316 Self::default()
317 }
318}
319pub mod pat_token_result {
320 use super::*;
321 #[doc = "The error (if any) that occurred"]
322 #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
323 pub enum PatTokenError {
324 #[serde(rename = "none")]
325 None,
326 #[serde(rename = "displayNameRequired")]
327 DisplayNameRequired,
328 #[serde(rename = "invalidDisplayName")]
329 InvalidDisplayName,
330 #[serde(rename = "invalidValidTo")]
331 InvalidValidTo,
332 #[serde(rename = "invalidScope")]
333 InvalidScope,
334 #[serde(rename = "userIdRequired")]
335 UserIdRequired,
336 #[serde(rename = "invalidUserId")]
337 InvalidUserId,
338 #[serde(rename = "invalidUserType")]
339 InvalidUserType,
340 #[serde(rename = "accessDenied")]
341 AccessDenied,
342 #[serde(rename = "failedToIssueAccessToken")]
343 FailedToIssueAccessToken,
344 #[serde(rename = "invalidClient")]
345 InvalidClient,
346 #[serde(rename = "invalidClientType")]
347 InvalidClientType,
348 #[serde(rename = "invalidClientId")]
349 InvalidClientId,
350 #[serde(rename = "invalidTargetAccounts")]
351 InvalidTargetAccounts,
352 #[serde(rename = "hostAuthorizationNotFound")]
353 HostAuthorizationNotFound,
354 #[serde(rename = "authorizationNotFound")]
355 AuthorizationNotFound,
356 #[serde(rename = "failedToUpdateAccessToken")]
357 FailedToUpdateAccessToken,
358 #[serde(rename = "sourceNotSupported")]
359 SourceNotSupported,
360 #[serde(rename = "invalidSourceIP")]
361 InvalidSourceIp,
362 #[serde(rename = "invalidSource")]
363 InvalidSource,
364 #[serde(rename = "duplicateHash")]
365 DuplicateHash,
366 #[serde(rename = "sshPolicyDisabled")]
367 SshPolicyDisabled,
368 #[serde(rename = "invalidToken")]
369 InvalidToken,
370 #[serde(rename = "tokenNotFound")]
371 TokenNotFound,
372 #[serde(rename = "invalidAuthorizationId")]
373 InvalidAuthorizationId,
374 #[serde(rename = "failedToReadTenantPolicy")]
375 FailedToReadTenantPolicy,
376 #[serde(rename = "globalPatPolicyViolation")]
377 GlobalPatPolicyViolation,
378 #[serde(rename = "fullScopePatPolicyViolation")]
379 FullScopePatPolicyViolation,
380 #[serde(rename = "patLifespanPolicyViolation")]
381 PatLifespanPolicyViolation,
382 #[serde(rename = "invalidTokenType")]
383 InvalidTokenType,
384 #[serde(rename = "invalidAudience")]
385 InvalidAudience,
386 #[serde(rename = "invalidSubject")]
387 InvalidSubject,
388 #[serde(rename = "deploymentHostNotSupported")]
389 DeploymentHostNotSupported,
390 }
391}
392#[doc = "Encapsulates the request parameters for updating a personal access token (PAT)"]
393#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
394pub struct PatTokenUpdateRequest {
395 #[doc = "(Optional) True if this personal access token (PAT) is for all of the user's accessible organizations. False if otherwise (e.g. if the token is for a specific organization)"]
396 #[serde(rename = "allOrgs", default, skip_serializing_if = "Option::is_none")]
397 pub all_orgs: Option<bool>,
398 #[doc = "The authorizationId identifying a single, unique personal access token (PAT)"]
399 #[serde(
400 rename = "authorizationId",
401 default,
402 skip_serializing_if = "Option::is_none"
403 )]
404 pub authorization_id: Option<String>,
405 #[doc = "(Optional) The token name"]
406 #[serde(
407 rename = "displayName",
408 default,
409 skip_serializing_if = "Option::is_none"
410 )]
411 pub display_name: Option<String>,
412 #[doc = "(Optional) The token scopes for accessing Azure DevOps resources"]
413 #[serde(default, skip_serializing_if = "Option::is_none")]
414 pub scope: Option<String>,
415 #[doc = "(Optional) The token expiration date"]
416 #[serde(
417 rename = "validTo",
418 default,
419 skip_serializing_if = "Option::is_none",
420 with = "crate::date_time::rfc3339::option"
421 )]
422 pub valid_to: Option<time::OffsetDateTime>,
423}
424impl PatTokenUpdateRequest {
425 pub fn new() -> Self {
426 Self::default()
427 }
428}
429#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
430pub struct RefreshTokenGrant {
431 #[serde(flatten)]
432 pub authorization_grant: AuthorizationGrant,
433 #[serde(default, skip_serializing_if = "Option::is_none")]
434 pub jwt: Option<JsonWebToken>,
435}
436impl RefreshTokenGrant {
437 pub fn new() -> Self {
438 Self::default()
439 }
440}
441#[doc = "Represents a session token used to access Azure DevOps resources"]
442#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
443pub struct SessionToken {
444 #[serde(rename = "accessId", default, skip_serializing_if = "Option::is_none")]
445 pub access_id: Option<String>,
446 #[doc = "This is populated when user requests a compact token. The alternate token value is self describing token."]
447 #[serde(
448 rename = "alternateToken",
449 default,
450 skip_serializing_if = "Option::is_none"
451 )]
452 pub alternate_token: Option<String>,
453 #[serde(
454 rename = "authorizationId",
455 default,
456 skip_serializing_if = "Option::is_none"
457 )]
458 pub authorization_id: Option<String>,
459 #[serde(default, skip_serializing_if = "Option::is_none")]
460 pub claims: Option<serde_json::Value>,
461 #[serde(rename = "clientId", default, skip_serializing_if = "Option::is_none")]
462 pub client_id: Option<String>,
463 #[serde(
464 rename = "displayName",
465 default,
466 skip_serializing_if = "Option::is_none"
467 )]
468 pub display_name: Option<String>,
469 #[serde(
470 rename = "hostAuthorizationId",
471 default,
472 skip_serializing_if = "Option::is_none"
473 )]
474 pub host_authorization_id: Option<String>,
475 #[serde(rename = "isPublic", default, skip_serializing_if = "Option::is_none")]
476 pub is_public: Option<bool>,
477 #[serde(rename = "isValid", default, skip_serializing_if = "Option::is_none")]
478 pub is_valid: Option<bool>,
479 #[serde(
480 rename = "publicData",
481 default,
482 skip_serializing_if = "Option::is_none"
483 )]
484 pub public_data: Option<String>,
485 #[serde(default, skip_serializing_if = "Option::is_none")]
486 pub scope: Option<String>,
487 #[serde(default, skip_serializing_if = "Option::is_none")]
488 pub source: Option<String>,
489 #[serde(
490 rename = "targetAccounts",
491 default,
492 deserialize_with = "crate::serde::deserialize_null_as_default",
493 skip_serializing_if = "Vec::is_empty"
494 )]
495 pub target_accounts: Vec<String>,
496 #[doc = "This is computed and not returned in Get queries"]
497 #[serde(default, skip_serializing_if = "Option::is_none")]
498 pub token: Option<String>,
499 #[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
500 pub user_id: Option<String>,
501 #[serde(
502 rename = "validFrom",
503 default,
504 skip_serializing_if = "Option::is_none",
505 with = "crate::date_time::rfc3339::option"
506 )]
507 pub valid_from: Option<time::OffsetDateTime>,
508 #[serde(
509 rename = "validTo",
510 default,
511 skip_serializing_if = "Option::is_none",
512 with = "crate::date_time::rfc3339::option"
513 )]
514 pub valid_to: Option<time::OffsetDateTime>,
515}
516impl SessionToken {
517 pub fn new() -> Self {
518 Self::default()
519 }
520}