authentik_client/models/
ldap_source.rs

1/*
2 * authentik
3 *
4 * Making authentication simple.
5 *
6 * The version of the OpenAPI document: 2025.8.4
7 * Contact: hello@goauthentik.io
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14/// LdapSource : LDAP Source Serializer
15#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct LdapSource {
17    #[serde(rename = "pk")]
18    pub pk: uuid::Uuid,
19    /// Source's display Name.
20    #[serde(rename = "name")]
21    pub name: String,
22    /// Internal source name, used in URLs.
23    #[serde(rename = "slug")]
24    pub slug: String,
25    #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")]
26    pub enabled: Option<bool>,
27    /// Flow to use when authenticating existing users.
28    #[serde(
29        rename = "authentication_flow",
30        default,
31        with = "::serde_with::rust::double_option",
32        skip_serializing_if = "Option::is_none"
33    )]
34    pub authentication_flow: Option<Option<uuid::Uuid>>,
35    /// Flow to use when enrolling new users.
36    #[serde(
37        rename = "enrollment_flow",
38        default,
39        with = "::serde_with::rust::double_option",
40        skip_serializing_if = "Option::is_none"
41    )]
42    pub enrollment_flow: Option<Option<uuid::Uuid>>,
43    #[serde(rename = "user_property_mappings", skip_serializing_if = "Option::is_none")]
44    pub user_property_mappings: Option<Vec<uuid::Uuid>>,
45    #[serde(rename = "group_property_mappings", skip_serializing_if = "Option::is_none")]
46    pub group_property_mappings: Option<Vec<uuid::Uuid>>,
47    /// Get object component so that we know how to edit the object
48    #[serde(rename = "component")]
49    pub component: String,
50    /// Return object's verbose_name
51    #[serde(rename = "verbose_name")]
52    pub verbose_name: String,
53    /// Return object's plural verbose_name
54    #[serde(rename = "verbose_name_plural")]
55    pub verbose_name_plural: String,
56    /// Return internal model name
57    #[serde(rename = "meta_model_name")]
58    pub meta_model_name: String,
59    #[serde(rename = "policy_engine_mode", skip_serializing_if = "Option::is_none")]
60    pub policy_engine_mode: Option<models::PolicyEngineMode>,
61    /// How the source determines if an existing user should be authenticated or a new user enrolled.
62    #[serde(rename = "user_matching_mode", skip_serializing_if = "Option::is_none")]
63    pub user_matching_mode: Option<models::UserMatchingModeEnum>,
64    /// Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update.
65    #[serde(rename = "managed", deserialize_with = "Option::deserialize")]
66    pub managed: Option<String>,
67    #[serde(rename = "user_path_template", skip_serializing_if = "Option::is_none")]
68    pub user_path_template: Option<String>,
69    #[serde(rename = "icon")]
70    pub icon: String,
71    #[serde(rename = "server_uri")]
72    pub server_uri: String,
73    /// Optionally verify the LDAP Server's Certificate against the CA Chain in this keypair.
74    #[serde(
75        rename = "peer_certificate",
76        default,
77        with = "::serde_with::rust::double_option",
78        skip_serializing_if = "Option::is_none"
79    )]
80    pub peer_certificate: Option<Option<uuid::Uuid>>,
81    /// Client certificate to authenticate against the LDAP Server's Certificate.
82    #[serde(
83        rename = "client_certificate",
84        default,
85        with = "::serde_with::rust::double_option",
86        skip_serializing_if = "Option::is_none"
87    )]
88    pub client_certificate: Option<Option<uuid::Uuid>>,
89    #[serde(rename = "bind_cn", skip_serializing_if = "Option::is_none")]
90    pub bind_cn: Option<String>,
91    #[serde(rename = "start_tls", skip_serializing_if = "Option::is_none")]
92    pub start_tls: Option<bool>,
93    #[serde(rename = "sni", skip_serializing_if = "Option::is_none")]
94    pub sni: Option<bool>,
95    #[serde(rename = "base_dn")]
96    pub base_dn: String,
97    /// Prepended to Base DN for User-queries.
98    #[serde(rename = "additional_user_dn", skip_serializing_if = "Option::is_none")]
99    pub additional_user_dn: Option<String>,
100    /// Prepended to Base DN for Group-queries.
101    #[serde(rename = "additional_group_dn", skip_serializing_if = "Option::is_none")]
102    pub additional_group_dn: Option<String>,
103    /// Consider Objects matching this filter to be Users.
104    #[serde(rename = "user_object_filter", skip_serializing_if = "Option::is_none")]
105    pub user_object_filter: Option<String>,
106    /// Consider Objects matching this filter to be Groups.
107    #[serde(rename = "group_object_filter", skip_serializing_if = "Option::is_none")]
108    pub group_object_filter: Option<String>,
109    /// Field which contains members of a group.
110    #[serde(rename = "group_membership_field", skip_serializing_if = "Option::is_none")]
111    pub group_membership_field: Option<String>,
112    /// Attribute which matches the value of `group_membership_field`.
113    #[serde(rename = "user_membership_attribute", skip_serializing_if = "Option::is_none")]
114    pub user_membership_attribute: Option<String>,
115    /// Field which contains a unique Identifier.
116    #[serde(rename = "object_uniqueness_field", skip_serializing_if = "Option::is_none")]
117    pub object_uniqueness_field: Option<String>,
118    /// Update internal authentik password when login succeeds with LDAP
119    #[serde(
120        rename = "password_login_update_internal_password",
121        skip_serializing_if = "Option::is_none"
122    )]
123    pub password_login_update_internal_password: Option<bool>,
124    #[serde(rename = "sync_users", skip_serializing_if = "Option::is_none")]
125    pub sync_users: Option<bool>,
126    /// When a user changes their password, sync it back to LDAP. This can only be enabled on a single LDAP source.
127    #[serde(rename = "sync_users_password", skip_serializing_if = "Option::is_none")]
128    pub sync_users_password: Option<bool>,
129    #[serde(rename = "sync_groups", skip_serializing_if = "Option::is_none")]
130    pub sync_groups: Option<bool>,
131    #[serde(
132        rename = "sync_parent_group",
133        default,
134        with = "::serde_with::rust::double_option",
135        skip_serializing_if = "Option::is_none"
136    )]
137    pub sync_parent_group: Option<Option<uuid::Uuid>>,
138    /// Get cached source connectivity
139    #[serde(rename = "connectivity", deserialize_with = "Option::deserialize")]
140    pub connectivity: Option<std::collections::HashMap<String, std::collections::HashMap<String, String>>>,
141    /// Lookup group membership based on a user attribute instead of a group attribute. This allows nested group resolution on systems like FreeIPA and Active Directory
142    #[serde(rename = "lookup_groups_from_user", skip_serializing_if = "Option::is_none")]
143    pub lookup_groups_from_user: Option<bool>,
144    /// Delete authentik users and groups which were previously supplied by this source, but are now missing from it.
145    #[serde(rename = "delete_not_found_objects", skip_serializing_if = "Option::is_none")]
146    pub delete_not_found_objects: Option<bool>,
147}
148
149impl LdapSource {
150    /// LDAP Source Serializer
151    pub fn new(
152        pk: uuid::Uuid,
153        name: String,
154        slug: String,
155        component: String,
156        verbose_name: String,
157        verbose_name_plural: String,
158        meta_model_name: String,
159        managed: Option<String>,
160        icon: String,
161        server_uri: String,
162        base_dn: String,
163        connectivity: Option<std::collections::HashMap<String, std::collections::HashMap<String, String>>>,
164    ) -> LdapSource {
165        LdapSource {
166            pk,
167            name,
168            slug,
169            enabled: None,
170            authentication_flow: None,
171            enrollment_flow: None,
172            user_property_mappings: None,
173            group_property_mappings: None,
174            component,
175            verbose_name,
176            verbose_name_plural,
177            meta_model_name,
178            policy_engine_mode: None,
179            user_matching_mode: None,
180            managed,
181            user_path_template: None,
182            icon,
183            server_uri,
184            peer_certificate: None,
185            client_certificate: None,
186            bind_cn: None,
187            start_tls: None,
188            sni: None,
189            base_dn,
190            additional_user_dn: None,
191            additional_group_dn: None,
192            user_object_filter: None,
193            group_object_filter: None,
194            group_membership_field: None,
195            user_membership_attribute: None,
196            object_uniqueness_field: None,
197            password_login_update_internal_password: None,
198            sync_users: None,
199            sync_users_password: None,
200            sync_groups: None,
201            sync_parent_group: None,
202            connectivity,
203            lookup_groups_from_user: None,
204            delete_not_found_objects: None,
205        }
206    }
207}