Office365-REST-Python-Client 2.5.14__py3-none-any.whl → 2.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. {Office365_REST_Python_Client-2.5.14.dist-info → Office365_REST_Python_Client-2.6.0.dist-info}/METADATA +2 -2
  2. {Office365_REST_Python_Client-2.5.14.dist-info → Office365_REST_Python_Client-2.6.0.dist-info}/RECORD +210 -112
  3. office365/admin/__init__.py +0 -0
  4. office365/admin/admin.py +69 -0
  5. office365/admin/microsoft365_apps.py +5 -0
  6. office365/admin/people_settings.py +5 -0
  7. office365/admin/report_settings.py +5 -0
  8. office365/{onedrive → admin}/sharepoint.py +1 -1
  9. office365/azure_env.py +60 -0
  10. office365/directory/applications/app_ids.py +6 -0
  11. office365/directory/authentication/authentication.py +16 -0
  12. office365/directory/authentication/method_target.py +2 -1
  13. office365/directory/authentication/methods/microsoft_authenticator.py +6 -0
  14. office365/directory/authentication/methods/root.py +11 -0
  15. office365/directory/authentication/methods/sms.py +9 -0
  16. office365/directory/certificates/self_signed.py +31 -2
  17. office365/directory/identities/conditional_access_root.py +14 -0
  18. office365/directory/identitygovernance/privilegedaccess/approval.py +8 -0
  19. office365/directory/identitygovernance/privilegedaccess/group.py +30 -0
  20. office365/directory/identitygovernance/privilegedaccess/group_assignment_schedule_instance.py +7 -0
  21. office365/directory/identitygovernance/privilegedaccess/unified_role_assignment_schedule_request.py +7 -0
  22. office365/directory/identitygovernance/userconsent/request_collection.py +10 -0
  23. office365/directory/identitygovernance/workflow/__init__.py +0 -0
  24. office365/directory/identitygovernance/workflow/base.py +5 -0
  25. office365/directory/policies/cross_tenant_access.py +13 -0
  26. office365/directory/policies/feature_rollout.py +16 -0
  27. office365/directory/policies/root.py +39 -23
  28. office365/directory/policies/template.py +5 -0
  29. office365/directory/protection/threatassessment/email_file_request.py +20 -0
  30. office365/directory/protection/threatassessment/request.py +25 -0
  31. office365/directory/rolemanagement/application.py +15 -0
  32. office365/directory/rolemanagement/resource_action.py +8 -4
  33. office365/directory/rolemanagement/role_permission.py +3 -3
  34. office365/directory/security/alerts/collection.py +49 -0
  35. office365/directory/security/scorecontrol/__init__.py +0 -0
  36. office365/directory/security/scorecontrol/profile.py +6 -0
  37. office365/directory/security/security.py +17 -4
  38. office365/directory/serviceprincipals/service_principal.py +36 -28
  39. office365/directory/tenantinformation/__init__.py +0 -0
  40. office365/directory/tenantinformation/multi_organization.py +11 -0
  41. office365/directory/tenantinformation/relationship.py +61 -0
  42. office365/directory/users/insights_settings.py +5 -0
  43. office365/graph_client.py +52 -132
  44. office365/graph_request.py +78 -19
  45. office365/intune/servicecommunications/health/health.py +1 -1
  46. office365/intune/servicecommunications/issues/issue.py +2 -2
  47. office365/onedrive/columns/definition.py +1 -1
  48. office365/onedrive/contenttypes/content_type.py +1 -1
  49. office365/onedrive/driveitems/driveItem.py +13 -1
  50. office365/onedrive/drives/drive.py +1 -1
  51. office365/onedrive/filestorage/__init__.py +0 -0
  52. office365/onedrive/filestorage/container.py +7 -0
  53. office365/onedrive/filestorage/file_storage.py +20 -0
  54. office365/onedrive/listitems/field_value_set.py +1 -1
  55. office365/onedrive/listitems/list_item.py +1 -1
  56. office365/onedrive/lists/list.py +1 -1
  57. office365/onedrive/recyclebin/__init__.py +0 -0
  58. office365/onedrive/recyclebin/item.py +6 -0
  59. office365/onedrive/recyclebin/recyclebin.py +29 -0
  60. office365/onedrive/recyclebin/settings.py +13 -0
  61. office365/onedrive/shares/drive_item.py +1 -1
  62. office365/onedrive/sitepages/base.py +1 -1
  63. office365/onedrive/sitepages/canvas_layout.py +2 -2
  64. office365/onedrive/sitepages/sections/__init__.py +0 -0
  65. office365/onedrive/sitepages/{horizontal_section.py → sections/horizontal.py} +1 -1
  66. office365/onedrive/sitepages/webparts/data.py +5 -0
  67. office365/onedrive/sitepages/webparts/position.py +5 -0
  68. office365/onedrive/sitepages/webparts/standard.py +9 -0
  69. office365/onedrive/sitepages/webparts/web_part.py +12 -0
  70. office365/onedrive/sites/site.py +1 -1
  71. office365/onedrive/storage/storage.py +10 -0
  72. office365/onedrive/workbooks/charts/axes.py +41 -1
  73. office365/onedrive/workbooks/charts/axis.py +5 -0
  74. office365/onedrive/workbooks/charts/chart.py +64 -5
  75. office365/onedrive/workbooks/charts/fill.py +5 -0
  76. office365/onedrive/workbooks/charts/font.py +5 -0
  77. office365/onedrive/workbooks/charts/legend/__init__.py +0 -0
  78. office365/onedrive/workbooks/charts/legend/format.py +5 -0
  79. office365/onedrive/workbooks/charts/legend/legend.py +26 -0
  80. office365/onedrive/workbooks/charts/point.py +5 -0
  81. office365/onedrive/workbooks/charts/series/__init__.py +0 -0
  82. office365/onedrive/workbooks/charts/series/format.py +5 -0
  83. office365/onedrive/workbooks/charts/series/series.py +31 -0
  84. office365/onedrive/workbooks/charts/title.py +5 -0
  85. office365/onedrive/workbooks/filter.py +10 -0
  86. office365/onedrive/workbooks/filter_criteria.py +3 -3
  87. office365/onedrive/workbooks/ranges/fill.py +11 -1
  88. office365/onedrive/workbooks/ranges/range.py +26 -0
  89. office365/onedrive/workbooks/ranges/view.py +14 -0
  90. office365/onedrive/workbooks/sort_field.py +8 -3
  91. office365/onedrive/workbooks/tables/sort.py +20 -0
  92. office365/onedrive/workbooks/worksheets/worksheet.py +11 -0
  93. office365/partners/billing/azure_usage.py +17 -0
  94. office365/partners/billing/billed_usage.py +21 -0
  95. office365/partners/billing/billing.py +17 -0
  96. office365/partners/billing/operation.py +5 -0
  97. office365/partners/partners.py +17 -0
  98. office365/reports/root.py +9 -0
  99. office365/reports/userregistration/feature_summary.py +5 -0
  100. office365/runtime/auth/auth_cookies.py +48 -0
  101. office365/runtime/auth/authentication_context.py +36 -19
  102. office365/runtime/auth/entra/__init__.py +0 -0
  103. office365/runtime/auth/entra/authentication_context.py +165 -0
  104. office365/runtime/auth/providers/acs_token_provider.py +12 -27
  105. office365/runtime/auth/providers/saml_token_provider.py +41 -54
  106. office365/runtime/auth/sts_profile.py +8 -8
  107. office365/runtime/auth/token_response.py +4 -0
  108. office365/sharepoint/administration/custom_fonts_resource.py +5 -0
  109. office365/sharepoint/administration/sitemove/__init__.py +0 -0
  110. office365/sharepoint/administration/sitemove/service.py +68 -0
  111. office365/sharepoint/administration/sitemove/service_info.py +11 -0
  112. office365/sharepoint/changes/item.py +15 -0
  113. office365/sharepoint/client_context.py +61 -37
  114. office365/sharepoint/directory/group.py +2 -0
  115. office365/sharepoint/directory/helper.py +2 -0
  116. office365/sharepoint/directory/provider/provider.py +6 -0
  117. office365/sharepoint/directory/user.py +20 -0
  118. office365/sharepoint/files/publish/__init__.py +0 -0
  119. office365/sharepoint/files/publish/status.py +9 -0
  120. office365/sharepoint/flows/connector_result.py +17 -0
  121. office365/sharepoint/flows/permissions.py +11 -7
  122. office365/sharepoint/fontpackages/__init__.py +0 -0
  123. office365/sharepoint/fontpackages/collection.py +26 -0
  124. office365/sharepoint/fontpackages/creation_parameters.py +5 -0
  125. office365/sharepoint/fontpackages/font_package.py +5 -0
  126. office365/sharepoint/fontpackages/oob_settings.py +5 -0
  127. office365/sharepoint/forms/customization.py +26 -0
  128. office365/sharepoint/ir/__init__.py +0 -0
  129. office365/sharepoint/ir/migration.py +5 -0
  130. office365/sharepoint/lists/list.py +30 -0
  131. office365/sharepoint/marketplace/app_metadata.py +12 -1
  132. office365/sharepoint/marketplace/app_metadata_collection.py +8 -0
  133. office365/sharepoint/marketplace/corporatecuratedgallery/addins/instance_info.py +22 -0
  134. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_failed_info.py +5 -0
  135. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_info.py +12 -0
  136. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_response.py +15 -0
  137. office365/sharepoint/marketplace/corporatecuratedgallery/addins/principals_response.py +5 -0
  138. office365/sharepoint/marketplace/corporatecuratedgallery/app_request_information.py +9 -0
  139. office365/sharepoint/marketplace/corporatecuratedgallery/app_response_information.py +9 -0
  140. office365/sharepoint/marketplace/corporatecuratedgallery/available_addins_response.py +4 -0
  141. office365/sharepoint/marketplace/corporatecuratedgallery/card_design.py +9 -0
  142. office365/sharepoint/marketplace/corporatecuratedgallery/card_designs.py +9 -0
  143. office365/sharepoint/marketplace/corporatecuratedgallery/teams_package_download.py +14 -0
  144. office365/sharepoint/marketplace/tenant/appcatalog/accessor.py +62 -3
  145. office365/sharepoint/multigeo/services.py +14 -0
  146. office365/sharepoint/multigeo/storage_quota.py +9 -0
  147. office365/sharepoint/policy/license_utilities.py +27 -0
  148. office365/sharepoint/principal/principal.py +6 -0
  149. office365/sharepoint/request.py +95 -10
  150. office365/sharepoint/search/administration/document_crawl_log.py +16 -2
  151. office365/sharepoint/search/administration/tenant_crawl_versions_info_provider.py +1 -1
  152. office365/sharepoint/search/reports/abandoned_queries.py +11 -1
  153. office365/sharepoint/search/reports/abandonedqueries/item.py +7 -1
  154. office365/sharepoint/sharing/domain_restriction_settings.py +5 -0
  155. office365/sharepoint/sharing/information.py +12 -0
  156. office365/sharepoint/sitehealth/result.py +4 -4
  157. office365/sharepoint/sitehealth/summary.py +5 -5
  158. office365/sharepoint/sites/copy_job_progress.py +5 -0
  159. office365/sharepoint/sites/copy_migration_iInfo.py +5 -0
  160. office365/sharepoint/sites/home/__init__.py +0 -0
  161. office365/sharepoint/sites/{sph_site.py → home/site.py} +1 -1
  162. office365/sharepoint/sites/site.py +26 -1
  163. office365/sharepoint/tenant/administration/app_service_principal_public.py +17 -0
  164. office365/sharepoint/tenant/administration/audit/data.py +12 -0
  165. office365/sharepoint/tenant/administration/audit/unified_record.py +18 -0
  166. office365/sharepoint/tenant/administration/coms/__init__.py +0 -0
  167. office365/sharepoint/tenant/administration/coms/messages_fields_data.py +5 -0
  168. office365/sharepoint/tenant/administration/coms/messages_service_proxy.py +16 -0
  169. office365/sharepoint/tenant/administration/copilot/__init__.py +0 -0
  170. office365/sharepoint/tenant/administration/copilot/adaptive_card_config.py +11 -0
  171. office365/sharepoint/tenant/administration/datagovernance/__init__.py +0 -0
  172. office365/sharepoint/tenant/administration/datagovernance/client_base.py +9 -0
  173. office365/sharepoint/tenant/administration/datagovernance/insight_client.py +82 -0
  174. office365/sharepoint/tenant/administration/datagovernance/insight_metadata.py +5 -0
  175. office365/sharepoint/tenant/administration/default_time_zone_id.py +11 -0
  176. office365/sharepoint/tenant/administration/endpoints.py +53 -2
  177. office365/sharepoint/tenant/administration/insights/onedrive_site_sharing.py +4 -0
  178. office365/sharepoint/tenant/administration/internal/appservice/permission_request.py +4 -0
  179. office365/sharepoint/tenant/administration/malware/__init__.py +0 -0
  180. office365/sharepoint/tenant/administration/malware/file.py +18 -0
  181. office365/sharepoint/tenant/administration/modified_property.py +5 -0
  182. office365/sharepoint/tenant/administration/policies/content_security_configuration.py +9 -0
  183. office365/sharepoint/tenant/administration/recent_action.py +9 -0
  184. office365/sharepoint/tenant/administration/reports/__init__.py +0 -0
  185. office365/sharepoint/tenant/administration/settings_service.py +38 -5
  186. office365/sharepoint/tenant/administration/sites/properties.py +78 -0
  187. office365/sharepoint/tenant/administration/sites/properties_collection.py +19 -0
  188. office365/sharepoint/tenant/administration/tenant.py +134 -7
  189. office365/sharepoint/tenant/administration/types.py +76 -1
  190. office365/sharepoint/tenant/insights/report_manager.py +29 -0
  191. office365/sharepoint/tenant/management/office365_tenant.py +7 -4
  192. office365/sharepoint/translation/job_status.py +22 -0
  193. office365/sharepoint/userprofiles/user_profile.py +6 -0
  194. office365/sharepoint/webparts/tile_data.py +21 -0
  195. office365/sharepoint/webs/dataleakage_prevention_status_info.py +5 -0
  196. office365/sharepoint/webs/web.py +80 -1
  197. office365/teams/chats/event_message_detail.py +8 -0
  198. office365/teams/deleted.py +24 -0
  199. office365/teams/work.py +35 -0
  200. office365/directory/tenant_relationship.py +0 -23
  201. office365/onedrive/admin.py +0 -32
  202. office365/onedrive/workbooks/charts/legend.py +0 -7
  203. office365/onedrive/workbooks/charts/series.py +0 -5
  204. {Office365_REST_Python_Client-2.5.14.dist-info → Office365_REST_Python_Client-2.6.0.dist-info}/LICENSE +0 -0
  205. {Office365_REST_Python_Client-2.5.14.dist-info → Office365_REST_Python_Client-2.6.0.dist-info}/WHEEL +0 -0
  206. {Office365_REST_Python_Client-2.5.14.dist-info → Office365_REST_Python_Client-2.6.0.dist-info}/top_level.txt +0 -0
  207. /office365/{onedrive → admin}/sharepoint_settings.py +0 -0
  208. /office365/directory/{tenant_information.py → tenantinformation/information.py} +0 -0
  209. /office365/{base_item.py → onedrive/base_item.py} +0 -0
  210. /office365/onedrive/sitepages/{horizontal_section_column.py → sections/horizontal_column.py} +0 -0
  211. /office365/onedrive/sitepages/{vertical_section.py → sections/vertical.py} +0 -0
  212. /office365/sharepoint/sites/{home_sites_details.py → home/details.py} +0 -0
  213. /office365/sharepoint/sites/{home_site_reference.py → home/reference.py} +0 -0
  214. /office365/sharepoint/tenant/administration/{app_billing_properties.py → policies/app_billing_properties.py} +0 -0
