1use std::fmt::Display;
2use inflector::Inflector;
3
4#[remain::sorted]
8#[derive(
9 AsRefStr,
10 Copy,
11 Clone,
12 Eq,
13 PartialEq,
14 EnumString,
15 EnumIter,
16 Debug,
17 Ord,
18 PartialOrd,
19 Hash,
20 Serialize,
21 Deserialize,
22)]
23#[strum(serialize_all = "camelCase")]
24#[derive(Default)]
25#[non_exhaustive]
26pub enum ResourceIdentity {
27 AccessPackageAssignmentApprovals,
28 AccessPackages,
29 AccessReviews,
30 AccessReviewsDefinitions,
31 AccessReviewsDefinitionsInstances,
32 AccessReviewsDefinitionsInstancesStages,
33 Activities,
34 Admin,
35 AdministrativeUnits,
36 AgreementAcceptances,
37 Agreements,
38 AllChannels,
39 AndroidManagedAppProtections,
40 AppCatalogs,
41 AppConsent,
42 Application,
43 Applications,
44 ApplicationTemplates,
45 Appointments,
46 AppRoleAssignments,
47 AssignmentPolicies,
48 AssignmentRequests,
49 Assignments,
50 AuditLogs,
51 Authentication,
52 AuthenticationMethodConfigurations,
53 AuthenticationMethodsPolicy,
54 Batch, BookingBusinesses,
56 Branding,
57 Buckets,
58 CalendarGroups,
59 Calendars,
60 CalendarView,
61 CallRecords,
62 CallRecordsSessions,
63 Calls,
64 CertificateBasedAuthConfiguration,
65 Channels,
66 Chats,
67 ChatsAndChannelsMessages,
68 ChatsMessages,
69 ChatsMessagesReplies,
70 ChildFolders,
71 Communications,
72 Compliance,
73 ConnectedOrganizations,
74 ConnectedOrganizationsExternalSponsors,
75 ConnectedOrganizationsInternalSponsors,
76 Connections,
77 ContactFolders,
78 Contacts,
79 ContentTypes,
80 Contracts,
81 Conversations,
82 CreatedByUser,
83 CreatedObjects,
84 Custom,
85 Customers,
86 CustomQuestions,
87 DataPolicyOperations,
88 DefaultCalendar,
89 DefaultManagedAppProtections,
90 DeletedItems,
91 DeletedTeams,
92 DeviceAppManagement,
93 DeviceCompliancePolicies,
94 DeviceCompliancePolicySettingStateSummaries,
95 DeviceConfigurations,
96 DeviceEnrollmentConfigurations,
97 DeviceManagement,
98 DeviceManagementManagedDevices,
99 DeviceManagementReports,
100 Devices,
101 DevicesRegisteredOwners,
102 DevicesRegisteredUsers,
103 Directory,
104 DirectoryMembers,
105 DirectoryObjects,
106 DirectoryRoles,
107 DirectoryRoleTemplates,
108 DirectReports,
109 DomainDnsRecords,
110 Domains,
111 Drive,
112 Drives,
113 DrivesItems,
114 DrivesList,
115 DrivesListContentTypes,
116 Education,
117 EducationAssignments,
118 EducationAssignmentsSubmissions,
119 EducationClasses,
120 EducationMe,
121 EducationSchools,
122 EducationUsers,
123 EntitlementManagement,
124 EntitlementManagementAssignments,
125 EntitlementManagementCatalogs,
126 Events,
127 EventsInstances,
128 ExtendedProperties,
129 Extensions,
130 External,
131 FollowedSites,
132 GroupLifecyclePolicies,
133 GroupSettings,
134 GroupSettingTemplates,
135 Groups,
136 GroupsOwners,
137 GroupsTeam,
138 HistoryItems,
139 Identity,
140 IdentityGovernance,
141 IdentityProtection,
142 IdentityProviders,
143 IncomingChannels,
144 InferenceClassification,
145 InformationProtection,
146 Insights,
147 Invitations,
148 IosManagedAppProtections,
149 JoinedTeams,
150 LastModifiedByUser,
151 LicenseDetails,
152 List,
153 Localizations,
154 MailboxSettings,
155 MailFolders,
156 ManagedAppPolicies,
157 ManagedAppRegistrations,
158 ManagedAppRegistrationsAppliedPolicies,
159 ManagedAppRegistrationsIntendedPolicies,
160 ManagedAppStatuses,
161 ManagedEBooks,
162 ManagedEBooksDeviceStates,
163 ManagedEBooksUserStateSummary,
164 MdmWindowsInformationProtectionPolicies,
165 #[default]
166 Me,
167 MemberOf,
168 MembersWithLicenseErrors,
169 MobileAppCategories,
170 MobileAppConfigurations,
171 MobileApps,
172 Oauth2PermissionGrants,
173 Onenote,
174 OnenoteNotebooks,
175 OnenotePages,
176 OnenoteSectionGroups,
177 OnenoteSections,
178 OnlineMeetings,
179 Organization,
180 OrgContacts,
181 Outlook,
182 OwnedDevices,
183 OwnedObjects,
184 ParentNotebook,
185 ParentSection,
186 ParentSectionGroup,
187 People,
188 PermissionGrants,
189 Photos,
190 Places,
191 Planner,
192 PlannerTasks,
193 Plans,
194 Policies,
195 Presence,
196 PrimaryChannel,
197 Print,
198 Privacy,
199 RegisteredDevices,
200 Reports,
201 RoleDefinitions,
202 RoleManagement,
203 Schedule,
204 SchemaExtensions,
205 ScopedRoleMemberOf,
206 ScopedRoleMemberships,
207 Search,
208 Security,
209 ServicePrincipals,
210 ServicePrincipalsOwners,
211 Services,
212 Settings,
213 SharedWithTeams,
214 Shares,
215 Sites,
216 SitesContentTypes,
217 SitesItems,
218 SitesItemsVersions,
219 SitesLists,
220 Solutions,
221 StaffMembers,
222 SubscribedSkus,
223 Subscriptions,
224 Tabs,
225 TargetedManagedAppConfigurations,
226 Tasks,
227 Teams,
228 TeamsMembers,
229 TeamsPrimaryChannelTabs,
230 TeamsTags,
231 TeamsTemplates,
232 Teamwork,
233 TermStore,
234 TermStoreGroups,
235 TermStoreSets,
236 TermStoreSetsChildren,
237 TermStoreSetsParentGroup,
238 TermStoreSetsRelations,
239 TermStoreSetsTerms,
240 TermStores,
241 TermsAndConditions,
242 Threads,
243 ThreadsPosts,
244 Todo,
245 TodoLists,
246 TodoListsTasks,
247 TransitiveMemberOf,
248 TransitiveMembers,
249 TroubleshootingEvents,
250 Users,
251 UsersAttachments,
252 UsersManagedDevices,
253 UsersMessages,
254 VirtualEvents,
255 VirtualEventsEvents,
256 VirtualEventsSessions,
257 VirtualEventsWebinars,
258 VppTokens,
259 WindowsAutopilotDeviceIdentities,
260 WindowsInformationProtectionPolicies,
261 Workbook,
262 WorkbookFunctions,
263 WorkbookTables,
264 WorkbookTablesColumns,
265 WorkbookTablesRows,
266 Worksheets,
267 WorksheetsCharts,
268 WorksheetsChartsAxes,
269 WorksheetsChartsAxesCategoryAxis,
270 WorksheetsChartsAxesSeriesAxis,
271 WorksheetsChartsAxesValueAxis,
272 WorksheetsChartsDataLabels,
273 WorksheetsChartsFormat,
274 WorksheetsChartsLegend,
275 WorksheetsChartsSeries,
276 WorksheetsChartsTitle,
277}
278
279impl Display for ResourceIdentity {
280 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
281 let str = match self {
282 ResourceIdentity::AccessPackages => "accessPackages".to_string(),
283 ResourceIdentity::AccessReviewsDefinitions => "definitions".to_string(),
284 ResourceIdentity::AccessReviewsDefinitionsInstances => "instances".to_string(),
285 ResourceIdentity::AccessReviewsDefinitionsInstancesStages => "stages".to_string(),
286 ResourceIdentity::DeviceManagementManagedDevices
287 | ResourceIdentity::UsersManagedDevices => "managedDevices".to_string(),
288 ResourceIdentity::DeviceManagementReports => "reports".into(),
289 ResourceIdentity::EntitlementManagementAssignments => "assignments".to_string(),
290 ResourceIdentity::EntitlementManagementCatalogs => "catalogs".to_string(),
291 ResourceIdentity::PrimaryChannel => "primaryChannel".to_string(),
292 ResourceIdentity::TeamsTags => "tags".to_string(),
293 ResourceIdentity::DirectoryMembers | ResourceIdentity::TeamsMembers => {
294 "members".to_string()
295 }
296 ResourceIdentity::SharedWithTeams => "sharedWithTeams".to_string(),
297 ResourceIdentity::DrivesList => "list".to_string(),
298 ResourceIdentity::DrivesItems | ResourceIdentity::SitesItems => "items".to_string(),
299 ResourceIdentity::SitesItemsVersions => "versions".to_string(),
300 ResourceIdentity::SitesLists => "lists".to_string(),
301 ResourceIdentity::DrivesListContentTypes | ResourceIdentity::SitesContentTypes => {
302 "contentTypes".to_string()
303 }
304 ResourceIdentity::Conversations => "conversations".into(),
305 ResourceIdentity::GroupsOwners | ResourceIdentity::ServicePrincipalsOwners => {
306 "owners".into()
307 }
308 ResourceIdentity::GroupsTeam => "team".into(),
309 ResourceIdentity::ThreadsPosts => "posts".into(),
310 ResourceIdentity::Threads => "threads".into(),
311 ResourceIdentity::Activities => "activities".to_string(),
312 ResourceIdentity::AgreementAcceptances => "agreementAcceptances".to_string(),
313 ResourceIdentity::AppRoleAssignments => "appRoleAssignments".to_string(),
314 ResourceIdentity::Authentication => "authentication".to_string(),
315 ResourceIdentity::DefaultCalendar => "calendar".to_string(),
316 ResourceIdentity::CalendarGroups => "calendarGroups".to_string(),
317 ResourceIdentity::CalendarView => "calendarView".to_string(),
318 ResourceIdentity::Calendars => "calendars".to_string(),
319 ResourceIdentity::Chats => "chats".to_string(),
320 ResourceIdentity::ChatsMessages => "messages".to_string(),
321 ResourceIdentity::ChatsMessagesReplies => "replies".to_string(),
322 ResourceIdentity::ContactFolders => "contactFolders".to_string(),
323 ResourceIdentity::Contacts => "contacts".to_string(),
324 ResourceIdentity::CreatedObjects => "createdObjects".to_string(),
325 ResourceIdentity::DirectReports => "directReports".to_string(),
326 ResourceIdentity::Drives => "drives".to_string(),
327 ResourceIdentity::Events => "events".to_string(),
328 ResourceIdentity::Extensions => "extensions".to_string(),
329 ResourceIdentity::FollowedSites => "followedSites".to_string(),
330 ResourceIdentity::InferenceClassification => "inferenceClassification".to_string(),
331 ResourceIdentity::Insights => "insights".to_string(),
332 ResourceIdentity::JoinedTeams => "joinedTeams".to_string(),
333 ResourceIdentity::LicenseDetails => "licenseDetails".to_string(),
334 ResourceIdentity::MailFolders => "mailFolders".to_string(),
335 ResourceIdentity::ManagedAppRegistrations => "managedAppRegistrations".to_string(),
336 ResourceIdentity::ManagedAppRegistrationsAppliedPolicies => {
337 "appliedPolicies".to_string()
338 }
339 ResourceIdentity::ManagedAppRegistrationsIntendedPolicies => {
340 "intendedPolicies".to_string()
341 }
342 ResourceIdentity::ManagedEBooksDeviceStates => "deviceStates".to_string(),
343 ResourceIdentity::ManagedEBooksUserStateSummary => "userStateSummary".to_string(),
344 ResourceIdentity::MemberOf => "memberOf".to_string(),
345 ResourceIdentity::Oauth2PermissionGrants => "oauth2PermissionGrants".to_string(),
346 ResourceIdentity::Onenote => "onenote".to_string(),
347 ResourceIdentity::OnlineMeetings => "onlineMeetings".to_string(),
348 ResourceIdentity::Outlook => "outlook".to_string(),
349 ResourceIdentity::OwnedDevices => "ownedDevices".to_string(),
350 ResourceIdentity::OwnedObjects => "ownedObjects".to_string(),
351 ResourceIdentity::People => "people".to_string(),
352 ResourceIdentity::Photos => "photos".to_string(),
353 ResourceIdentity::Planner => "planner".to_string(),
354 ResourceIdentity::Presence => "presence".to_string(),
355 ResourceIdentity::RegisteredDevices => "registeredDevices".to_string(),
356 ResourceIdentity::ScopedRoleMemberOf => "scopedRoleMemberOf".to_string(),
357 ResourceIdentity::Teamwork => "teamwork".to_string(),
358 ResourceIdentity::Todo => "todo".to_string(),
359 ResourceIdentity::TransitiveMemberOf => "transitiveMemberOf".to_string(),
360
361 ResourceIdentity::ConnectedOrganizationsExternalSponsors => {
362 "externalSponsors".to_string()
363 }
364 ResourceIdentity::ConnectedOrganizationsInternalSponsors => {
365 "internalSponsors".to_string()
366 }
367 ResourceIdentity::CallRecordsSessions => "sessions".to_string(),
368 ResourceIdentity::EducationAssignmentsSubmissions => "submissions".to_string(),
369 ResourceIdentity::EducationAssignments => "assignments".to_string(),
370 ResourceIdentity::EducationClasses => "classes".to_string(),
371 ResourceIdentity::EducationMe => "me".to_string(),
372 ResourceIdentity::EducationUsers => "users".to_string(),
373 ResourceIdentity::EducationSchools => "schools".to_string(),
374 ResourceIdentity::TodoLists => "lists".to_string(),
375 ResourceIdentity::TodoListsTasks => "tasks".to_string(),
376 ResourceIdentity::UsersMessages => "messages".into(),
377 ResourceIdentity::UsersAttachments => "attachments".into(),
378 ResourceIdentity::EventsInstances => "instances".into(),
379 ResourceIdentity::PlannerTasks => "tasks".into(),
380 ResourceIdentity::OnenoteSections => "sections".into(),
381 ResourceIdentity::OnenoteSectionGroups => "sectionGroups".into(),
382 ResourceIdentity::OnenoteNotebooks => "notebooks".into(),
383 ResourceIdentity::OnenotePages => "pages".into(),
384 ResourceIdentity::TermStoreSets => "sets".into(),
385 ResourceIdentity::TermStoreGroups => "groups".into(),
386 ResourceIdentity::TermStoreSetsChildren => "children".into(),
387 ResourceIdentity::TermStoreSetsParentGroup => "parentGroup".into(),
388 ResourceIdentity::TermStoreSetsRelations => "relations".into(),
389 ResourceIdentity::TermStoreSetsTerms => "terms".into(),
390 ResourceIdentity::VirtualEvents => "virtualEvents".into(),
391 ResourceIdentity::VirtualEventsEvents => "events".into(),
392 ResourceIdentity::VirtualEventsSessions => "sessions".into(),
393 ResourceIdentity::VirtualEventsWebinars => "webinars".into(),
394 ResourceIdentity::WorkbookFunctions => "functions".into(),
395 ResourceIdentity::WorkbookTables => "tables".into(),
396 ResourceIdentity::WorkbookTablesColumns => "columns".into(),
397 ResourceIdentity::WorkbookTablesRows => "rows".into(),
398 ResourceIdentity::WorksheetsCharts => "charts".into(),
399 ResourceIdentity::WorksheetsChartsAxes => "axes".into(),
400 ResourceIdentity::WorksheetsChartsLegend => "legend".into(),
401 ResourceIdentity::WorksheetsChartsSeries => "series".into(),
402 ResourceIdentity::WorksheetsChartsFormat => "format".into(),
403 ResourceIdentity::WorksheetsChartsTitle => "title".into(),
404 ResourceIdentity::WorksheetsChartsDataLabels => "dataLabels".into(),
405 ResourceIdentity::WorksheetsChartsAxesCategoryAxis => "categoryAxis".into(),
406 ResourceIdentity::WorksheetsChartsAxesSeriesAxis => "seriesAxis".into(),
407 ResourceIdentity::WorksheetsChartsAxesValueAxis => "valueAxis".into(),
408 ResourceIdentity::DevicesRegisteredOwners => "registeredOwners".into(),
409 ResourceIdentity::DevicesRegisteredUsers => "registeredUsers".into(),
410 ResourceIdentity::Custom => "".into(),
411
412 _ => self.as_ref().to_camel_case(),
413 };
414 write!(f, "{}", str)
415 }
416}
417
418impl ResourceIdentity {
419 pub fn enum_string(&self) -> String {
420 format!("ResourceIdentity::{self:#?}")
421 }
422
423 pub fn to_path_start(&self) -> String {
424 format!("/{}", self)
425 }
426
427 pub fn replace(&self, from: &str, to: &str) -> String {
428 self.as_ref().replace(from, to)
429 }
430
431 pub fn exact_camel_case(&self) -> String {
432 self.as_ref().to_camel_case()
433 }
434
435 pub fn exact_pascal_case(&self) -> String {
436 self.as_ref().to_pascal_case()
437 }
438
439 pub fn exact_snake_case(&self) -> String {
440 self.as_ref().to_snake_case()
441 }
442}
443
444#[derive(
447 AsRefStr,
448 Copy,
449 Clone,
450 Eq,
451 PartialEq,
452 EnumString,
453 EnumIter,
454 Debug,
455 Ord,
456 PartialOrd,
457 Hash,
458 Serialize,
459 Deserialize,
460)]
461#[strum(serialize_all = "camelCase")]
462#[derive(Default)]
463pub enum TopLevelResource {
464 Admin,
465 AgreementAcceptances,
466 Agreements,
467 AppCatalogs,
468 ApplicationTemplates,
469 Applications,
470 AuditLogs,
471 AuthenticationMethodConfigurations,
472 AuthenticationMethodsPolicy,
473 Branding,
474 CertificateBasedAuthConfiguration,
475 Chats,
476 Communications,
477 Compliance,
478 Connections,
479 Contacts,
480 Contracts,
481 DataPolicyOperations,
482 DeviceAppManagement,
483 DeviceManagement,
484 Devices,
485 Directory,
486 DirectoryObjects,
487 DirectoryRoleTemplates,
488 DirectoryRoles,
489 DomainDnsRecords,
490 Domains,
491 Drive,
492 Drives,
493 Education,
494 External,
495 GroupLifecyclePolicies,
496 GroupSettingTemplates,
497 GroupSettings,
498 Groups,
499 Identity,
500 IdentityGovernance,
501 IdentityProtection,
502 IdentityProviders,
503 InformationProtection,
504 Invitations,
505 Localizations,
506 #[default]
507 Me,
508 Oauth2PermissionGrants,
509 Organization,
510 PermissionGrants,
511 Places,
512 Planner,
513 Policies,
514 Print,
515 Privacy,
516 Reports,
517 RoleManagement,
518 SchemaExtensions,
519 ScopedRoleMemberships,
520 Search,
521 Security,
522 ServicePrincipals,
523 Shares,
524 Sites,
525 Solutions,
526 SubscribedSkus,
527 Subscriptions,
528 Teams,
529 TeamsTemplates,
530 Teamwork,
531 Users,
532}
533
534impl Display for TopLevelResource {
535 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
536 write!(f, "{}", self.as_ref().to_camel_case())
537 }
538}