Skip to main content

bitwarden_api_api/models/
access_rule_request_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 AccessRuleRequestModel {
17    #[serde(rename = "name", alias = "Name")]
18    pub name: String,
19    /// Free text describing the rule's intent; has no effect on evaluation.
20    #[serde(
21        rename = "description",
22        alias = "Description",
23        skip_serializing_if = "Option::is_none"
24    )]
25    pub description: Option<String>,
26    /// When false, the rule does not gate access to its collections. Defaults to true when
27    /// omitted.
28    #[serde(
29        rename = "enabled",
30        alias = "Enabled",
31        skip_serializing_if = "Option::is_none"
32    )]
33    pub enabled: Option<bool>,
34    /// A JSON array of condition objects, such as human approval or a source IP restriction,
35    /// stored verbatim. An empty array means requests under the rule resolve automatically.
36    #[serde(rename = "conditions", alias = "Conditions")]
37    pub conditions: Option<serde_json::Value>,
38    /// When true, at most one active lease per cipher across all users.
39    #[serde(
40        rename = "singleActiveLease",
41        alias = "SingleActiveLease",
42        skip_serializing_if = "Option::is_none"
43    )]
44    pub single_active_lease: Option<bool>,
45    /// Pre-fills the duration of a request under this rule. Null means the global default.
46    #[serde(
47        rename = "defaultLeaseDurationSeconds",
48        alias = "DefaultLeaseDurationSeconds",
49        skip_serializing_if = "Option::is_none"
50    )]
51    pub default_lease_duration_seconds: Option<i32>,
52    /// Ceiling on any single lease under this rule. Null means no per-rule cap.
53    #[serde(
54        rename = "maxLeaseDurationSeconds",
55        alias = "MaxLeaseDurationSeconds",
56        skip_serializing_if = "Option::is_none"
57    )]
58    pub max_lease_duration_seconds: Option<i32>,
59    /// When true, a member holding an active lease under this rule may extend it once (always
60    /// auto-approved), by up to
61    /// Bit.Services.Pam.Api.Models.Request.AccessRuleRequestModel.MaxExtensionDurationSeconds.
62    #[serde(
63        rename = "allowsExtensions",
64        alias = "AllowsExtensions",
65        skip_serializing_if = "Option::is_none"
66    )]
67    pub allows_extensions: Option<bool>,
68    /// The longest a single extension may run, in seconds. Required to be positive when
69    /// Bit.Services.Pam.Api.Models.Request.AccessRuleRequestModel.AllowsExtensions is true.
70    #[serde(
71        rename = "maxExtensionDurationSeconds",
72        alias = "MaxExtensionDurationSeconds",
73        skip_serializing_if = "Option::is_none"
74    )]
75    pub max_extension_duration_seconds: Option<i32>,
76    /// The complete set of collections this rule governs, replacing its current ones. An empty
77    /// array clears them.
78    #[serde(rename = "collections", alias = "Collections")]
79    pub collections: Vec<uuid::Uuid>,
80}
81
82impl AccessRuleRequestModel {
83    pub fn new(
84        name: String,
85        conditions: Option<serde_json::Value>,
86        collections: Vec<uuid::Uuid>,
87    ) -> AccessRuleRequestModel {
88        AccessRuleRequestModel {
89            name,
90            description: None,
91            enabled: None,
92            conditions,
93            single_active_lease: None,
94            default_lease_duration_seconds: None,
95            max_lease_duration_seconds: None,
96            allows_extensions: None,
97            max_extension_duration_seconds: None,
98            collections,
99        }
100    }
101}