File without changes
@@ -0,0 +1,69 @@
1
+ from office365.admin.microsoft365_apps import AdminMicrosoft365Apps
2
+ from office365.admin.people_settings import PeopleAdminSettings
3
+ from office365.admin.report_settings import AdminReportSettings
4
+ from office365.admin.sharepoint import Sharepoint
5
+ from office365.entity import Entity
6
+ from office365.intune.servicecommunications.announcement import ServiceAnnouncement
7
+ from office365.runtime.paths.resource_path import ResourcePath
8
+
9
+
10
+ class Admin(Entity):
11
+ """Entity that acts as a container for administrator functionality."""
12
+
13
+ @property
14
+ def microsoft365_apps(self):
15
+ """A container for the Microsoft 365 apps admin functionality."""
16
+ return self.properties.get(
17
+ "microsoft365Apps",
18
+ AdminMicrosoft365Apps(
19
+ self.context, ResourcePath("microsoft365Apps", self.resource_path)
20
+ ),
21
+ )
22
+
23
+ @property
24
+ def sharepoint(self):
25
+ """A container for administrative resources to manage tenant-level settings for SharePoint and OneDrive."""
26
+ return self.properties.get(
27
+ "sharepoint",
28
+ Sharepoint(self.context, ResourcePath("sharepoint", self.resource_path)),
29
+ )
30
+
31
+ @property
32
+ def service_announcement(self):
33
+ """A container for service communications resources. Read-only."""
34
+ return self.properties.get(
35
+ "serviceAnnouncement",
36
+ ServiceAnnouncement(
37
+ self.context, ResourcePath("serviceAnnouncement", self.resource_path)
38
+ ),
39
+ )
40
+
41
+ @property
42
+ def report_settings(self):
43
+ """A container for administrative resources to manage reports."""
44
+ return self.properties.get(
45
+ "reportSettings",
46
+ AdminReportSettings(
47
+ self.context, ResourcePath("reportSettings", self.resource_path)
48
+ ),
49
+ )
50
+
51
+ @property
52
+ def people(self):
53
+ """Represents a setting to control people-related admin settings in the tenant."""
54
+ return self.properties.get(
55
+ "people",
56
+ PeopleAdminSettings(
57
+ self.context, ResourcePath("people", self.resource_path)
58
+ ),
59
+ )
60
+
61
+ def get_property(self, name, default_value=None):
62
+ if default_value is None:
63
+ property_mapping = {
64
+ "microsoft365Apps": self.microsoft365_apps,
65
+ "serviceAnnouncement": self.service_announcement,
66
+ "reportSettings": self.report_settings,
67
+ }
68
+ default_value = property_mapping.get(name, None)
69
+ return super(Admin, self).get_property(name, default_value)
@@ -0,0 +1,5 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class AdminMicrosoft365Apps(Entity):
5
+ """Represents an entity that acts as a container for administrator functionality for Microsoft 365 applications."""
@@ -0,0 +1,5 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class PeopleAdminSettings(Entity):
5
+ """Represents a setting to control people-related admin settings in the tenant."""
@@ -0,0 +1,5 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class AdminReportSettings(Entity):
5
+ """Represents the tenant-level settings for Microsoft 365 reports."""
@@ -1,5 +1,5 @@
1
+ from office365.admin.sharepoint_settings import SharepointSettings
1
2
  from office365.entity import Entity
