azure_devops_rust_api/tokens/
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 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}