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