2
- from office365.onedrive.sharepoint_settings import SharepointSettings
3
3
  from office365.runtime.paths.resource_path import ResourcePath
4
4
 
5
5
 
office365/azure_env.py ADDED
@@ -0,0 +1,60 @@
1
+ class AzureEnvironment(object):
2
+
3
+ Global = "Global"
4
+ """Referred to as Azure or Azure Global."""
5
+
6
+ USGovernment = "GCC"
7
+ """Government Community Cloud"""
8
+
9
+ USGovernmentHigh = "GCC High"
10
+ """Government Community Cloud High."""
11
+
12
+ China = "CN"
13
+ """Operated by 21Vianet under Chinese regulations."""
14
+
15
+ Germany = "Azure DE"
16
+ """Legacy; for data sovereignty in Germany."""
17
+
18
+ USGovernmentDoD = "DoD"
19
+ """Azure for U.S. Department of Defense (DoD)"""
20
+
21
+ _authority_endpoints = {
22
+ Global: {
23
+ "graph": "https://graph.microsoft.com",
24
+ "login": "https://login.microsoftonline.com",
25
+ },
26
+ USGovernment: {
27
+ "graph": "https://graph.microsoft.com",
28
+ "login": "https://login.microsoftonline.com",
29
+ },
30
+ USGovernmentHigh: {
31
+ "graph": "https://graph.microsoft.us",
32
+ "login": "https://login.microsoftonline.us",
33
+ },
34
+ USGovernmentDoD: {
35
+ "graph": "https://dod-graph.microsoft.us",
36
+ "login": "https://login.microsoftonline.us",
37
+ },
38
+ Germany: {
39
+ "graph": "https://graph.microsoft.de",
40
+ "login": "https://login.microsoftonline.de",
41
+ },
42
+ China: {
43
+ "graph": "https://microsoftgraph.chinacloudapi.cn",
44
+ "login": "https://login.chinacloudapi.cn",
45
+ },
46
+ }
47
+
48
+ @classmethod
49
+ def get_graph_authority(cls, env):
50
+ # type: (str) -> str
51
+ return cls._authority_endpoints.get(env, cls._authority_endpoints["Global"])[
52
+ "graph"
53
+ ]
54
+
55
+ @classmethod
56
+ def get_login_authority(cls, env):
57
+ # type: (str) -> str
58
+ return cls._authority_endpoints.get(env, cls._authority_endpoints["Global"])[
59
+ "login"
60
+ ]
@@ -0,0 +1,6 @@
1
+ class MsAppIds:
2
+ """Enum for commonly used Microsoft application IDs."""
3
+
4
+ Office_365_SharePoint_Online = "00000003-0000-0ff1-ce00-000000000000"
5
+
6
+ Office_365_Exchange_Online = "00000002-0000-0ff1-ce00-000000000000"
@@ -42,6 +42,21 @@ class Authentication(Entity):
42
42
  ),
