Skip to main content

bitwarden_api_api/models/
access_request_details_response_model.rs

1/*
2 * Bitwarden Internal API
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: latest
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use serde::{Deserialize, Serialize};
12
13use crate::models;
14
15/// AccessRequestDetailsResponseModel : An access request with its denormalized requester identity,
16/// serving the approver inbox, the caller's own request list, and the cipher access-state snapshot.
17/// Bit.Services.Pam.Api.Models.Response.AccessRequestDetailsResponseModel.ExpiredAt has no backing
18/// store in v1 and is always null;
19/// Bit.Services.Pam.Api.Models.Response.AccessRequestDetailsResponseModel.RuleId is the rule pinned
20/// at submit (null for requests created before pinning existed).
21#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
22pub struct AccessRequestDetailsResponseModel {
23    #[serde(
24        rename = "object",
25        alias = "Object",
26        skip_serializing_if = "Option::is_none"
27    )]
28    pub object: Option<String>,
29    /// The access request's unique identifier.
30    #[serde(rename = "id", alias = "Id", skip_serializing_if = "Option::is_none")]
31    pub id: Option<uuid::Uuid>,
32    /// The cipher access was requested for.
33    #[serde(
34        rename = "cipherId",
35        alias = "CipherId",
36        skip_serializing_if = "Option::is_none"
37    )]
38    pub cipher_id: Option<uuid::Uuid>,
39    /// The collection the cipher belongs to, through which the request is governed.
40    #[serde(
41        rename = "collectionId",
42        alias = "CollectionId",
43        skip_serializing_if = "Option::is_none"
44    )]
45    pub collection_id: Option<uuid::Uuid>,
46    /// The organization that owns the cipher.
47    #[serde(
48        rename = "organizationId",
49        alias = "OrganizationId",
50        skip_serializing_if = "Option::is_none"
51    )]
52    pub organization_id: Option<uuid::Uuid>,
53    /// The member who opened the request.
54    #[serde(
55        rename = "requesterId",
56        alias = "RequesterId",
57        skip_serializing_if = "Option::is_none"
58    )]
59    pub requester_id: Option<uuid::Uuid>,
60    /// The access rule that gated the cipher and that this request is evaluated against, resolved
61    /// once at submit (oldest wins) and pinned on the request. Null for requests created before
62    /// pinning existed.
63    #[serde(
64        rename = "ruleId",
65        alias = "RuleId",
66        skip_serializing_if = "Option::is_none"
67    )]
68    pub rule_id: Option<uuid::Uuid>,
69    #[serde(
70        rename = "status",
71        alias = "Status",
72        skip_serializing_if = "Option::is_none"
73    )]
74    pub status: Option<models::AccessRequestStatus>,
75    /// The activation window resolved at submit — the bounds on WHEN this request may be promoted
76    /// to a lease. Both request modes collapse into it (on-demand → `now`..`now + duration`,
77    /// scheduled → the chosen start/end), so there is no separate duration or mode field; the
78    /// length is Bit.Services.Pam.Api.Models.Response.AccessRequestDetailsResponseModel.
79    /// LeaseNotAfter minus
80    /// Bit.Services.Pam.Api.Models.Response.AccessRequestDetailsResponseModel.LeaseNotBefore. In
81    /// v1 the approved and leased windows are identical to this one.
82    #[serde(
83        rename = "leaseNotBefore",
84        alias = "LeaseNotBefore",
85        skip_serializing_if = "Option::is_none"
86    )]
87    pub lease_not_before: Option<String>,
88    /// The end of the resolved activation window (UTC); see
89    /// Bit.Services.Pam.Api.Models.Response.AccessRequestDetailsResponseModel.LeaseNotBefore.
90    #[serde(
91        rename = "leaseNotAfter",
92        alias = "LeaseNotAfter",
93        skip_serializing_if = "Option::is_none"
94    )]
95    pub lease_not_after: Option<String>,
96    /// The optional justification the requester supplied when opening the request.
97    #[serde(
98        rename = "reason",
99        alias = "Reason",
100        skip_serializing_if = "Option::is_none"
101    )]
102    pub reason: Option<String>,
103    /// When the request was opened (UTC).
104    #[serde(
105        rename = "submittedAt",
106        alias = "SubmittedAt",
107        skip_serializing_if = "Option::is_none"
108    )]
109    pub submitted_at: Option<String>,
110    /// When the request was approved, denied, or cancelled (UTC); null while pending.
111    #[serde(
112        rename = "resolvedAt",
113        alias = "ResolvedAt",
114        skip_serializing_if = "Option::is_none"
115    )]
116    pub resolved_at: Option<String>,
117    /// Distinct from
118    /// Bit.Services.Pam.Api.Models.Response.AccessRequestDetailsResponseModel.ResolvedAt; set when
119    /// an approved request lapses unactivated. Not tracked in v1.
120    #[serde(
121        rename = "expiredAt",
122        alias = "ExpiredAt",
123        skip_serializing_if = "Option::is_none"
124    )]
125    pub expired_at: Option<String>,
126    /// The request's decision log, oldest first — one element per decision (human or automatic).
127    /// Each carries who decided (`deciderKind`), the verdict, and (for a human decision) the
128    /// approver's identity and comment. Empty only while pending. An array so multi-party approval
129    /// lands without breaking the contract.
130    #[serde(
131        rename = "decisions",
132        alias = "Decisions",
133        skip_serializing_if = "Option::is_none"
134    )]
135    pub decisions: Option<Vec<models::AccessRequestDecisionResponseModel>>,
136    /// Set once an approved request has produced a lease.
137    #[serde(
138        rename = "producedLeaseId",
139        alias = "ProducedLeaseId",
140        skip_serializing_if = "Option::is_none"
141    )]
142    pub produced_lease_id: Option<uuid::Uuid>,
143    #[serde(
144        rename = "producedLeaseStatus",
145        alias = "ProducedLeaseStatus",
146        skip_serializing_if = "Option::is_none"
147    )]
148    pub produced_lease_status: Option<models::AccessLeaseStatus>,
149    /// The parent lease if this is an extension request.
150    #[serde(
151        rename = "extensionOfLeaseId",
152        alias = "ExtensionOfLeaseId",
153        skip_serializing_if = "Option::is_none"
154    )]
155    pub extension_of_lease_id: Option<uuid::Uuid>,
156    /// The requester's display name, denormalized by the server; null only when the user could not
157    /// be resolved.
158    #[serde(
159        rename = "requesterName",
160        alias = "RequesterName",
161        skip_serializing_if = "Option::is_none"
162    )]
163    pub requester_name: Option<String>,
164    /// The requester's email, denormalized by the server; null only when the user could not be
165    /// resolved.
166    #[serde(
167        rename = "requesterEmail",
168        alias = "RequesterEmail",
169        skip_serializing_if = "Option::is_none"
170    )]
171    pub requester_email: Option<String>,
172}
173
174impl AccessRequestDetailsResponseModel {
175    /// An access request with its denormalized requester identity, serving the approver inbox, the
176    /// caller's own request list, and the cipher access-state snapshot.
177    /// Bit.Services.Pam.Api.Models.Response.AccessRequestDetailsResponseModel.ExpiredAt has no
178    /// backing store in v1 and is always null;
179    /// Bit.Services.Pam.Api.Models.Response.AccessRequestDetailsResponseModel.RuleId is the rule
180    /// pinned at submit (null for requests created before pinning existed).
181    pub fn new() -> AccessRequestDetailsResponseModel {
182        AccessRequestDetailsResponseModel {
183            object: None,
184            id: None,
185            cipher_id: None,
186            collection_id: None,
187            organization_id: None,
188            requester_id: None,
189            rule_id: None,
190            status: None,
191            lease_not_before: None,
192            lease_not_after: None,
193            reason: None,
194            submitted_at: None,
195            resolved_at: None,
196            expired_at: None,
197            decisions: None,
198            produced_lease_id: None,
199            produced_lease_status: None,
200            extension_of_lease_id: None,
201            requester_name: None,
202            requester_email: None,
203        }
204    }
205}