Skip to main content

bitwarden_api_api/models/
access_rule_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#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct AccessRuleResponseModel {
17    #[serde(
18        rename = "object",
19        alias = "Object",
20        skip_serializing_if = "Option::is_none"
21    )]
22    pub object: Option<String>,
23    /// The rule's unique identifier.
24    #[serde(rename = "id", alias = "Id", skip_serializing_if = "Option::is_none")]
25    pub id: Option<uuid::Uuid>,
26    /// The organization this rule belongs to.
27    #[serde(
28        rename = "organizationId",
29        alias = "OrganizationId",
30        skip_serializing_if = "Option::is_none"
31    )]
32    pub organization_id: Option<uuid::Uuid>,
33    /// The rule's display name, shown wherever rules are listed and managed.
34    #[serde(
35        rename = "name",
36        alias = "Name",
37        skip_serializing_if = "Option::is_none"
38    )]
39    pub name: Option<String>,
40    /// Optional free-text describing the rule's intent. Has no effect on evaluation; surfaced to
41    /// admins only.
42    #[serde(
43        rename = "description",
44        alias = "Description",
45        skip_serializing_if = "Option::is_none"
46    )]
47    pub description: Option<String>,
48    /// When false, the rule is inactive and does not gate access for the collections it governs.
49    #[serde(
50        rename = "enabled",
51        alias = "Enabled",
52        skip_serializing_if = "Option::is_none"
53    )]
54    pub enabled: Option<bool>,
55    /// The condition tree that decides how access is granted under this rule — for example
56    /// requiring human approval, or restricting to certain times of day or source IPs. Returned as
57    /// a JSON object; null when the rule imposes no conditions.
58    #[serde(
59        rename = "conditions",
60        alias = "Conditions",
61        skip_serializing_if = "Option::is_none"
62    )]
63    pub conditions: Option<serde_json::Value>,
64    /// When true, the rule enforces a per-cipher singleton (at most one active lease per cipher
65    /// across all users).
66    #[serde(
67        rename = "singleActiveLease",
68        alias = "SingleActiveLease",
69        skip_serializing_if = "Option::is_none"
70    )]
71    pub single_active_lease: Option<bool>,
72    /// Default lease duration in seconds, used to pre-fill a request opened under this rule. Null
73    /// means the backend default applies.
74    #[serde(
75        rename = "defaultLeaseDurationSeconds",
76        alias = "DefaultLeaseDurationSeconds",
77        skip_serializing_if = "Option::is_none"
78    )]
79    pub default_lease_duration_seconds: Option<i32>,
80    /// Hard ceiling on the duration of any single lease granted under this rule, in seconds. Null
81    /// means no per-rule cap.
82    #[serde(
83        rename = "maxLeaseDurationSeconds",
84        alias = "MaxLeaseDurationSeconds",
85        skip_serializing_if = "Option::is_none"
86    )]
87    pub max_lease_duration_seconds: Option<i32>,
88    /// When true, a member holding an active lease under this rule may extend it once (always
89    /// auto-approved), by up to
90    /// Bit.Services.Pam.Api.Models.Response.AccessRuleResponseModel.MaxExtensionDurationSeconds.
91    #[serde(
92        rename = "allowsExtensions",
93        alias = "AllowsExtensions",
94        skip_serializing_if = "Option::is_none"
95    )]
96    pub allows_extensions: Option<bool>,
97    /// The longest a single extension may run, in seconds. Set when
98    /// Bit.Services.Pam.Api.Models.Response.AccessRuleResponseModel.AllowsExtensions is true.
99    #[serde(
100        rename = "maxExtensionDurationSeconds",
101        alias = "MaxExtensionDurationSeconds",
102        skip_serializing_if = "Option::is_none"
103    )]
104    pub max_extension_duration_seconds: Option<i32>,
105    /// The complete set of collections this rule governs.
106    #[serde(
107        rename = "collections",
108        alias = "Collections",
109        skip_serializing_if = "Option::is_none"
110    )]
111    pub collections: Option<Vec<uuid::Uuid>>,
112    /// When the rule was created (UTC).
113    #[serde(
114        rename = "creationDate",
115        alias = "CreationDate",
116        skip_serializing_if = "Option::is_none"
117    )]
118    pub creation_date: Option<String>,
119    /// When the rule was last modified (UTC).
120    #[serde(
121        rename = "revisionDate",
122        alias = "RevisionDate",
123        skip_serializing_if = "Option::is_none"
124    )]
125    pub revision_date: Option<String>,
126}
127
128impl AccessRuleResponseModel {
129    pub fn new() -> AccessRuleResponseModel {
130        AccessRuleResponseModel {
131            object: None,
132            id: None,
133            organization_id: None,
134            name: None,
135            description: None,
136            enabled: None,
137            conditions: None,
138            single_active_lease: None,
139            default_lease_duration_seconds: None,
140            max_lease_duration_seconds: None,
141            allows_extensions: None,
142            max_extension_duration_seconds: None,
143            collections: None,
144            creation_date: None,
145            revision_date: None,
146        }
147    }
148}