43
43
  )
44
44
 
45
+ @property
46
+ def microsoft_authenticator_methods(self):
47
+ from office365.directory.authentication.methods.microsoft_authenticator import (
48
+ MicrosoftAuthenticatorAuthenticationMethod,
49
+ )
50
+
51
+ return self.properties.get(
52
+ "microsoftAuthenticatorMethods",
53
+ EntityCollection(
54
+ self.context,
55
+ MicrosoftAuthenticatorAuthenticationMethod,
56
+ ResourcePath("microsoftAuthenticatorMethods", self.resource_path),
57
+ ),
58
+ )
59
+
45
60
  @property
46
61
  def phone_methods(self):
47
62
  """The phone numbers registered to a user for authentication."""
@@ -94,6 +109,7 @@ class Authentication(Entity):
94
109
  property_mapping = {
95
110
  "emailMethods": self.email_methods,
96
111
  "fido2Methods": self.fido2_methods,
112
+ "microsoftAuthenticatorMethods": self.microsoft_authenticator_methods,
97
113
  "passwordMethods": self.password_methods,
98
114
  "phoneMethods": self.phone_methods,
99
115
  }
@@ -2,4 +2,5 @@ from office365.entity import Entity
2
2
 
3
3
 
4
4
  class AuthenticationMethodTarget(Entity):
