kanidmd_lib/migration_data/dl11/
schema.rs

1//! Schema Entries
2use crate::constants::entries::{Attribute, EntryClass};
3use crate::constants::uuids::*;
4use crate::schema::{SchemaAttribute, SchemaClass};
5use crate::value::SyntaxType;
6
7lazy_static!(
8
9pub static ref SCHEMA_ATTR_DISPLAYNAME_DL7: SchemaAttribute = SchemaAttribute {
10    uuid: UUID_SCHEMA_ATTR_DISPLAYNAME,
11    name: Attribute::DisplayName,
12    description: "The publicly visible display name of this person".to_string(),
13    indexed: true,
14    sync_allowed: true,
15    syntax: SyntaxType::Utf8String,
16    ..Default::default()
17};
18
19pub static ref SCHEMA_ATTR_MAIL_DL7: SchemaAttribute = SchemaAttribute {
20    uuid: UUID_SCHEMA_ATTR_MAIL,
21    name: Attribute::Mail,
22    description: "Mail addresses of the object".to_string(),
23    indexed: true,
24    unique: true,
25    multivalue: true,
26    sync_allowed: true,
27    syntax: SyntaxType::EmailAddress,
28    ..Default::default()
29};
30
31pub static ref SCHEMA_ATTR_EC_KEY_PRIVATE: SchemaAttribute = SchemaAttribute {
32    uuid: UUID_SCHEMA_ATTR_EC_KEY_PRIVATE,
33    name: Attribute::IdVerificationEcKey,
34    description: "Account verification private key".to_string(),
35    indexed: true,
36    unique: false,
37    sync_allowed: false,
38    syntax: SyntaxType::EcKeyPrivate,
39    ..Default::default()
40};
41
42pub static ref SCHEMA_ATTR_SSH_PUBLICKEY: SchemaAttribute = SchemaAttribute {
43    uuid: UUID_SCHEMA_ATTR_SSH_PUBLICKEY,
44    name: Attribute::SshPublicKey,
45    description: "SSH public keys of the object".to_string(),
46
47    multivalue: true,
48    sync_allowed: true,
49    syntax: SyntaxType::SshKey,
50    ..Default::default()
51};
52
53pub static ref SCHEMA_ATTR_PRIMARY_CREDENTIAL: SchemaAttribute = SchemaAttribute {
54    uuid: UUID_SCHEMA_ATTR_PRIMARY_CREDENTIAL,
55    name: Attribute::PrimaryCredential,
56    description: "Primary credential material of the account for authentication interactively".to_string(),
57    indexed: true,
58    sync_allowed: true,
59    syntax: SyntaxType::Credential,
60    ..Default::default()
61};
62
63pub static ref SCHEMA_ATTR_LEGALNAME_DL7: SchemaAttribute = SchemaAttribute {
64    uuid: UUID_SCHEMA_ATTR_LEGALNAME,
65    name: Attribute::LegalName,
66    description: "The private and sensitive legal name of this person".to_string(),
67    indexed: true,
68    sync_allowed: true,
69    syntax: SyntaxType::Utf8String,
70    ..Default::default()
71};
72
73pub static ref SCHEMA_ATTR_NAME_HISTORY: SchemaAttribute = SchemaAttribute {
74    uuid: UUID_SCHEMA_ATTR_NAME_HISTORY,
75    name: Attribute::NameHistory,
76    description: "The history of names that a person has had".to_string(),
77    indexed: true,
78    multivalue: true,
79    sync_allowed: true,
80    syntax: SyntaxType::AuditLogString,
81    ..Default::default()
82};
83
84pub static ref SCHEMA_ATTR_RADIUS_SECRET: SchemaAttribute = SchemaAttribute {
85    uuid: UUID_SCHEMA_ATTR_RADIUS_SECRET,
86    name: Attribute::RadiusSecret,
87    description: "The accounts generated radius secret for device network authentication".to_string(),
88    sync_allowed: true,
89    syntax: SyntaxType::SecretUtf8String,
90    ..Default::default()
91};
92
93pub static ref SCHEMA_ATTR_DOMAIN_NAME: SchemaAttribute = SchemaAttribute {
94    uuid: UUID_SCHEMA_ATTR_DOMAIN_NAME,
95    name: Attribute::DomainName,
96    description: "The domain's DNS name for webauthn and SPN generation purposes".to_string(),
97    indexed: true,
98    unique: true,
99    syntax: SyntaxType::Utf8StringIname,
100    ..Default::default()
101};
102
103pub static ref SCHEMA_ATTR_LDAP_ALLOW_UNIX_PW_BIND: SchemaAttribute = SchemaAttribute {
104    uuid: UUID_SCHEMA_ATTR_LDAP_ALLOW_UNIX_PW_BIND,
105    name: Attribute::LdapAllowUnixPwBind,
106    description: "Configuration to enable binds to LDAP objects using their UNIX password".to_string(),
107    unique: false,
108    syntax: SyntaxType::Boolean,
109    ..Default::default()
110};
111
112pub static ref SCHEMA_ATTR_DOMAIN_LDAP_BASEDN: SchemaAttribute = SchemaAttribute {
113    uuid: UUID_SCHEMA_ATTR_DOMAIN_LDAP_BASEDN,
114    name: Attribute::DomainLdapBasedn,
115    description: "The domain's optional ldap basedn. If unset defaults to domain components of domain name".to_string(),
116    unique: true,
117    syntax: SyntaxType::Utf8StringInsensitive,
118    ..Default::default()
119};
120
121pub static ref SCHEMA_ATTR_LDAP_MAXIMUM_QUERYABLE_ATTRIBUTES: SchemaAttribute = SchemaAttribute {
122    uuid: UUID_SCHEMA_ATTR_LDAP_MAXIMUM_QUERYABLE_ATTRIBUTES,
123    name: Attribute::LdapMaxQueryableAttrs,
124    description: "The maximum number of LDAP attributes that can be queried in one operation".to_string(),
125    multivalue: false,
126    sync_allowed: true,
127    syntax: SyntaxType::Uint32,
128    ..Default::default()
129};
130
131pub static ref SCHEMA_ATTR_DOMAIN_DISPLAY_NAME: SchemaAttribute = SchemaAttribute {
132    uuid: UUID_SCHEMA_ATTR_DOMAIN_DISPLAY_NAME,
133    name: Attribute::DomainDisplayName,
134    description: "The user-facing display name of the Kanidm domain".to_string(),
135    indexed: true,
136    syntax: SyntaxType::Utf8String,
137    ..Default::default()
138};
139
140pub static ref SCHEMA_ATTR_DOMAIN_UUID: SchemaAttribute = SchemaAttribute {
141    uuid: UUID_SCHEMA_ATTR_DOMAIN_UUID,
142    name: Attribute::DomainUuid,
143    description: "The domain's uuid, used in CSN and trust relationships".to_string(),
144    indexed: true,
145    unique: true,
146    syntax: SyntaxType::Uuid,
147    ..Default::default()
148};
149
150pub static ref SCHEMA_ATTR_DOMAIN_SSID: SchemaAttribute = SchemaAttribute {
151    uuid: UUID_SCHEMA_ATTR_DOMAIN_SSID,
152    name: Attribute::DomainSsid,
153    description: "The domains site-wide SSID for device autoconfiguration of wireless".to_string(),
154    indexed: true,
155    unique: true,
156    syntax: SyntaxType::Utf8String,
157    ..Default::default()
158};
159
160pub static ref SCHEMA_ATTR_DENIED_NAME_DL10: SchemaAttribute = SchemaAttribute {
161    uuid: UUID_SCHEMA_ATTR_DENIED_NAME,
162    name: Attribute::DeniedName,
163    description: "Iname values that are not allowed to be used in 'name'.".to_string(),
164    syntax: SyntaxType::Utf8StringIname,
165    multivalue: true,
166    ..Default::default()
167};
168
169pub static ref SCHEMA_ATTR_DOMAIN_TOKEN_KEY: SchemaAttribute = SchemaAttribute {
170    uuid: UUID_SCHEMA_ATTR_DOMAIN_TOKEN_KEY,
171    name: Attribute::DomainTokenKey,
172    description: "The domain token encryption private key (NOT USED)".to_string(),
173    syntax: SyntaxType::SecretUtf8String,
174    ..Default::default()
175};
176
177pub static ref SCHEMA_ATTR_FERNET_PRIVATE_KEY_STR: SchemaAttribute = SchemaAttribute {
178    uuid: UUID_SCHEMA_ATTR_FERNET_PRIVATE_KEY_STR,
179    name: Attribute::FernetPrivateKeyStr,
180    description: "The token encryption private key".to_string(),
181
182    syntax: SyntaxType::SecretUtf8String,
183    ..Default::default()
184};
185
186pub static ref SCHEMA_ATTR_GIDNUMBER: SchemaAttribute = SchemaAttribute {
187    uuid: UUID_SCHEMA_ATTR_GIDNUMBER,
188    name: Attribute::GidNumber,
189    description: "The groupid (uid) number of a group or account.to_string(). This is the same value as the UID number on posix accounts for security reasons".to_string(),
190    indexed: true,
191    unique: true,
192    sync_allowed: true,
193    syntax: SyntaxType::Uint32,
194    ..Default::default()
195};
196
197pub static ref SCHEMA_ATTR_BADLIST_PASSWORD: SchemaAttribute = SchemaAttribute {
198    uuid: UUID_SCHEMA_ATTR_BADLIST_PASSWORD,
199    name: Attribute::BadlistPassword,
200    description: "A password that is badlisted meaning that it can not be set as a valid password by any user account".to_string(),
201    multivalue: true,
202    syntax: SyntaxType::Utf8StringInsensitive,
203    ..Default::default()
204};
205
206pub static ref SCHEMA_ATTR_AUTH_SESSION_EXPIRY: SchemaAttribute = SchemaAttribute {
207    uuid: UUID_SCHEMA_ATTR_AUTH_SESSION_EXPIRY,
208    name: Attribute::AuthSessionExpiry,
209    description: "An expiration time for an authentication session".to_string(),
210    syntax: SyntaxType::Uint32,
211    ..Default::default()
212};
213
214pub static ref SCHEMA_ATTR_AUTH_PRIVILEGE_EXPIRY: SchemaAttribute = SchemaAttribute {
215    uuid: UUID_SCHEMA_ATTR_AUTH_PRIVILEGE_EXPIRY,
216    name: Attribute::PrivilegeExpiry,
217    description: "An expiration time for a privileged authentication session".to_string(),
218    syntax: SyntaxType::Uint32,
219    ..Default::default()
220};
221
222pub static ref SCHEMA_ATTR_AUTH_PASSWORD_MINIMUM_LENGTH: SchemaAttribute = SchemaAttribute {
223    uuid: UUID_SCHEMA_ATTR_AUTH_PASSWORD_MINIMUM_LENGTH,
224    name: Attribute::AuthPasswordMinimumLength,
225    description: "Minimum length of passwords".to_string(),
226    syntax: SyntaxType::Uint32,
227    ..Default::default()
228};
229
230pub static ref SCHEMA_ATTR_LOGINSHELL: SchemaAttribute = SchemaAttribute {
231    uuid: UUID_SCHEMA_ATTR_LOGINSHELL,
232    name: Attribute::LoginShell,
233    description: "A POSIX user's UNIX login shell".to_string(),
234    sync_allowed: true,
235    syntax: SyntaxType::Utf8StringInsensitive,
236    ..Default::default()
237};
238
239pub static ref SCHEMA_ATTR_UNIX_PASSWORD: SchemaAttribute = SchemaAttribute {
240    uuid: UUID_SCHEMA_ATTR_UNIX_PASSWORD,
241    name: Attribute::UnixPassword,
242    description: "A POSIX user's UNIX login password".to_string(),
243    indexed: true,
244    syntax: SyntaxType::Credential,
245    ..Default::default()
246};
247
248pub static ref SCHEMA_ATTR_NSUNIQUEID: SchemaAttribute = SchemaAttribute {
249    uuid: UUID_SCHEMA_ATTR_NSUNIQUEID,
250    name: Attribute::NsUniqueId,
251    description: "A unique id compatibility for 389-ds/dsee".to_string(),
252    indexed: true,
253    unique: true,
254    sync_allowed: true,
255    syntax: SyntaxType::NsUniqueId,
256    ..Default::default()
257};
258
259pub static ref SCHEMA_ATTR_ACCOUNT_EXPIRE: SchemaAttribute = SchemaAttribute {
260    uuid: UUID_SCHEMA_ATTR_ACCOUNT_EXPIRE,
261    name: Attribute::AccountExpire,
262    description: "The datetime after which this account no longer may authenticate".to_string(),
263    sync_allowed: true,
264    syntax: SyntaxType::DateTime,
265    ..Default::default()
266};
267
268pub static ref SCHEMA_ATTR_ACCOUNT_VALID_FROM: SchemaAttribute = SchemaAttribute {
269    uuid: UUID_SCHEMA_ATTR_ACCOUNT_VALID_FROM,
270    name: Attribute::AccountValidFrom,
271    description: "The datetime after which this account may commence authenticating".to_string(),
272    sync_allowed: true,
273    syntax: SyntaxType::DateTime,
274    ..Default::default()
275};
276
277pub static ref SCHEMA_ATTR_WEBAUTHN_ATTESTATION_CA_LIST: SchemaAttribute = SchemaAttribute {
278    uuid: UUID_SCHEMA_ATTR_WEBAUTHN_ATTESTATION_CA_LIST,
279    name: Attribute::WebauthnAttestationCaList,
280    description: "A set of CA's that limit devices that can be used with webauthn".to_string(),
281    syntax: SyntaxType::WebauthnAttestationCaList,
282    multivalue: true,
283    ..Default::default()
284};
285
286pub static ref SCHEMA_ATTR_OAUTH2_RS_NAME: SchemaAttribute = SchemaAttribute {
287    uuid: UUID_SCHEMA_ATTR_OAUTH2_RS_NAME,
288    name: Attribute::OAuth2RsName,
289    description: "The unique name of an external Oauth2 resource".to_string(),
290    indexed: true,
291    unique: true,
292    syntax: SyntaxType::Utf8StringIname,
293    ..Default::default()
294};
295
296pub static ref SCHEMA_ATTR_OAUTH2_RS_ORIGIN_DL7: SchemaAttribute = SchemaAttribute {
297    uuid: UUID_SCHEMA_ATTR_OAUTH2_RS_ORIGIN,
298    name: Attribute::OAuth2RsOrigin,
299    description: "The origin domain of an OAuth2 client".to_string(),
300    syntax: SyntaxType::Url,
301    multivalue: true,
302    ..Default::default()
303};
304
305pub static ref SCHEMA_ATTR_OAUTH2_RS_ORIGIN_LANDING: SchemaAttribute = SchemaAttribute {
306    uuid: UUID_SCHEMA_ATTR_OAUTH2_RS_ORIGIN_LANDING,
307    name: Attribute::OAuth2RsOriginLanding,
308    description: "The landing page of an RS, that will automatically trigger the auth process".to_string(),
309    syntax: SyntaxType::Url,
310    ..Default::default()
311};
312
313// Introduced in DomainLevel4
314pub static ref SCHEMA_ATTR_OAUTH2_ALLOW_LOCALHOST_REDIRECT_DL4: SchemaAttribute = SchemaAttribute {
315    uuid: UUID_SCHEMA_ATTR_OAUTH2_ALLOW_LOCALHOST_REDIRECT,
316    name: Attribute::OAuth2AllowLocalhostRedirect,
317    description: "Allow public clients associated to this RS to redirect to localhost".to_string(),
318    syntax: SyntaxType::Boolean,
319    ..Default::default()
320};
321
322pub static ref SCHEMA_ATTR_OAUTH2_RS_CLAIM_MAP_DL4: SchemaAttribute = SchemaAttribute {
323    uuid: UUID_SCHEMA_ATTR_OAUTH2_RS_CLAIM_MAP,
324    name: Attribute::OAuth2RsClaimMap,
325    description: "A set of custom claims mapped to group memberships of accounts".to_string(),
326    indexed: true,
327    multivalue: true,
328    // CHANGE ME
329    syntax: SyntaxType::OauthClaimMap,
330    ..Default::default()
331};
332
333pub static ref SCHEMA_ATTR_OAUTH2_RS_SCOPE_MAP: SchemaAttribute = SchemaAttribute {
334    uuid: UUID_SCHEMA_ATTR_OAUTH2_RS_SCOPE_MAP,
335    name: Attribute::OAuth2RsScopeMap,
336    description: "A reference to a group mapped to scopes for the associated oauth2 resource server".to_string(),
337    indexed: true,
338    multivalue: true,
339    syntax: SyntaxType::OauthScopeMap,
340    ..Default::default()
341};
342
343pub static ref SCHEMA_ATTR_OAUTH2_RS_SUP_SCOPE_MAP: SchemaAttribute = SchemaAttribute {
344    uuid: UUID_SCHEMA_ATTR_OAUTH2_RS_SUP_SCOPE_MAP,
345    name: Attribute::OAuth2RsSupScopeMap,
346    description: "A reference to a group mapped to scopes for the associated oauth2 resource server".to_string(),
347    indexed: true,
348    multivalue: true,
349    syntax: SyntaxType::OauthScopeMap,
350    ..Default::default()
351};
352
353pub static ref SCHEMA_ATTR_OAUTH2_RS_BASIC_SECRET: SchemaAttribute = SchemaAttribute {
354    uuid: UUID_SCHEMA_ATTR_OAUTH2_RS_BASIC_SECRET,
355    name: Attribute::OAuth2RsBasicSecret,
356    description: "When using oauth2 basic authentication, the secret string of the resource server".to_string(),
357    syntax: SyntaxType::SecretUtf8String,
358    ..Default::default()
359};
360
361pub static ref SCHEMA_ATTR_OAUTH2_RS_TOKEN_KEY: SchemaAttribute = SchemaAttribute {
362    uuid: UUID_SCHEMA_ATTR_OAUTH2_RS_TOKEN_KEY,
363    name: Attribute::OAuth2RsTokenKey,
364    description: "An oauth2 resource servers unique token signing key".to_string(),
365    syntax: SyntaxType::SecretUtf8String,
366    ..Default::default()
367};
368
369pub static ref SCHEMA_ATTR_OAUTH2_RS_IMPLICIT_SCOPES: SchemaAttribute = SchemaAttribute {
370    uuid: UUID_SCHEMA_ATTR_OAUTH2_RS_IMPLICIT_SCOPES,
371    name: Attribute::OAuth2RsImplicitScopes,
372    description: "An oauth2 resource servers scopes that are implicitly granted to all users".to_string(),
373    multivalue: true,
374    syntax: SyntaxType::OauthScope,
375    ..Default::default()
376};
377
378pub static ref SCHEMA_ATTR_OAUTH2_CONSENT_SCOPE_MAP: SchemaAttribute = SchemaAttribute {
379    uuid: UUID_SCHEMA_ATTR_OAUTH2_CONSENT_SCOPE_MAP,
380    name: Attribute::OAuth2ConsentScopeMap,
381    description: "A set of scopes mapped from a relying server to a user, where the user has previously consented to the following. If changed or deleted, consent will be re-sought".to_string(),
382    indexed: true,
383    multivalue: true,
384    syntax: SyntaxType::OauthScopeMap,
385    ..Default::default()
386};
387
388pub static ref SCHEMA_ATTR_OAUTH2_STRICT_REDIRECT_URI_DL7: SchemaAttribute = SchemaAttribute {
389    uuid: UUID_SCHEMA_ATTR_OAUTH2_STRICT_REDIRECT_URI,
390    name: Attribute::OAuth2StrictRedirectUri,
391    description: "Represents if strict redirect uri enforcement is enabled.".to_string(),
392    syntax: SyntaxType::Boolean,
393    ..Default::default()
394};
395
396
397pub static ref SCHEMA_ATTR_OAUTH2_DEVICE_FLOW_ENABLE_DL9: SchemaAttribute = SchemaAttribute {
398    uuid: UUID_SCHEMA_ATTR_OAUTH2_DEVICE_FLOW_ENABLE,
399    name: Attribute::OAuth2DeviceFlowEnable,
400    description: "Represents if OAuth2 Device Flow is permitted on this client.".to_string(),
401    syntax: SyntaxType::Boolean,
402    ..Default::default()
403};
404
405pub static ref SCHEMA_ATTR_ES256_PRIVATE_KEY_DER: SchemaAttribute = SchemaAttribute {
406    uuid: UUID_SCHEMA_ATTR_ES256_PRIVATE_KEY_DER,
407    name: Attribute::Es256PrivateKeyDer,
408    description: "An es256 private key".to_string(),
409    syntax: SyntaxType::PrivateBinary,
410    ..Default::default()
411};
412
413pub static ref SCHEMA_ATTR_RS256_PRIVATE_KEY_DER: SchemaAttribute = SchemaAttribute {
414    uuid: UUID_SCHEMA_ATTR_RS256_PRIVATE_KEY_DER,
415    name: Attribute::Rs256PrivateKeyDer,
416    description: "An rs256 private key".to_string(),
417    syntax: SyntaxType::PrivateBinary,
418    ..Default::default()
419};
420
421pub static ref SCHEMA_ATTR_JWS_ES256_PRIVATE_KEY: SchemaAttribute = SchemaAttribute {
422    uuid: UUID_SCHEMA_ATTR_JWS_ES256_PRIVATE_KEY,
423    name: Attribute::JwsEs256PrivateKey,
424    description: "An es256 private key for jws".to_string(),
425    indexed: true,
426    unique: true,
427    syntax: SyntaxType::JwsKeyEs256,
428    ..Default::default()
429};
430
431// TO BE REMOVED IN A FUTURE RELEASE
432pub static ref SCHEMA_ATTR_PRIVATE_COOKIE_KEY: SchemaAttribute = SchemaAttribute {
433    uuid: UUID_SCHEMA_ATTR_PRIVATE_COOKIE_KEY,
434    name: Attribute::PrivateCookieKey,
435    description: "An private cookie hmac key".to_string(),
436    syntax: SyntaxType::PrivateBinary,
437    ..Default::default()
438};
439
440pub static ref SCHEMA_ATTR_OAUTH2_ALLOW_INSECURE_CLIENT_DISABLE_PKCE: SchemaAttribute = SchemaAttribute {
441    uuid: UUID_SCHEMA_ATTR_OAUTH2_ALLOW_INSECURE_CLIENT_DISABLE_PKCE,
442    name: Attribute::OAuth2AllowInsecureClientDisablePkce,
443    description: "Allows disabling of PKCE for insecure OAuth2 clients".to_string(),
444    syntax: SyntaxType::Boolean,
445    ..Default::default()
446};
447
448pub static ref SCHEMA_ATTR_OAUTH2_JWT_LEGACY_CRYPTO_ENABLE: SchemaAttribute = SchemaAttribute {
449    uuid: UUID_SCHEMA_ATTR_OAUTH2_JWT_LEGACY_CRYPTO_ENABLE,
450    name: Attribute::OAuth2JwtLegacyCryptoEnable,
451    description: "Allows enabling legacy JWT cryptograhpy for clients".to_string(),
452    syntax: SyntaxType::Boolean,
453    ..Default::default()
454};
455
456pub static ref SCHEMA_ATTR_CREDENTIAL_UPDATE_INTENT_TOKEN: SchemaAttribute = SchemaAttribute {
457    uuid: UUID_SCHEMA_ATTR_CREDENTIAL_UPDATE_INTENT_TOKEN,
458    name: Attribute::CredentialUpdateIntentToken,
459    description: "The status of a credential update intent token".to_string(),
460    indexed: true,
461    multivalue: true,
462    syntax: SyntaxType::IntentToken,
463    ..Default::default()
464};
465
466pub static ref SCHEMA_ATTR_PASSKEYS: SchemaAttribute = SchemaAttribute {
467    uuid: UUID_SCHEMA_ATTR_PASSKEYS,
468    name: Attribute::PassKeys,
469    description: "A set of registered passkeys".to_string(),
470    indexed: true,
471    multivalue: true,
472    sync_allowed: true,
473    syntax: SyntaxType::Passkey,
474    ..Default::default()
475};
476
477pub static ref SCHEMA_ATTR_ATTESTED_PASSKEYS: SchemaAttribute = SchemaAttribute {
478    uuid: UUID_SCHEMA_ATTR_ATTESTED_PASSKEYS,
479    name: Attribute::AttestedPasskeys,
480    description: "A set of registered device keys".to_string(),
481    indexed: true,
482    multivalue: true,
483    sync_allowed: true,
484    syntax: SyntaxType::AttestedPasskey,
485    ..Default::default()
486};
487
488pub static ref SCHEMA_ATTR_DYNGROUP_FILTER: SchemaAttribute = SchemaAttribute {
489    uuid: UUID_SCHEMA_ATTR_DYNGROUP_FILTER,
490    name: Attribute::DynGroupFilter,
491    description: "A filter describing the set of entries to add to a dynamic group".to_string(),
492    syntax: SyntaxType::JsonFilter,
493    ..Default::default()
494};
495
496pub static ref SCHEMA_ATTR_OAUTH2_PREFER_SHORT_USERNAME: SchemaAttribute = SchemaAttribute {
497    uuid: UUID_SCHEMA_ATTR_OAUTH2_PREFER_SHORT_USERNAME,
498    name: Attribute::OAuth2PreferShortUsername,
499    description: "Use 'name' instead of 'spn' in the preferred_username claim".to_string(),
500    syntax: SyntaxType::Boolean,
501    ..Default::default()
502};
503
504pub static ref SCHEMA_ATTR_API_TOKEN_SESSION: SchemaAttribute = SchemaAttribute {
505    uuid: UUID_SCHEMA_ATTR_API_TOKEN_SESSION,
506    name: Attribute::ApiTokenSession,
507    description: "A session entry related to an issued API token".to_string(),
508    indexed: true,
509    unique: true,
510    multivalue: true,
511    syntax: SyntaxType::ApiToken,
512    ..Default::default()
513};
514
515pub static ref SCHEMA_ATTR_USER_AUTH_TOKEN_SESSION: SchemaAttribute = SchemaAttribute {
516    uuid: UUID_SCHEMA_ATTR_USER_AUTH_TOKEN_SESSION,
517    name: Attribute::UserAuthTokenSession,
518    description: "A session entry related to an issued user auth token".to_string(),
519    indexed: true,
520    unique: true,
521    multivalue: true,
522    syntax: SyntaxType::Session,
523    ..Default::default()
524};
525
526pub static ref SCHEMA_ATTR_OAUTH2_SESSION: SchemaAttribute = SchemaAttribute {
527    uuid: UUID_SCHEMA_ATTR_OAUTH2_SESSION,
528    name: Attribute::OAuth2Session,
529    description: "A session entry to an active oauth2 session, bound to a parent user auth token".to_string(),
530    indexed: true,
531    multivalue: true,
532    syntax: SyntaxType::Oauth2Session,
533    ..Default::default()
534};
535
536pub static ref SCHEMA_ATTR_SYNC_TOKEN_SESSION: SchemaAttribute = SchemaAttribute {
537    uuid: UUID_SCHEMA_ATTR_SYNC_TOKEN_SESSION,
538    name: Attribute::SyncTokenSession,
539    description: "A session entry related to an issued sync token".to_string(),
540    indexed: true,
541    unique: true,
542    syntax: SyntaxType::ApiToken,
543    ..Default::default()
544};
545
546pub static ref SCHEMA_ATTR_SYNC_COOKIE: SchemaAttribute = SchemaAttribute {
547    uuid: UUID_SCHEMA_ATTR_SYNC_COOKIE,
548    name: Attribute::SyncCookie,
549    description: "A private sync cookie for a remote IDM source".to_string(),
550    syntax: SyntaxType::PrivateBinary,
551    ..Default::default()
552};
553
554pub static ref SCHEMA_ATTR_GRANT_UI_HINT: SchemaAttribute = SchemaAttribute {
555    uuid: UUID_SCHEMA_ATTR_GRANT_UI_HINT,
556    name: Attribute::GrantUiHint,
557    description: "A UI hint that is granted via membership to a group".to_string(),
558    indexed: true,
559    multivalue: true,
560    syntax: SyntaxType::UiHint,
561    ..Default::default()
562};
563
564pub static ref SCHEMA_ATTR_SYNC_CREDENTIAL_PORTAL: SchemaAttribute = SchemaAttribute {
565    uuid: UUID_SCHEMA_ATTR_SYNC_CREDENTIAL_PORTAL,
566    name: Attribute::SyncCredentialPortal,
567    description: "The url of an external credential portal for synced accounts to visit to update their credentials".to_string(),
568    syntax: SyntaxType::Url,
569    ..Default::default()
570};
571
572pub static ref SCHEMA_ATTR_SYNC_YIELD_AUTHORITY: SchemaAttribute = SchemaAttribute {
573    uuid: UUID_SCHEMA_ATTR_SYNC_YIELD_AUTHORITY,
574    name: Attribute::SyncYieldAuthority,
575    description: "A set of attributes that have their authority yielded to Kanidm in a sync agreement".to_string(),
576    multivalue: true,
577    syntax: SyntaxType::Utf8StringInsensitive,
578    ..Default::default()
579};
580
581pub static ref SCHEMA_ATTR_CREDENTIAL_TYPE_MINIMUM: SchemaAttribute = SchemaAttribute {
582    uuid: UUID_SCHEMA_ATTR_CREDENTIAL_TYPE_MINIMUM,
583    name: Attribute::CredentialTypeMinimum,
584    description: "The minimum level of credential type that can satisfy this policy".to_string(),
585    multivalue: false,
586    syntax: SyntaxType::CredentialType,
587    ..Default::default()
588};
589
590pub static ref SCHEMA_ATTR_LIMIT_SEARCH_MAX_RESULTS_DL6: SchemaAttribute = SchemaAttribute {
591    uuid: UUID_SCHEMA_ATTR_LIMIT_SEARCH_MAX_RESULTS,
592    name: Attribute::LimitSearchMaxResults,
593    description: "The maximum number of query results that may be returned in a single operation".to_string(),
594    multivalue: false,
595    syntax: SyntaxType::Uint32,
596    ..Default::default()
597};
598
599pub static ref SCHEMA_ATTR_LIMIT_SEARCH_MAX_FILTER_TEST_DL6: SchemaAttribute = SchemaAttribute {
600    uuid: UUID_SCHEMA_ATTR_LIMIT_SEARCH_MAX_FILTER_TEST,
601    name: Attribute::LimitSearchMaxFilterTest,
602    description: "The maximum number of entries that may be examined in a partially indexed query".to_string(),
603    multivalue: false,
604    syntax: SyntaxType::Uint32,
605    ..Default::default()
606};
607
608pub static ref SCHEMA_ATTR_KEY_INTERNAL_DATA_DL6: SchemaAttribute = SchemaAttribute {
609    uuid: UUID_SCHEMA_ATTR_KEY_INTERNAL_DATA,
610    name: Attribute::KeyInternalData,
611    description: "".to_string(),
612    multivalue: true,
613    syntax: SyntaxType::KeyInternal,
614    ..Default::default()
615};
616
617pub static ref SCHEMA_ATTR_KEY_PROVIDER_DL6: SchemaAttribute = SchemaAttribute {
618    uuid: UUID_SCHEMA_ATTR_KEY_PROVIDER,
619    name: Attribute::KeyProvider,
620    description: "".to_string(),
621    multivalue: false,
622    indexed: true,
623    syntax: SyntaxType::ReferenceUuid,
624    ..Default::default()
625};
626
627pub static ref SCHEMA_ATTR_KEY_ACTION_ROTATE_DL6: SchemaAttribute = SchemaAttribute {
628    uuid: UUID_SCHEMA_ATTR_KEY_ACTION_ROTATE,
629    name: Attribute::KeyActionRotate,
630    description: "".to_string(),
631    multivalue: false,
632    // Ephemeral action.
633    phantom: true,
634    syntax: SyntaxType::DateTime,
635    ..Default::default()
636};
637
638pub static ref SCHEMA_ATTR_KEY_ACTION_REVOKE_DL6: SchemaAttribute = SchemaAttribute {
639    uuid: UUID_SCHEMA_ATTR_KEY_ACTION_REVOKE,
640    name: Attribute::KeyActionRevoke,
641    description: "".to_string(),
642    multivalue: true,
643    // Ephemeral action.
644    phantom: true,
645    syntax: SyntaxType::HexString,
646    ..Default::default()
647};
648
649pub static ref SCHEMA_ATTR_KEY_ACTION_IMPORT_JWS_ES256_DL6: SchemaAttribute = SchemaAttribute {
650    uuid: UUID_SCHEMA_ATTR_KEY_ACTION_IMPORT_JWS_ES256,
651    name: Attribute::KeyActionImportJwsEs256,
652    description: "".to_string(),
653    multivalue: true,
654    // Ephemeral action.
655    phantom: true,
656    syntax: SyntaxType::PrivateBinary,
657    ..Default::default()
658};
659
660pub static ref SCHEMA_ATTR_KEY_ACTION_IMPORT_JWS_RS256_DL6: SchemaAttribute = SchemaAttribute {
661    uuid: UUID_SCHEMA_ATTR_KEY_ACTION_IMPORT_JWS_RS256,
662    name: Attribute::KeyActionImportJwsRs256,
663    description: "".to_string(),
664    multivalue: true,
665    // Ephemeral action.
666    phantom: true,
667    syntax: SyntaxType::PrivateBinary,
668    ..Default::default()
669};
670
671pub static ref SCHEMA_ATTR_PATCH_LEVEL_DL7: SchemaAttribute = SchemaAttribute {
672    uuid: UUID_SCHEMA_ATTR_PATCH_LEVEL,
673    name: Attribute::PatchLevel,
674    description: "".to_string(),
675    syntax: SyntaxType::Uint32,
676    ..Default::default()
677};
678
679pub static ref SCHEMA_ATTR_DOMAIN_DEVELOPMENT_TAINT_DL7: SchemaAttribute = SchemaAttribute {
680    uuid: UUID_SCHEMA_ATTR_DOMAIN_DEVELOPMENT_TAINT,
681    name: Attribute::DomainDevelopmentTaint,
682    description: "A flag to show that the domain has been run on a development build, and will need additional work to upgrade/migrate.".to_string(),
683    syntax: SyntaxType::Boolean,
684    ..Default::default()
685};
686
687pub static ref SCHEMA_ATTR_DOMAIN_ALLOW_EASTER_EGGS_DL9: SchemaAttribute = SchemaAttribute {
688    uuid: UUID_SCHEMA_ATTR_DOMAIN_ALLOW_EASTER_EGGS,
689    name: Attribute::DomainAllowEasterEggs,
690    description: "A flag to enable easter eggs in the server that may not always be wanted by all users/deployments.".to_string(),
691    syntax: SyntaxType::Boolean,
692    ..Default::default()
693};
694
695pub static ref SCHEMA_ATTR_REFERS_DL7: SchemaAttribute = SchemaAttribute {
696    uuid: UUID_SCHEMA_ATTR_REFERS,
697    name: Attribute::Refers,
698    description: "A reference to linked object".to_string(),
699    indexed: true,
700    multivalue: false,
701    syntax: SyntaxType::ReferenceUuid,
702    ..Default::default()
703};
704
705pub static ref SCHEMA_ATTR_LINKED_GROUP_DL8: SchemaAttribute = SchemaAttribute {
706    uuid: UUID_SCHEMA_ATTR_LINKED_GROUP,
707    name: Attribute::LinkedGroup,
708    description: "A reference linking a group to an entry".to_string(),
709    multivalue: false,
710    indexed: true,
711    syntax: SyntaxType::ReferenceUuid,
712    ..Default::default()
713};
714
715pub static ref SCHEMA_ATTR_ALLOW_PRIMARY_CRED_FALLBACK_DL8: SchemaAttribute = SchemaAttribute {
716    uuid: UUID_SCHEMA_ATTR_ALLOW_PRIMARY_CRED_FALLBACK,
717    name: Attribute::AllowPrimaryCredFallback,
718    description: "Allow fallback to primary password if no POSIX password exists".to_string(),
719    multivalue: false,
720    syntax: SyntaxType::Boolean,
721    ..Default::default()
722};
723
724pub static ref SCHEMA_ATTR_CERTIFICATE_DL7: SchemaAttribute = SchemaAttribute {
725    uuid: UUID_SCHEMA_ATTR_CERTIFICATE,
726    name: Attribute::Certificate,
727    description: "An x509 Certificate".to_string(),
728    multivalue: false,
729    syntax: SyntaxType::Certificate,
730    ..Default::default()
731};
732
733pub static ref SCHEMA_ATTR_APPLICATION_PASSWORD_DL8: SchemaAttribute = SchemaAttribute {
734    uuid: UUID_SCHEMA_ATTR_APPLICATION_PASSWORD,
735    name: Attribute::ApplicationPassword,
736    description: "A set of application passwords".to_string(),
737    multivalue: true,
738    indexed: true,
739    syntax: SyntaxType::ApplicationPassword,
740    ..Default::default()
741};
742
743pub static ref SCHEMA_ATTR_APPLICATION_URL: SchemaAttribute = SchemaAttribute {
744    uuid: UUID_SCHEMA_ATTR_APPLICATION_URL,
745    name: Attribute::ApplicationUrl,
746    description: "The URL of an external application".to_string(),
747    syntax: SyntaxType::Url,
748    ..Default::default()
749};
750
751// === classes ===
752pub static ref SCHEMA_CLASS_PERSON_DL8: SchemaClass = SchemaClass {
753    uuid: UUID_SCHEMA_CLASS_PERSON,
754    name: EntryClass::Person.into(),
755    description: "Object representation of a person".to_string(),
756
757    sync_allowed: true,
758    systemmay: vec![
759        Attribute::PrimaryCredential,
760        Attribute::PassKeys,
761        Attribute::AttestedPasskeys,
762        Attribute::CredentialUpdateIntentToken,
763        Attribute::SshPublicKey,
764        Attribute::RadiusSecret,
765        Attribute::OAuth2ConsentScopeMap,
766        Attribute::UserAuthTokenSession,
767        Attribute::OAuth2Session,
768        Attribute::Mail,
769        Attribute::LegalName,
770        Attribute::ApplicationPassword,
771    ],
772    systemmust: vec![
773        Attribute::IdVerificationEcKey
774    ],
775    systemexcludes: vec![EntryClass::ServiceAccount.into(), EntryClass::Application.into()],
776    ..Default::default()
777};
778
779pub static ref SCHEMA_CLASS_ORGPERSON: SchemaClass = SchemaClass {
780    uuid: UUID_SCHEMA_CLASS_ORGPERSON,
781    name: EntryClass::OrgPerson.into(),
782    description: "Object representation of an org person".to_string(),
783
784    systemmay: vec![
785        Attribute::LegalName
786        ],
787    systemmust: vec![
788        Attribute::Mail,
789        Attribute::DisplayName,
790        Attribute::Name
791    ],
792    ..Default::default()
793};
794
795pub static ref SCHEMA_CLASS_GROUP_DL6: SchemaClass = SchemaClass {
796    uuid: UUID_SCHEMA_CLASS_GROUP,
797    name: EntryClass::Group.into(),
798    description: "Object representation of a group".to_string(),
799
800    sync_allowed: true,
801    systemmay: vec![
802        Attribute::Member,
803        Attribute::GrantUiHint,
804        Attribute::Description,
805        Attribute::Mail,
806    ],
807    systemmust: vec![
808        Attribute::Name,
809        Attribute::Spn],
810    ..Default::default()
811};
812
813pub static ref SCHEMA_CLASS_DYNGROUP: SchemaClass = SchemaClass {
814    uuid: UUID_SCHEMA_CLASS_DYNGROUP,
815    name: EntryClass::DynGroup.into(),
816    description: "Object representation of a dynamic group".to_string(),
817
818    systemmust: vec![Attribute::DynGroupFilter],
819    systemmay: vec![Attribute::DynMember],
820    systemsupplements: vec![Attribute::Group.into()],
821    ..Default::default()
822};
823
824pub static ref SCHEMA_CLASS_ACCOUNT_POLICY_DL8: SchemaClass = SchemaClass {
825    uuid: UUID_SCHEMA_CLASS_ACCOUNT_POLICY,
826    name: EntryClass::AccountPolicy.into(),
827    description: "Policies applied to accounts that are members of a group".to_string(),
828
829    systemmay: vec![
830        Attribute::AuthSessionExpiry,
831        Attribute::PrivilegeExpiry,
832        Attribute::AuthPasswordMinimumLength,
833        Attribute::CredentialTypeMinimum,
834        Attribute::WebauthnAttestationCaList,
835        Attribute::LimitSearchMaxResults,
836        Attribute::LimitSearchMaxFilterTest,
837        Attribute::AllowPrimaryCredFallback,
838    ],
839    systemsupplements: vec![Attribute::Group.into()],
840    ..Default::default()
841};
842
843pub static ref SCHEMA_CLASS_ACCOUNT_DL5: SchemaClass = SchemaClass {
844    uuid: UUID_SCHEMA_CLASS_ACCOUNT,
845    name: EntryClass::Account.into(),
846    description: "Object representation of an account".to_string(),
847
848    sync_allowed: true,
849    systemmay: vec![
850        Attribute::AccountExpire,
851        Attribute::AccountValidFrom,
852        Attribute::NameHistory,
853    ],
854    systemmust: vec![
855        Attribute::DisplayName,
856        Attribute::Name,
857        Attribute::Spn
858    ],
859    systemsupplements: vec![
860        EntryClass::Person.into(),
861        EntryClass::ServiceAccount.into(),
862        EntryClass::OAuth2ResourceServer.into(),
863    ],
864    ..Default::default()
865};
866
867pub static ref SCHEMA_CLASS_SERVICE_ACCOUNT_DL7: SchemaClass = SchemaClass {
868    uuid: UUID_SCHEMA_CLASS_SERVICE_ACCOUNT,
869    name: EntryClass::ServiceAccount.into(),
870    description: "Object representation of service account".to_string(),
871
872    sync_allowed: true,
873    systemmay: vec![
874        Attribute::SshPublicKey,
875        Attribute::UserAuthTokenSession,
876        Attribute::OAuth2Session,
877        Attribute::OAuth2ConsentScopeMap,
878        Attribute::Description,
879
880        Attribute::Mail,
881        Attribute::PrimaryCredential,
882        Attribute::ApiTokenSession,
883    ],
884    systemexcludes: vec![EntryClass::Person.into()],
885    ..Default::default()
886};
887
888pub static ref SCHEMA_CLASS_SYNC_ACCOUNT_DL7: SchemaClass = SchemaClass {
889    uuid: UUID_SCHEMA_CLASS_SYNC_ACCOUNT,
890    name: EntryClass::SyncAccount.into(),
891    description: "Object representation of sync account".to_string(),
892
893    systemmust: vec![Attribute::Name],
894    systemmay: vec![
895        Attribute::SyncTokenSession,
896        Attribute::SyncCookie,
897        Attribute::SyncCredentialPortal,
898        Attribute::SyncYieldAuthority,
899    ],
900    systemexcludes: vec![EntryClass::Account.into()],
901    ..Default::default()
902};
903
904pub static ref SCHEMA_CLASS_DOMAIN_INFO_DL10: SchemaClass = SchemaClass {
905    uuid: UUID_SCHEMA_CLASS_DOMAIN_INFO,
906    name: EntryClass::DomainInfo.into(),
907    description: "Local domain information and configuration".to_string(),
908
909    systemmay: vec![
910        Attribute::DomainSsid,
911        Attribute::DomainLdapBasedn,
912        Attribute::LdapMaxQueryableAttrs,
913        Attribute::LdapAllowUnixPwBind,
914        Attribute::Image,
915        Attribute::PatchLevel,
916        Attribute::DomainDevelopmentTaint,
917        Attribute::DomainAllowEasterEggs,
918        Attribute::DomainDisplayName,
919    ],
920    systemmust: vec![
921        Attribute::Name,
922        Attribute::DomainUuid,
923        Attribute::DomainName,
924        Attribute::Version,
925    ],
926    ..Default::default()
927};
928
929pub static ref SCHEMA_CLASS_POSIXGROUP: SchemaClass = SchemaClass {
930    uuid: UUID_SCHEMA_CLASS_POSIXGROUP,
931    name: EntryClass::PosixGroup.into(),
932    description: "Object representation of a posix group, requires group".to_string(),
933
934    sync_allowed: true,
935    systemmust: vec![Attribute::GidNumber],
936    systemsupplements: vec![Attribute::Group.into()],
937    ..Default::default()
938};
939
940pub static ref SCHEMA_CLASS_POSIXACCOUNT: SchemaClass = SchemaClass {
941    uuid: UUID_SCHEMA_CLASS_POSIXACCOUNT,
942    name: EntryClass::PosixAccount.into(),
943    description: "Object representation of a posix account, requires account".to_string(),
944
945    sync_allowed: true,
946    systemmay: vec![Attribute::LoginShell, Attribute::UnixPassword],
947    systemmust: vec![Attribute::GidNumber],
948    systemsupplements: vec![Attribute::Account.into()],
949    ..Default::default()
950};
951
952pub static ref SCHEMA_CLASS_SYSTEM_CONFIG: SchemaClass = SchemaClass {
953    uuid: UUID_SCHEMA_CLASS_SYSTEM_CONFIG,
954    name: EntryClass::SystemConfig.into(),
955    description: "The class representing a system (topologies) configuration options".to_string(),
956
957    systemmay: vec![
958        Attribute::Description,
959        Attribute::BadlistPassword,
960        Attribute::AuthSessionExpiry,
961        Attribute::PrivilegeExpiry,
962        Attribute::DeniedName
963        ],
964    ..Default::default()
965};
966
967pub static ref SCHEMA_CLASS_OAUTH2_RS_DL9: SchemaClass = SchemaClass {
968    uuid: UUID_SCHEMA_CLASS_OAUTH2_RS,
969    name: EntryClass::OAuth2ResourceServer.into(),
970    description: "The class epresenting a configured OAuth2 Client".to_string(),
971
972    systemmay: vec![
973        Attribute::Description,
974        Attribute::OAuth2RsScopeMap,
975        Attribute::OAuth2RsSupScopeMap,
976        Attribute::OAuth2JwtLegacyCryptoEnable,
977        Attribute::OAuth2PreferShortUsername,
978        Attribute::Image,
979        Attribute::OAuth2RsClaimMap,
980        Attribute::OAuth2Session,
981        Attribute::OAuth2RsOrigin,
982        Attribute::OAuth2StrictRedirectUri,
983        Attribute::OAuth2DeviceFlowEnable,
984        // Deprecated
985        Attribute::Rs256PrivateKeyDer,
986        Attribute::OAuth2RsTokenKey,
987        Attribute::Es256PrivateKeyDer,
988    ],
989    systemmust: vec![
990        Attribute::OAuth2RsOriginLanding,
991    ],
992    ..Default::default()
993};
994
995pub static ref SCHEMA_CLASS_OAUTH2_RS_BASIC_DL5: SchemaClass = SchemaClass {
996    uuid: UUID_SCHEMA_CLASS_OAUTH2_RS_BASIC,
997    name: EntryClass::OAuth2ResourceServerBasic.into(),
998    description: "The class representing a configured OAuth2 client authenticated with HTTP basic authentication".to_string(),
999
1000    systemmay: vec![
1001        Attribute::OAuth2AllowInsecureClientDisablePkce,
1002    ],
1003    systemmust: vec![ Attribute::OAuth2RsBasicSecret],
1004    systemexcludes: vec![ EntryClass::OAuth2ResourceServerPublic.into()],
1005    ..Default::default()
1006};
1007
1008// Introduced in DomainLevel4
1009pub static ref SCHEMA_CLASS_OAUTH2_RS_PUBLIC_DL4: SchemaClass = SchemaClass {
1010    uuid: UUID_SCHEMA_CLASS_OAUTH2_RS_PUBLIC,
1011    name: EntryClass::OAuth2ResourceServerPublic.into(),
1012    description: "The class representing a configured Public OAuth2 Client with PKCE verification".to_string(),
1013
1014    systemmay: vec![Attribute::OAuth2AllowLocalhostRedirect],
1015    systemexcludes: vec![EntryClass::OAuth2ResourceServerBasic.into()],
1016    ..Default::default()
1017};
1018
1019// =========================================
1020// KeyProviders
1021
1022pub static ref SCHEMA_CLASS_KEY_PROVIDER_DL6: SchemaClass = SchemaClass {
1023    uuid: UUID_SCHEMA_CLASS_KEY_PROVIDER,
1024    name: EntryClass::KeyProvider.into(),
1025    description: "A provider for cryptographic key storage and operations".to_string(),
1026    systemmay: vec![
1027        Attribute::Description,
1028    ],
1029    systemmust: vec![
1030        Attribute::Name,
1031    ],
1032    systemsupplements: vec![
1033        EntryClass::KeyProviderInternal.into(),
1034    ],
1035    ..Default::default()
1036};
1037
1038pub static ref SCHEMA_CLASS_KEY_PROVIDER_INTERNAL_DL6: SchemaClass = SchemaClass {
1039    uuid: UUID_SCHEMA_CLASS_KEY_PROVIDER_INTERNAL,
1040    name: EntryClass::KeyProviderInternal.into(),
1041    description: "The Kanidm internal cryptographic key provider".to_string(),
1042    ..Default::default()
1043};
1044
1045// =========================================
1046// KeyObjects
1047
1048pub static ref SCHEMA_CLASS_KEY_OBJECT_DL6: SchemaClass = SchemaClass {
1049    uuid: UUID_SCHEMA_CLASS_KEY_OBJECT,
1050    name: EntryClass::KeyObject.into(),
1051    description: "A cryptographic key object that can be used by a provider".to_string(),
1052    systemmust: vec![
1053        Attribute::KeyProvider,
1054    ],
1055    ..Default::default()
1056};
1057
1058pub static ref SCHEMA_CLASS_KEY_OBJECT_JWT_ES256_DL6: SchemaClass = SchemaClass {
1059    uuid: UUID_SCHEMA_CLASS_KEY_OBJECT_JWT_ES256,
1060    name: EntryClass::KeyObjectJwtEs256.into(),
1061    description: "A marker class indicating that this keyobject must provide jwt es256 capability.".to_string(),
1062    systemsupplements: vec![
1063        EntryClass::KeyObject.into(),
1064    ],
1065    ..Default::default()
1066};
1067
1068pub static ref SCHEMA_CLASS_KEY_OBJECT_JWT_RS256: SchemaClass = SchemaClass {
1069    uuid: UUID_SCHEMA_CLASS_KEY_OBJECT_JWT_RS256,
1070    name: EntryClass::KeyObjectJwtRs256.into(),
1071    description: "A marker class indicating that this keyobject must provide jwt rs256 capability.".to_string(),
1072    systemsupplements: vec![
1073        EntryClass::KeyObject.into(),
1074    ],
1075    ..Default::default()
1076};
1077
1078pub static ref SCHEMA_CLASS_KEY_OBJECT_JWE_A128GCM_DL6: SchemaClass = SchemaClass {
1079    uuid: UUID_SCHEMA_CLASS_KEY_OBJECT_JWE_A128GCM,
1080    name: EntryClass::KeyObjectJweA128GCM.into(),
1081    description: "A marker class indicating that this keyobject must provide jwe aes-256-gcm capability.".to_string(),
1082    systemsupplements: vec![
1083        EntryClass::KeyObject.into(),
1084    ],
1085    ..Default::default()
1086};
1087
1088pub static ref SCHEMA_CLASS_KEY_OBJECT_INTERNAL_DL6: SchemaClass = SchemaClass {
1089    uuid: UUID_SCHEMA_CLASS_KEY_OBJECT_INTERNAL,
1090    name: EntryClass::KeyObjectInternal.into(),
1091    description: "A cryptographic key object that can be used by the internal provider".to_string(),
1092    systemmay: vec![
1093        Attribute::KeyInternalData,
1094    ],
1095    systemsupplements: vec![
1096        EntryClass::KeyObject.into(),
1097    ],
1098    ..Default::default()
1099};
1100
1101// =========================================
1102
1103pub static ref SCHEMA_CLASS_CLIENT_CERTIFICATE_DL7: SchemaClass = SchemaClass {
1104    uuid: UUID_SCHEMA_CLASS_CLIENT_CERTIFICATE,
1105    name: EntryClass::ClientCertificate.into(),
1106    description: "A client authentication certificate".to_string(),
1107    systemmay: vec![],
1108    systemmust: vec![
1109        Attribute::Certificate,
1110        Attribute::Refers,
1111    ],
1112    ..Default::default()
1113};
1114
1115pub static ref SCHEMA_CLASS_APPLICATION: SchemaClass = SchemaClass {
1116    uuid: UUID_SCHEMA_CLASS_APPLICATION,
1117    name: EntryClass::Application.into(),
1118
1119    description: "The class representing an application".to_string(),
1120    systemmust: vec![Attribute::LinkedGroup],
1121    systemmay: vec![
1122        Attribute::ApplicationUrl,
1123    ],
1124    // I think this could change before release - I can see a world
1125    // whe we may want an oauth2 application to have application passwords,
1126    // or for this to be it's own thing. But service accounts also don't
1127    // quite do enough, they have api tokens, but that's all we kind
1128    // of want from them?
1129    systemsupplements: vec![EntryClass::ServiceAccount.into()],
1130    ..Default::default()
1131};
1132
1133);