5
- """"""
5
+ """A collection of groups that are enabled to use an authentication method as part of an authentication
6
+ method policy in Microsoft Entra ID."""
@@ -0,0 +1,6 @@
1
+ from office365.directory.authentication.methods.method import AuthenticationMethod
2
+
3
+
4
+ class MicrosoftAuthenticatorAuthenticationMethod(AuthenticationMethod):
5
+ """A representation of the Microsoft Authenticator app registered to a user. Microsoft Authenticator
6
+ is an authentication method."""
@@ -1,6 +1,9 @@
1
1
  from office365.directory.authentication.methods.details import UserRegistrationDetails
2
2
  from office365.entity import Entity
3
3
  from office365.entity_collection import EntityCollection
4
+ from office365.reports.userregistration.feature_summary import (
5
+ UserRegistrationFeatureSummary,
6
+ )
4
7
  from office365.reports.userregistration.method_summary import (
5
8
  UserRegistrationMethodSummary,
6
9
  )
@@ -12,6 +15,14 @@ from office365.runtime.queries.function import FunctionQuery
12
15
  class AuthenticationMethodsRoot(Entity):
13
16
  """Container for navigation properties for Azure AD authentication methods resources."""
14
17
 
18
+ def users_registered_by_feature(self):
19
+ """Get the number of users capable of multi-factor authentication, self-service password reset,
20
+ and passwordless authentication."""
21
+ return_type = ClientResult(self.context, UserRegistrationFeatureSummary())
22
+ qry = FunctionQuery(self, "usersRegisteredByFeature", None, return_type)
23
+ self.context.add_query(qry)
24
+ return return_type
25
+
15
26
  def users_registered_by_method(self):
16
27
  """Get the number of users registered for each authentication method."""
17
28
  return_type = ClientResult(self.context, UserRegistrationMethodSummary())
@@ -0,0 +1,9 @@
1
+ from office365.directory.authentication.method_configuration import (
2
+ AuthenticationMethodConfiguration,
3
+ )
4
+
5
+
6
+ class SmsAuthenticationMethodConfiguration(AuthenticationMethodConfiguration):
7
+ """Represents a text message authentication methods policy. Authentication methods policies define
8
+ configuration settings and users or groups that are enabled to use the authentication method.
9
+ """
@@ -4,8 +4,37 @@ from office365.runtime.client_value import ClientValue
4
4
  class SelfSignedCertificate(ClientValue):
5
5
  """Contains the public part of a signing certificate."""
6
6
 
7
- def __init__(self, display_name=None):
7
+ def __init__(
8
+ self,
9
+ custom_key_identifier=None,
10
+ display_name=None,
11
+ end_datetime=None,
12
+ key=None,
13
+ key_id=None,
14
+ start_datetime=None,
15
+ thumbprint=None,
16
+ type_=None,
17
+ usage=None,
18
+ ):
8
19
  """
9
- :param str display_name:
20
+ :param custom_key_identifier: Custom key identifier.
21
+ :param str display_name: The friendly name for the key.
22
+ :param end_datetime: The date and time at which the credential expires. The timestamp type represents date
23
+ and time information using ISO 8601 format and is always in UTC time
24
+ :param key: The value for the key credential. Should be a Base-64 encoded value.
25
+ :param key_id: The unique identifier (GUID) for the key.
26
+ :param start_datetime: The date and time at which the credential becomes valid. The timestamp type represents
27
+ date and time information using ISO 8601 format and is always in UTC time
28
+ :param thumbprint: The thumbprint value for the key.
29
+ :param type_: The type of key credential. AsymmetricX509Cert.
30
+ :param usage: A string that describes the purpose for which the key can be used. The possible value is Verify.
10
31
  """
32
+ self.customKeyIdentifier = custom_key_identifier
11
33
  self.displayName = display_name
34
+ self.endDateTime = end_datetime
35
+ self.key = key
36
+ self.keyId = key_id
37
+ self.startDateTime = start_datetime
38
+ self.thumbprint = thumbprint
39
+ self.type = type_
40
+ self.usage = usage
@@ -1,4 +1,6 @@
1
+ from office365.directory.policies.conditional_access import ConditionalAccessPolicy
1
2
  from office365.entity import Entity
3
+ from office365.entity_collection import EntityCollection
2
4
  from office365.runtime.paths.resource_path import ResourcePath
3
5
 
4
6
 
@@ -15,3 +17,15 @@ class ConditionalAccessRoot(Entity):
15
17
  self.context, ResourcePath("authenticationStrength", self.resource_path)
16
18
  ),
17
19
  )
20
+
21
+ @property
22
+ def policies(self):
23
+ """Returns a collection of the specified Conditional Access (CA) policies."""
24
+ return self.properties.get(
25
+ "policies",
26
+ EntityCollection(
27
+ self.context,
28
+ ConditionalAccessPolicy,
29
+ ResourcePath("policies", self.resource_path),
30
+ ),
31
+ )
@@ -0,0 +1,8 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class Approval(Entity):
5
+ """Represents the approval object for decisions associated with a request.
6
+
7
+ In PIM for groups, the approval object for decisions to approve or deny requests to activate
8
+ group membership or ownership."""
@@ -1,5 +1,35 @@
1
+ from office365.directory.identitygovernance.privilegedaccess.approval import Approval
2
+ from office365.directory.identitygovernance.privilegedaccess.group_assignment_schedule_instance import (
3
+ PrivilegedAccessGroupAssignmentScheduleInstance,
4
+ )
1
5
  from office365.entity import Entity
6
+ from office365.entity_collection import EntityCollection
7
+ from office365.runtime.paths.resource_path import ResourcePath
2
8
 
3
9
 
4
10
  class PrivilegedAccessGroup(Entity):
5
11
  """The entry point for all resources related to Privileged Identity Management (PIM) for groups."""
12
+
13
+ @property
14
+ def assignment_approvals(self):
15
+ """ """
16
+ return self.properties.get(
17
+ "assignmentApprovals",
18
+ EntityCollection(
19
+ self.context,
20
+ Approval,
21
+ ResourcePath("assignmentApprovals", self.resource_path),
22
+ ),
23
+ )
24
+
25
+ @property
26
+ def assignment_schedule_instances(self):
27
+ """The instances of assignment schedules to activate a just-in-time access."""
28
+ return self.properties.get(
29
+ "assignmentScheduleInstances",
30
+ EntityCollection(
31
+ self.context,
32
+ PrivilegedAccessGroupAssignmentScheduleInstance,
33
+ ResourcePath("assignmentScheduleInstances", self.resource_path),
34
+ ),
35
+ )
@@ -0,0 +1,7 @@
1
+ from office365.directory.identitygovernance.privilegedaccess.schedule_instance import (
2
+ PrivilegedAccessScheduleInstance,
3
+ )
4
+
5
+
6
+ class PrivilegedAccessGroupAssignmentScheduleInstance(PrivilegedAccessScheduleInstance):
7
+ """Represents an instance of a provisioned membership or ownership assignment in PIM for groups."""
@@ -0,0 +1,7 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class UnifiedRoleAssignmentScheduleRequest(Entity):
5
+ """In PIM, represents a request for an active role assignment to a principal. The role assignment can be
6
+ permanently active with or without an expiry date, or temporarily active after activation of an eligible
7
+ assignment. Inherits from request."""
@@ -2,6 +2,7 @@ from office365.directory.identitygovernance.userconsent.request import (
2
2
  UserConsentRequest,
3
3
  )
4
4
  from office365.entity_collection import EntityCollection
5
+ from office365.runtime.queries.function import FunctionQuery
5
6
 
6
7
 
7
8
  class UserConsentRequestCollection(EntityCollection[UserConsentRequest]):
@@ -11,3 +12,12 @@ class UserConsentRequestCollection(EntityCollection[UserConsentRequest]):
11
12
  super(UserConsentRequestCollection, self).__init__(
12
13
  context, UserConsentRequest, resource_path
13
14
  )
15
+
16
+ def filter_by_current_user(self, on):
17
+ """Retrieve a collection of userConsentRequest objects for accessing a specified app, for which the current
18
+ user is the reviewer."""
19
+ return_type = UserConsentRequestCollection(self.context, self.resource_path)
20
+ params = {"on": on}
21
+ qry = FunctionQuery(self, "filterByCurrentUser", params, return_type)
22
+ self.context.add_query(qry)
23
+ return return_type
@@ -0,0 +1,5 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class WorkflowBase(Entity):
5
+ """An abstract type that exposes the properties for configuring a custom lifecycle workflow."""
@@ -1,4 +1,6 @@
1
1
  from office365.directory.policies.base import PolicyBase
2
+ from office365.directory.policies.template import PolicyTemplate
3
+ from office365.runtime.paths.resource_path import ResourcePath
2
4
  from office365.runtime.types.collections import StringCollection
3
5
 
4
6
 
@@ -13,3 +15,14 @@ class CrossTenantAccessPolicy(PolicyBase):
13
15
  and partner.microsoftonline.cn.
14
16
  """
15
17
  return self.properties.get("allowedCloudEndpoints", StringCollection())
18
+
19
+ def templates(self):
20
+ # type: () -> PolicyTemplate
21
+ """Represents the base policy in the directory for multitenant organization settings."""
22
+ return self.properties.get(
23
+ "templates",
24
+ PolicyTemplate(
25
+ self.context,
26
+ ResourcePath("templates", self.resource_path),
27
+ ),
28
+ )
@@ -0,0 +1,16 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class FeatureRolloutPolicy(Entity):
5
+ """
6
+ Represents a feature rollout policy associated with a directory object. Creating a feature rollout policy
7
+ helps tenant administrators to pilot features of Microsoft Entra ID with a specific group before enabling
8
+ features for entire organization. This minimizes the impact and helps administrators to test and rollout
9
+ authentication related features gradually.
10
+
11
+ The following are limitations of feature rollout:
12
+
13
+ - Each feature supports a maximum of 10 groups.
14
+ - The appliesTo field only supports groups.
15
+ - Dynamic groups and nested groups are not supported.
16
+ """
@@ -11,6 +11,7 @@ from office365.directory.policies.authorization import AuthorizationPolicy
11
11
  from office365.directory.policies.conditional_access import ConditionalAccessPolicy
12
12
  from office365.directory.policies.cross_tenant_access import CrossTenantAccessPolicy
13
13
  from office365.directory.policies.device_registration import DeviceRegistrationPolicy
14
+ from office365.directory.policies.feature_rollout import FeatureRolloutPolicy
14
15
  from office365.directory.policies.permission_grant import PermissionGrantPolicy
15
16
  from office365.directory.policies.tenant_app_management import TenantAppManagementPolicy
16
17
  from office365.directory.policies.unified_role_management import (
@@ -52,16 +53,6 @@ class PolicyRoot(Entity):
52
53
  )
53
54
 
54
55
  @property
55
- def device_registration_policy(self):
56
- """ """
57
- return self.properties.get(
58
- "deviceRegistrationPolicy",
59
- DeviceRegistrationPolicy(
60
- self.context,
61
- ResourcePath("deviceRegistrationPolicy", self.resource_path),
62
- ),
63
- )
64
-
65
56
  def authentication_strength_policies(self):
66
57
  # type: () -> EntityCollection[AuthenticationStrengthPolicy]
67
58
  """
@@ -111,6 +102,19 @@ class PolicyRoot(Entity):
111
102
  ),
112
103
  )
113
104
 
105
+ @property
106
+ def conditional_access_policies(self):
107
+ # type: () -> EntityCollection[ConditionalAccessPolicy]
108
+ """The custom rules that define an access scenario"""
109
+ return self.properties.get(
110
+ "conditionalAccessPolicies",
111
+ EntityCollection(
112
+ self.context,
113
+ ConditionalAccessPolicy,
114
+ ResourcePath("conditionalAccessPolicies", self.resource_path),
115
+ ),
116
+ )
117
+
114
118
  @property
115
119
  def cross_tenant_access_policy(self):
116
120
  """
@@ -124,6 +128,17 @@ class PolicyRoot(Entity):
124
128
  ),
125
129
  )
126
130
 
131
+ @property
132
+ def device_registration_policy(self):
133
+ """ """
134
+ return self.properties.get(
135
+ "deviceRegistrationPolicy",
136
+ DeviceRegistrationPolicy(
137
+ self.context,
138
+ ResourcePath("deviceRegistrationPolicy", self.resource_path),
139
+ ),
140
+ )
141
+
127
142
  @property
128
143
  def default_app_management_policy(self):
129
144
  """
@@ -137,6 +152,19 @@ class PolicyRoot(Entity):
137
152
  ),
138
153
  )
139
154
 
155
+ @property
156
+ def feature_rollout_policies(self):
157
+ # type: () -> EntityCollection[FeatureRolloutPolicy]
158
+ """The feature rollout policy associated with a directory object."""
159
+ return self.properties.get(
160
+ "featureRolloutPolicies",
161
+ EntityCollection(
162
+ self.context,
163
+ FeatureRolloutPolicy,
164
+ ResourcePath("featureRolloutPolicies", self.resource_path),
165
+ ),
166
+ )
167
+
140
168
  @property
141
169
  def permission_grant_policies(self):
142
170
  # type: () -> EntityCollection[PermissionGrantPolicy]
@@ -152,19 +180,6 @@ class PolicyRoot(Entity):
152
180
  ),
153
181
  )
154
182
 
155
- @property
156
- def conditional_access_policies(self):
157
- # type: () -> EntityCollection[ConditionalAccessPolicy]
158
- """The custom rules that define an access scenario"""
159
- return self.properties.get(
160
- "conditionalAccessPolicies",
161
- EntityCollection(
162
- self.context,
163
- ConditionalAccessPolicy,
164
- ResourcePath("conditionalAccessPolicies", self.resource_path),
165
- ),
166
- )
167
-
168
183
  @property
169
184
  def role_management_policies(self):
170
185
  # type: () -> EntityCollection[UnifiedRoleManagementPolicy]
@@ -191,6 +206,7 @@ class PolicyRoot(Entity):
191
206
  "crossTenantAccessPolicy": self.cross_tenant_access_policy,
192
207
  "defaultAppManagementPolicy": self.default_app_management_policy,
193
208
  "deviceRegistrationPolicy": self.device_registration_policy,
209
+ "featureRolloutPolicies": self.feature_rollout_policies,
194
210
  "permissionGrantPolicies": self.permission_grant_policies,
195
211
  "roleManagementPolicies": self.role_management_policies,
196
212
  }
@@ -0,0 +1,5 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class PolicyTemplate(Entity):
5
+ """Represents the base policy in the directory for multitenant organization settings."""
@@ -0,0 +1,20 @@
1
+ from typing import Optional
2
+
3
+ from office365.directory.protection.threatassessment.request import (
4
+ ThreatAssessmentRequest,
5
+ )
6
+
7
+
8
+ class EmailFileAssessmentRequest(ThreatAssessmentRequest):
9
+ """
10
+ Represents a resource that creates and retrieves an email file threat assessment.
11
+ The email file can be an .eml file type.
12
+ """
13
+
14
+ @property
15
+ def content_data(self):
16
+ # type: () -> Optional[str]
17
+ """
18
+ Base64 encoded .eml email file content. The file content can't fetch back because it isn't stored.
19
+ """
20
+ return self.properties.get("contentData", None)
@@ -1,5 +1,30 @@
1
+ from datetime import datetime
2
+
3
+ from office365.directory.permissions.identity_set import IdentitySet
1
4
  from office365.entity import Entity
2
5
 
3
6
 
4
7
  class ThreatAssessmentRequest(Entity):
5
8
  """An abstract resource type used to represent a threat assessment request item."""
9
+
10
+ @property
11
+ def created_by(self):
12
+ """The threat assessment request creator."""
13
+ return self.properties.get("createdBy", IdentitySet())
14
+
15
+ @property
16
+ def created_datetime(self):
17
+ """
18
+ The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time.
19
+ For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z
20
+ """
21
+ return self.properties.get("createdDateTime", datetime.min)
22
+
23
+ def get_property(self, name, default_value=None):
24
+ if default_value is None:
25
+ property_mapping = {
26
+ "createdDateTime": self.created_datetime,
27
+ "createdBy": self.created_by,
28
+ }
29
+ default_value = property_mapping.get(name, None)
30
+ return super(ThreatAssessmentRequest, self).get_property(name, default_value)
@@ -1,3 +1,6 @@
1
+ from office365.directory.identitygovernance.privilegedaccess.unified_role_assignment_schedule_request import (
2
+ UnifiedRoleAssignmentScheduleRequest,
3
+ )
1
4
  from office365.directory.rolemanagement.unified_role_assignment import (
2
5
  UnifiedRoleAssignment,
3
6
  )
@@ -40,6 +43,18 @@ class RbacApplication(Entity):
40
43
  ),
41
44
  )
42
45
 
46
+ def role_assignment_schedule_requests(self):
47
+ # type: () -> EntityCollection[UnifiedRoleAssignmentScheduleRequest]
48
+ """Resource representing the roles allowed by RBAC providers and the permissions assigned to the roles."""
49
+ return self.properties.get(
50
+ "roleAssignmentScheduleRequests",
51
+ EntityCollection(
52
+ self.context,
53
+ UnifiedRoleAssignmentScheduleRequest,
54
+ ResourcePath("roleAssignmentScheduleRequests", self.resource_path),
55
+ ),
56
+ )
57
+
43
58
  def get_property(self, name, default_value=None):
44
59
  if default_value is None:
45
60
  property_mapping = {
@@ -3,8 +3,12 @@ from office365.runtime.types.collections import StringCollection
3
3
 
4
4
 
5
5
  class ResourceAction(ClientValue):
6
- """ """
6
+ """Set of allowed and not allowed actions for a resource."""
7
7
 
8
- def __init__(self):
9
- self.allowedResourceActions = StringCollection()
10
- self.notAllowedResourceActions = StringCollection()
8
+ def __init__(self, allowed=None, not_allowed=None):
9
+ """
10
+ :param list[str] allowed: Allowed Actions
11
+ :param list[str] not_allowed: Not Allowed Actions.
12
+ """
13
+ self.allowedResourceActions = StringCollection(allowed)
14
+ self.notAllowedResourceActions = StringCollection(not_allowed)