Office365-REST-Python-Client 2.5.5__py3-none-any.whl → 2.5.7__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.
- {Office365_REST_Python_Client-2.5.5.dist-info → Office365_REST_Python_Client-2.5.7.dist-info}/METADATA +6 -6
- {Office365_REST_Python_Client-2.5.5.dist-info → Office365_REST_Python_Client-2.5.7.dist-info}/RECORD +269 -222
- office365/booking/virtualevents/__init__.py +0 -0
- office365/booking/virtualevents/root.py +5 -0
- office365/communications/calls/participant.py +4 -5
- office365/directory/administrative_unit.py +9 -2
- office365/directory/applications/application.py +3 -3
- office365/directory/applications/roles/assignment_collection.py +1 -1
- office365/directory/applications/roles/collection.py +6 -2
- office365/directory/applications/roles/role.py +1 -1
- office365/directory/audit/provisioning/object_summary.py +30 -1
- office365/directory/authentication/method_configuration.py +9 -0
- office365/directory/authentication/method_mode_detail.py +8 -0
- office365/directory/authentication/method_target.py +5 -0
- office365/directory/authentication/methods/fido.py +8 -0
- office365/directory/authentication/methods/password.py +23 -0
- office365/directory/authentication/strength_root.py +5 -0
- office365/directory/certificates/auth_configuration.py +1 -3
- office365/directory/custom_security_attribute_definition.py +7 -0
- office365/directory/device_local_credential_info.py +6 -0
- office365/directory/directory.py +40 -12
- office365/directory/groups/group.py +2 -6
- office365/directory/identities/conditional_access_root.py +10 -1
- office365/directory/identities/container.py +3 -9
- office365/directory/identities/providers/builtin_identity.py +3 -2
- office365/directory/identities/providers/saml_or_wsfed.py +4 -5
- office365/directory/identitygovernance/appconsent/request_collection.py +1 -1
- office365/directory/identitygovernance/governance.py +14 -3
- office365/directory/identitygovernance/privilegedaccess/__init__.py +0 -0
- office365/directory/identitygovernance/privilegedaccess/root.py +5 -0
- office365/directory/identitygovernance/termsofuse/agreement_acceptance.py +8 -0
- office365/directory/identitygovernance/userconsent/request_collection.py +1 -1
- office365/directory/insights/resource_reference.py +1 -1
- office365/directory/key_credential.py +3 -0
- office365/directory/licenses/assignment_state.py +26 -2
- office365/directory/licenses/details.py +4 -3
- office365/directory/licenses/subscribed_sku.py +8 -10
- office365/directory/object_collection.py +40 -25
- office365/directory/password_credential.py +3 -0
- office365/directory/permissions/default_user_role.py +5 -0
- office365/directory/permissions/grants/condition_set.py +4 -2
- office365/directory/permissions/grants/oauth2.py +7 -10
- office365/directory/policies/authorization.py +50 -3
- office365/directory/policies/device_registration.py +6 -0
- office365/directory/policies/permission_grant.py +2 -0
- office365/directory/policies/root.py +13 -0
- office365/directory/profile_photo.py +6 -6
- office365/directory/protection/riskyusers/risky_user.py +4 -4
- office365/directory/rolemanagement/resource_action.py +10 -0
- office365/directory/rolemanagement/role_permission.py +10 -0
- office365/directory/security/alerts/alert.py +5 -7
- office365/directory/security/attacksimulations/landing_page.py +5 -0
- office365/directory/security/attacksimulations/operation.py +5 -0
- office365/directory/security/attacksimulations/report.py +8 -1
- office365/directory/security/attacksimulations/root.py +33 -0
- office365/directory/security/attacksimulations/users/__init__.py +0 -0
- office365/directory/security/attacksimulations/users/details.py +5 -0
- office365/directory/security/hunting_query_results.py +5 -0
- office365/directory/security/incidents/incident.py +8 -13
- office365/directory/security/security.py +20 -3
- office365/directory/security/threatintelligence/article_indicator.py +7 -0
- office365/directory/serviceprincipals/service_principal.py +6 -12
- office365/directory/synchronization/schema.py +16 -0
- office365/directory/synchronization/synchronization.py +2 -0
- office365/directory/users/activities/history_item.py +3 -2
- office365/directory/users/user.py +60 -10
- office365/entity_collection.py +3 -2
- office365/graph_client.py +58 -30
- office365/intune/audit/event.py +1 -3
- office365/intune/audit/event_collection.py +1 -1
- office365/intune/devices/alternative_security_id.py +4 -0
- office365/intune/devices/collection.py +57 -0
- office365/intune/devices/device.py +38 -10
- office365/intune/devices/management/management.py +12 -0
- office365/intune/organizations/organization.py +1 -0
- office365/onedrive/analytics/item_activity_stat.py +9 -0
- office365/onedrive/analytics/item_analytics.py +1 -0
- office365/onedrive/contenttypes/content_type.py +4 -12
- office365/onedrive/driveitems/driveItem.py +76 -7
- office365/onedrive/files/hashes.py +5 -0
- office365/onedrive/lists/collection.py +2 -2
- office365/onedrive/lists/list.py +1 -1
- office365/onedrive/operations/long_running.py +6 -6
- office365/onedrive/operations/rich_long_running.py +4 -3
- office365/onedrive/permissions/collection.py +1 -14
- office365/onedrive/sharepoint_settings.py +6 -6
- office365/onedrive/sitepages/__init__.py +0 -0
- office365/onedrive/sitepages/base.py +29 -0
- office365/onedrive/sitepages/canvas_layout.py +43 -0
- office365/onedrive/sitepages/collection.py +32 -0
- office365/onedrive/sitepages/horizontal_section.py +23 -0
- office365/onedrive/sitepages/horizontal_section_column.py +27 -0
- office365/onedrive/sitepages/site_page.py +116 -0
- office365/onedrive/sitepages/title_area.py +13 -0
- office365/onedrive/sitepages/vertical_section.py +27 -0
- office365/onedrive/sitepages/web_part.py +5 -0
- office365/onedrive/sites/site.py +10 -0
- office365/onedrive/sites/sites_with_root.py +1 -3
- office365/onedrive/termstore/store.py +2 -4
- office365/onedrive/termstore/terms/collection.py +1 -2
- office365/onedrive/workbooks/charts/data_labels.py +13 -1
- office365/onedrive/workbooks/filter.py +9 -0
- office365/onedrive/workbooks/filter_criteria.py +5 -0
- office365/onedrive/workbooks/functions/functions.py +6 -3
- office365/onedrive/workbooks/functions/result.py +2 -0
- office365/onedrive/workbooks/operations/workbook.py +7 -10
- office365/onedrive/workbooks/tables/pivot_table.py +9 -9
- office365/onedrive/workbooks/tables/sort.py +5 -0
- office365/onedrive/workbooks/tables/table.py +57 -0
- office365/onedrive/workbooks/worksheets/collection.py +0 -6
- office365/onedrive/workbooks/worksheets/protection.py +22 -1
- office365/onedrive/workbooks/worksheets/protection_options.py +7 -0
- office365/outlook/calendar/calendar.py +1 -3
- office365/outlook/calendar/events/event.py +45 -0
- office365/outlook/calendar/permissions/permission.py +7 -7
- office365/outlook/calendar/place.py +5 -3
- office365/outlook/calendar/response_status.py +11 -0
- office365/outlook/calendar/rooms/room.py +14 -0
- office365/outlook/mail/attachments/collection.py +6 -1
- office365/outlook/mail/automatic_replies_mailtips.py +5 -0
- office365/outlook/mail/conversation.py +1 -3
- office365/outlook/mail/folders/folder.py +1 -3
- office365/outlook/mail/messages/message.py +1 -1
- office365/outlook/mail/tips.py +17 -0
- office365/planner/plans/plan.py +11 -1
- office365/reports/root.py +83 -4
- office365/runtime/auth/authentication_context.py +12 -2
- office365/runtime/auth/providers/acs_token_provider.py +10 -7
- office365/runtime/auth/sts_profile.py +0 -1
- office365/runtime/client_object.py +18 -14
- office365/runtime/client_object_collection.py +8 -23
- office365/runtime/client_request_exception.py +1 -3
- office365/runtime/client_result.py +11 -14
- office365/runtime/client_runtime_context.py +11 -21
- office365/runtime/odata/json_format.py +7 -9
- office365/runtime/odata/request.py +12 -2
- office365/runtime/odata/v3/batch_request.py +7 -15
- office365/runtime/odata/v4/batch_request.py +13 -21
- office365/runtime/queries/upload_session.py +5 -0
- office365/runtime/types/event_handler.py +1 -1
- office365/search/entity.py +3 -2
- office365/sharepoint/activities/facets/delete.py +1 -1
- office365/sharepoint/activities/tracked_item_service.py +2 -3
- office365/sharepoint/administration/web_application.py +8 -7
- office365/sharepoint/alerts/collection.py +2 -1
- office365/sharepoint/attachments/attachment.py +3 -9
- office365/sharepoint/audit/audit.py +3 -2
- office365/sharepoint/changes/alert.py +4 -3
- office365/sharepoint/changes/collection.py +7 -10
- office365/sharepoint/changes/content_type.py +4 -4
- office365/sharepoint/changes/field.py +4 -5
- office365/sharepoint/changes/item.py +34 -7
- office365/sharepoint/changes/list.py +4 -4
- office365/sharepoint/changes/user.py +5 -6
- office365/sharepoint/client_context.py +4 -2
- office365/sharepoint/clientsidecomponent/component_context_info.py +4 -3
- office365/sharepoint/contentcenter/machinelearning/enabled.py +4 -3
- office365/sharepoint/contentcenter/machinelearning/hub.py +6 -6
- office365/sharepoint/contentcenter/machinelearning/models/collection.py +1 -1
- office365/sharepoint/contenttypes/content_type.py +13 -1
- office365/sharepoint/contenttypes/fieldlinks/collection.py +5 -7
- office365/sharepoint/contenttypes/fieldlinks/field_link.py +14 -22
- office365/sharepoint/directory/helper.py +2 -0
- office365/sharepoint/entity.py +12 -5
- office365/sharepoint/entity_collection.py +1 -3
- office365/sharepoint/eventreceivers/definition.py +8 -12
- office365/sharepoint/features/collection.py +1 -2
- office365/sharepoint/features/definitions/definition.py +6 -3
- office365/sharepoint/fields/calculated.py +8 -14
- office365/sharepoint/fields/collection.py +46 -13
- office365/sharepoint/fields/computed.py +4 -5
- office365/sharepoint/fields/currency.py +7 -11
- office365/sharepoint/fields/date_time.py +4 -8
- office365/sharepoint/fields/field.py +6 -16
- office365/sharepoint/fields/lookup.py +11 -9
- office365/sharepoint/fields/multi_choice.py +8 -12
- office365/sharepoint/fields/multi_line_text.py +10 -14
- office365/sharepoint/fields/number.py +13 -26
- office365/sharepoint/fields/rating_scale.py +6 -10
- office365/sharepoint/fields/related_field.py +10 -17
- office365/sharepoint/fields/url.py +4 -5
- office365/sharepoint/fields/user.py +10 -9
- office365/sharepoint/files/collection.py +17 -15
- office365/sharepoint/files/file.py +30 -23
- office365/sharepoint/folders/collection.py +22 -5
- office365/sharepoint/folders/coloring.py +11 -9
- office365/sharepoint/folders/coloring_information.py +38 -0
- office365/sharepoint/folders/folder.py +23 -25
- office365/sharepoint/likes/liked_by_information.py +7 -10
- office365/sharepoint/likes/user_entity.py +6 -8
- office365/sharepoint/listitems/form_update_value.py +17 -1
- office365/sharepoint/listitems/listitem.py +2 -2
- office365/sharepoint/lists/bloom_filter.py +5 -7
- office365/sharepoint/lists/creatables_info.py +5 -6
- office365/sharepoint/lists/list.py +24 -9
- office365/sharepoint/lists/template.py +7 -4
- office365/sharepoint/lists/template_collection.py +2 -4
- office365/sharepoint/marketplace/app_metadata.py +14 -23
- office365/sharepoint/marketplace/sitecollection/appcatalog/allowed_item.py +6 -8
- office365/sharepoint/migrationcenter/deploy_status.py +5 -0
- office365/sharepoint/migrationcenter/service/performance/__init__.py +0 -0
- office365/sharepoint/migrationcenter/service/performance/dashboard_data.py +9 -0
- office365/sharepoint/migrationcenter/service/performance/data.py +7 -0
- office365/sharepoint/migrationcenter/service/performance/entity_data.py +5 -0
- office365/sharepoint/navigation/node.py +5 -8
- office365/sharepoint/permissions/irm/effective_settings.py +6 -8
- office365/sharepoint/permissions/irm/file_settings.py +8 -6
- office365/sharepoint/permissions/irm/settings.py +25 -43
- office365/sharepoint/portal/groups/site_manager.py +6 -7
- office365/sharepoint/principal/principal.py +2 -4
- office365/sharepoint/publishing/embed_data_v1.py +8 -15
- office365/sharepoint/publishing/pages/campaign_publication.py +4 -3
- office365/sharepoint/publishing/primary_city_time.py +8 -9
- office365/sharepoint/publishing/video/service_discoverer.py +4 -3
- office365/sharepoint/pushnotifications/subscriber.py +11 -15
- office365/sharepoint/recyclebin/item.py +107 -7
- office365/sharepoint/sharing/information.py +9 -0
- office365/sharepoint/sharing/link_info.py +6 -0
- office365/sharepoint/sharing/object_sharing_settings.py +24 -46
- office365/sharepoint/sharing/permission_collection.py +18 -0
- office365/sharepoint/sharing/permission_information.py +5 -5
- office365/sharepoint/sharing/result.py +1 -0
- office365/sharepoint/sitedesigns/run.py +4 -3
- office365/sharepoint/sites/script_safe_domain.py +5 -0
- office365/sharepoint/sites/site.py +17 -20
- office365/sharepoint/taxonomy/field.py +32 -21
- office365/sharepoint/taxonomy/field_value.py +1 -1
- office365/sharepoint/taxonomy/groups/group.py +12 -1
- office365/sharepoint/taxonomy/sets/set.py +6 -0
- office365/sharepoint/taxonomy/stores/store.py +4 -2
- office365/sharepoint/teams/channel.py +6 -6
- office365/sharepoint/tenant/administration/endpoints.py +4 -3
- office365/sharepoint/tenant/administration/hubsites/properties.py +4 -5
- office365/sharepoint/tenant/administration/powerapps/__init__.py +0 -0
- office365/sharepoint/tenant/administration/powerapps/environment_context.py +8 -0
- office365/sharepoint/tenant/administration/sites/properties.py +0 -1
- office365/sharepoint/tenant/administration/spo_operation.py +4 -4
- office365/sharepoint/tenant/administration/tenant.py +1 -0
- office365/sharepoint/tenant/insights/report.py +11 -0
- office365/sharepoint/tenant/insights/report_manager.py +5 -0
- office365/sharepoint/tenant/insights/report_metadata.py +5 -0
- office365/sharepoint/tenant/settings.py +4 -3
- office365/sharepoint/translation/sync_translator.py +3 -2
- office365/sharepoint/ui/applicationpages/peoplepicker/entity_information.py +4 -4
- office365/sharepoint/usercustomactions/action.py +12 -20
- office365/sharepoint/userprofiles/followed_content.py +6 -10
- office365/sharepoint/userprofiles/people_manager.py +0 -1
- office365/sharepoint/userprofiles/person_properties.py +14 -30
- office365/sharepoint/userprofiles/personal_cache.py +4 -3
- office365/sharepoint/userprofiles/properties_for_user.py +4 -5
- office365/sharepoint/userprofiles/sharedwithme/document.py +12 -21
- office365/sharepoint/utilities/move_copy_util.py +19 -19
- office365/sharepoint/utilities/upload_status.py +7 -10
- office365/sharepoint/views/field_collection.py +9 -14
- office365/sharepoint/views/view.py +43 -64
- office365/sharepoint/webhooks/subscription.py +11 -19
- office365/sharepoint/webparts/webpart.py +3 -1
- office365/sharepoint/webs/information_collection.py +1 -1
- office365/sharepoint/webs/modernize_homepage_result.py +4 -3
- office365/sharepoint/webs/regional_settings.py +79 -16
- office365/sharepoint/webs/template.py +3 -5
- office365/sharepoint/webs/web.py +24 -25
- office365/teams/apps/catalog.py +1 -0
- office365/teams/chats/chat.py +4 -0
- office365/teams/operations/async_operation.py +5 -7
- office365/teams/schedule/schedule.py +6 -2
- office365/runtime/paths/item.py +0 -8
- {Office365_REST_Python_Client-2.5.5.dist-info → Office365_REST_Python_Client-2.5.7.dist-info}/LICENSE +0 -0
- {Office365_REST_Python_Client-2.5.5.dist-info → Office365_REST_Python_Client-2.5.7.dist-info}/WHEEL +0 -0
- {Office365_REST_Python_Client-2.5.5.dist-info → Office365_REST_Python_Client-2.5.7.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
from typing_extensions import Self
|
|
2
|
+
|
|
1
3
|
from office365.delta_collection import DeltaCollection
|
|
2
4
|
from office365.directory.object import DirectoryObject
|
|
3
5
|
from office365.entity_collection import EntityCollection
|
|
4
|
-
from office365.runtime.client_result import ClientResult
|
|
5
6
|
from office365.runtime.http.http_method import HttpMethod
|
|
6
7
|
from office365.runtime.http.request_options import RequestOptions
|
|
7
8
|
from office365.runtime.queries.service_operation import ServiceOperationQuery
|
|
@@ -15,29 +16,32 @@ class DirectoryObjectCollection(DeltaCollection[DirectoryObject]):
|
|
|
15
16
|
context, DirectoryObject, resource_path
|
|
16
17
|
)
|
|
17
18
|
|
|
18
|
-
def get_by_ids(self, ids):
|
|
19
|
+
def get_by_ids(self, ids, types=None):
|
|
19
20
|
"""
|
|
20
21
|
Returns the directory objects specified in a list of IDs.
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
:param list[str] ids: A collection of IDs for which to return objects. The IDs are GUIDs, represented as
|
|
23
|
+
strings. You can specify up to 1000 IDs.
|
|
24
|
+
:param list[str] types: A collection of resource types that specifies the set of resource collections to search.
|
|
25
|
+
If not specified, the default is directoryObject, which contains all of the resource types defined in
|
|
26
|
+
the directory. Any object that derives from directoryObject may be specified in the collection;
|
|
27
|
+
for example: user, group, and device objects.
|
|
23
28
|
"""
|
|
24
|
-
return_type =
|
|
25
|
-
params = {"ids": ids}
|
|
29
|
+
return_type = DirectoryObjectCollection(self.context)
|
|
30
|
+
params = {"ids": ids, "types": types}
|
|
26
31
|
qry = ServiceOperationQuery(self, "getByIds", params, None, None, return_type)
|
|
27
32
|
self.context.add_query(qry)
|
|
28
33
|
return return_type
|
|
29
34
|
|
|
30
|
-
def add(self,
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
def add(self, directory_object):
|
|
36
|
+
# type: (DirectoryObject) -> Self
|
|
37
|
+
"""Adds directory objects to the collection."""
|
|
33
38
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
self.context.add_query(qry)
|
|
39
|
+
def _add():
|
|
40
|
+
payload = {"@odata.id": directory_object.resource_url}
|
|
41
|
+
qry = ServiceOperationQuery(self, "$ref", None, payload)
|
|
42
|
+
self.context.add_query(qry)
|
|
43
|
+
|
|
44
|
+
directory_object.ensure_property("id", _add)
|
|
41
45
|
return self
|
|
42
46
|
|
|
43
47
|
def get_available_extension_properties(self, is_synced_from_on_premises=None):
|
|
@@ -60,19 +64,30 @@ class DirectoryObjectCollection(DeltaCollection[DirectoryObject]):
|
|
|
60
64
|
self.context.add_query(qry)
|
|
61
65
|
return return_type
|
|
62
66
|
|
|
63
|
-
def remove(self,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
:param str
|
|
67
|
+
def remove(self, directory_object):
|
|
68
|
+
# type: (DirectoryObject|str) -> Self
|
|
69
|
+
"""Removes directory object from the collection.
|
|
70
|
+
:param str directory_object: Directory object or identifier
|
|
67
71
|
"""
|
|
68
72
|
|
|
69
|
-
|
|
73
|
+
def _remove(id_):
|
|
74
|
+
qry = ServiceOperationQuery(self, "{0}/$ref".format(id_))
|
|
75
|
+
|
|
76
|
+
def _construct_request(request):
|
|
77
|
+
# type: (RequestOptions) -> None
|
|
78
|
+
request.method = HttpMethod.Delete
|
|
79
|
+
|
|
80
|
+
self.context.add_query(qry).before_query_execute(_construct_request)
|
|
81
|
+
|
|
82
|
+
if isinstance(directory_object, DirectoryObject):
|
|
83
|
+
|
|
84
|
+
def _loaded():
|
|
85
|
+
_remove(directory_object.id)
|
|
70
86
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
87
|
+
directory_object.ensure_property("id", _loaded)
|
|
88
|
+
else:
|
|
89
|
+
_remove(directory_object)
|
|
74
90
|
|
|
75
|
-
self.context.add_query(qry).before_query_execute(_construct_request)
|
|
76
91
|
return self
|
|
77
92
|
|
|
78
93
|
def validate_properties(
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
1
3
|
from office365.entity import Entity
|
|
2
4
|
from office365.runtime.types.collections import StringCollection
|
|
3
5
|
|
|
@@ -29,10 +31,10 @@ class PermissionGrantConditionSet(Entity):
|
|
|
29
31
|
|
|
30
32
|
@property
|
|
31
33
|
def client_applications_from_verified_publisher_only(self):
|
|
34
|
+
# type: () -> Optional[bool]
|
|
32
35
|
"""
|
|
33
36
|
Set to true to only match on client applications with a verified publisher. Set to false to match on any client
|
|
34
37
|
app, even if it does not have a verified publisher. Default is false.
|
|
35
|
-
:rtype: bool
|
|
36
38
|
"""
|
|
37
39
|
return self.properties.get("clientApplicationsFromVerifiedPublisherOnly", None)
|
|
38
40
|
|
|
@@ -50,9 +52,9 @@ class PermissionGrantConditionSet(Entity):
|
|
|
50
52
|
|
|
51
53
|
@property
|
|
52
54
|
def resource_application(self):
|
|
55
|
+
# type: () -> Optional[str]
|
|
53
56
|
"""
|
|
54
57
|
The appId of the resource application (e.g. the API) for which a permission is being granted, or any to match
|
|
55
58
|
with any resource application or API. Default is any.
|
|
56
|
-
:rtype: str
|
|
57
59
|
"""
|
|
58
60
|
return self.properties.get("resourceApplication", None)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
1
3
|
from office365.entity import Entity
|
|
2
4
|
|
|
3
5
|
|
|
@@ -13,56 +15,51 @@ class OAuth2PermissionGrant(Entity):
|
|
|
13
15
|
|
|
14
16
|
@property
|
|
15
17
|
def client_id(self):
|
|
18
|
+
# type: () -> Optional[str]
|
|
16
19
|
"""
|
|
17
20
|
The id of the client service principal for the application which is authorized to act on behalf of a signed-in
|
|
18
21
|
user when accessing an API. Required. Supports $filter (eq only).
|
|
19
|
-
|
|
20
|
-
:rtype: str
|
|
21
22
|
"""
|
|
22
23
|
return self.properties.get("clientId", None)
|
|
23
24
|
|
|
24
25
|
@property
|
|
25
26
|
def consent_type(self):
|
|
27
|
+
# type: () -> Optional[str]
|
|
26
28
|
"""
|
|
27
29
|
Indicates if authorization is granted for the client application to impersonate all users or only a
|
|
28
30
|
specific user. AllPrincipals indicates authorization to impersonate all users.
|
|
29
31
|
Principal indicates authorization to impersonate a specific user. Consent on behalf of all users can be granted
|
|
30
32
|
by an administrator. Non-admin users may be authorized to consent on behalf of themselves in some cases,
|
|
31
33
|
for some delegated permissions. Required. Supports $filter (eq only).
|
|
32
|
-
|
|
33
|
-
:rtype: str
|
|
34
34
|
"""
|
|
35
35
|
return self.properties.get("consentType", None)
|
|
36
36
|
|
|
37
37
|
@property
|
|
38
38
|
def principal_id(self):
|
|
39
|
+
# type: () -> Optional[str]
|
|
39
40
|
"""
|
|
40
41
|
The id of the user on behalf of whom the client is authorized to access the resource, when consentType is
|
|
41
42
|
Principal. If consentType is AllPrincipals this value is null. Required when consentType is Principal.
|
|
42
43
|
Supports $filter (eq only).
|
|
43
|
-
|
|
44
|
-
:rtype: str
|
|
45
44
|
"""
|
|
46
45
|
return self.properties.get("principalId", None)
|
|
47
46
|
|
|
48
47
|
@property
|
|
49
48
|
def resource_id(self):
|
|
49
|
+
# type: () -> Optional[str]
|
|
50
50
|
"""
|
|
51
51
|
The id of the resource service principal to which access is authorized. This identifies the API which the
|
|
52
52
|
client is authorized to attempt to call on behalf of a signed-in user. Supports $filter (eq only).
|
|
53
|
-
|
|
54
|
-
:rtype: str
|
|
55
53
|
"""
|
|
56
54
|
return self.properties.get("resourceId", None)
|
|
57
55
|
|
|
58
56
|
@property
|
|
59
57
|
def scope(self):
|
|
58
|
+
# type: () -> Optional[str]
|
|
60
59
|
"""
|
|
61
60
|
A space-separated list of the claim values for delegated permissions which should be included in access tokens
|
|
62
61
|
for the resource application (the API). For example, openid User.Read GroupMember.Read.All. Each claim value
|
|
63
62
|
should match the value field of one of the delegated permissions defined by the API, listed in the
|
|
64
63
|
oauth2PermissionScopes property of the resource service principal. Must not exceed 3850 characters in length.
|
|
65
|
-
|
|
66
|
-
:rtype: str
|
|
67
64
|
"""
|
|
68
65
|
return self.properties.get("scope", None)
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from office365.directory.permissions.default_user_role import DefaultUserRolePermissions
|
|
1
4
|
from office365.directory.policies.base import PolicyBase
|
|
2
5
|
|
|
3
6
|
|
|
@@ -8,8 +11,52 @@ class AuthorizationPolicy(PolicyBase):
|
|
|
8
11
|
|
|
9
12
|
@property
|
|
10
13
|
def allowed_to_sign_up_email_based_subscriptions(self):
|
|
14
|
+
# type: () -> Optional[bool]
|
|
15
|
+
"""Indicates whether a user can join the tenant by email validation."""
|
|
16
|
+
return self.properties.get("allowedToSignUpEmailBasedSubscriptions", None)
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
def allowed_to_use_sspr(self):
|
|
20
|
+
# type: () -> Optional[bool]
|
|
21
|
+
"""Indicates whether users can use the Self-Service Password Reset feature on the tenant."""
|
|
22
|
+
return self.properties.get("allowedToUseSSPR", None)
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def allow_email_verified_users_to_join_organization(self):
|
|
26
|
+
# type: () -> Optional[bool]
|
|
27
|
+
"""Indicates whether a user can join the tenant by email validation."""
|
|
28
|
+
return self.properties.get("allowEmailVerifiedUsersToJoinOrganization", None)
|
|
29
|
+
|
|
30
|
+
@property
|
|
31
|
+
def allow_invites_from(self):
|
|
32
|
+
# type: () -> Optional[str]
|
|
33
|
+
"""Indicates who can invite external users to the organization.
|
|
34
|
+
Possible values are: none, adminsAndGuestInviters, adminsGuestInvitersAndAllMembers, everyone.
|
|
35
|
+
everyone is the default setting for all cloud environments except US Government.
|
|
11
36
|
"""
|
|
12
|
-
|
|
13
|
-
|
|
37
|
+
return self.properties.get("allowInvitesFrom", None)
|
|
38
|
+
|
|
39
|
+
@property
|
|
40
|
+
def allow_user_consent_for_risky_apps(self):
|
|
41
|
+
# type: () -> Optional[bool]
|
|
42
|
+
"""Indicates whether user consent for risky apps is allowed.
|
|
43
|
+
We recommend keeping allowUserConsentForRiskyApps as false. Default value is false.
|
|
14
44
|
"""
|
|
15
|
-
return self.properties.get("
|
|
45
|
+
return self.properties.get("allowUserConsentForRiskyApps", None)
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def block_msol_powershell(self):
|
|
49
|
+
# type: () -> Optional[bool]
|
|
50
|
+
"""To disable the use of MSOL PowerShell, set this property to true. This also disables user-based access to
|
|
51
|
+
the legacy service endpoint used by MSOL PowerShell. This doesn't affect Microsoft Entra Connect
|
|
52
|
+
or Microsoft Graph.
|
|
53
|
+
"""
|
|
54
|
+
return self.properties.get("blockMsolPowerShell", None)
|
|
55
|
+
|
|
56
|
+
@property
|
|
57
|
+
def default_user_role_permissions(self):
|
|
58
|
+
# type: () -> Optional[DefaultUserRolePermissions]
|
|
59
|
+
"""Specifies certain customizable permissions for default user role."""
|
|
60
|
+
return self.properties.get(
|
|
61
|
+
"defaultUserRolePermissions", DefaultUserRolePermissions()
|
|
62
|
+
)
|
|
@@ -17,6 +17,7 @@ class PermissionGrantPolicy(PolicyBase):
|
|
|
17
17
|
|
|
18
18
|
@property
|
|
19
19
|
def excludes(self):
|
|
20
|
+
# type: () -> EntityCollection[PermissionGrantConditionSet]
|
|
20
21
|
"""
|
|
21
22
|
Condition sets which are excluded in this permission grant policy.
|
|
22
23
|
This navigation is automatically expanded on GET.
|
|
@@ -32,6 +33,7 @@ class PermissionGrantPolicy(PolicyBase):
|
|
|
32
33
|
|
|
33
34
|
@property
|
|
34
35
|
def includes(self):
|
|
36
|
+
# type: () -> EntityCollection[PermissionGrantConditionSet]
|
|
35
37
|
"""
|
|
36
38
|
Condition sets which are included in this permission grant policy.
|
|
37
39
|
This navigation is automatically expanded on GET.
|
|
@@ -9,6 +9,7 @@ from office365.directory.policies.authentication_strength import (
|
|
|
9
9
|
from office365.directory.policies.authorization import AuthorizationPolicy
|
|
10
10
|
from office365.directory.policies.conditional_access import ConditionalAccessPolicy
|
|
11
11
|
from office365.directory.policies.cross_tenant_access import CrossTenantAccessPolicy
|
|
12
|
+
from office365.directory.policies.device_registration import DeviceRegistrationPolicy
|
|
12
13
|
from office365.directory.policies.permission_grant import PermissionGrantPolicy
|
|
13
14
|
from office365.directory.policies.tenant_app_management import TenantAppManagementPolicy
|
|
14
15
|
from office365.entity import Entity
|
|
@@ -33,6 +34,17 @@ class PolicyRoot(Entity):
|
|
|
33
34
|
),
|
|
34
35
|
)
|
|
35
36
|
|
|
37
|
+
@property
|
|
38
|
+
def device_registration_policy(self):
|
|
39
|
+
""" """
|
|
40
|
+
return self.properties.get(
|
|
41
|
+
"deviceRegistrationPolicy",
|
|
42
|
+
DeviceRegistrationPolicy(
|
|
43
|
+
self.context,
|
|
44
|
+
ResourcePath("deviceRegistrationPolicy", self.resource_path),
|
|
45
|
+
),
|
|
46
|
+
)
|
|
47
|
+
|
|
36
48
|
def authentication_strength_policies(self):
|
|
37
49
|
# type: () -> EntityCollection[AuthenticationStrengthPolicy]
|
|
38
50
|
"""
|
|
@@ -147,6 +159,7 @@ class PolicyRoot(Entity):
|
|
|
147
159
|
"conditional_access_policies": self.conditional_access_policies,
|
|
148
160
|
"crossTenantAccessPolicy": self.cross_tenant_access_policy,
|
|
149
161
|
"defaultAppManagementPolicy": self.default_app_management_policy,
|
|
162
|
+
"deviceRegistrationPolicy": self.device_registration_policy,
|
|
150
163
|
"permissionGrantPolicies": self.permission_grant_policies,
|
|
151
164
|
}
|
|
152
165
|
default_value = property_mapping.get(name, None)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
1
3
|
from office365.entity import Entity
|
|
2
4
|
|
|
3
5
|
|
|
@@ -12,14 +14,12 @@ class ProfilePhoto(Entity):
|
|
|
12
14
|
|
|
13
15
|
@property
|
|
14
16
|
def height(self):
|
|
15
|
-
|
|
16
|
-
The height of the photo.
|
|
17
|
-
"""
|
|
17
|
+
# type: () -> Optional[int]
|
|
18
|
+
"""The height of the photo."""
|
|
18
19
|
return self.properties.get("height", None)
|
|
19
20
|
|
|
20
21
|
@property
|
|
21
22
|
def width(self):
|
|
22
|
-
|
|
23
|
-
The width of the photo.
|
|
24
|
-
"""
|
|
23
|
+
# type: () -> Optional[int]
|
|
24
|
+
"""The width of the photo."""
|
|
25
25
|
return self.properties.get("width", None)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
1
3
|
from office365.entity import Entity
|
|
2
4
|
from office365.entity_collection import EntityCollection
|
|
3
5
|
from office365.runtime.paths.resource_path import ResourcePath
|
|
@@ -27,8 +29,6 @@ class RiskyUser(Entity):
|
|
|
27
29
|
|
|
28
30
|
@property
|
|
29
31
|
def user_principal_name(self):
|
|
30
|
-
|
|
31
|
-
Risky user principal name.
|
|
32
|
-
:rtype: str or None
|
|
33
|
-
"""
|
|
32
|
+
# type: () -> Optional[str]
|
|
33
|
+
"""Risky user principal name."""
|
|
34
34
|
return self.properties.get("userPrincipalName", None)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from office365.runtime.client_value import ClientValue
|
|
2
|
+
from office365.runtime.types.collections import StringCollection
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ResourceAction(ClientValue):
|
|
6
|
+
""" """
|
|
7
|
+
|
|
8
|
+
def __init__(self):
|
|
9
|
+
self.allowedResourceActions = StringCollection()
|
|
10
|
+
self.notAllowedResourceActions = StringCollection()
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from office365.directory.rolemanagement.resource_action import ResourceAction
|
|
2
|
+
from office365.runtime.client_value import ClientValue
|
|
3
|
+
from office365.runtime.client_value_collection import ClientValueCollection
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class RolePermission(ClientValue):
|
|
7
|
+
""" """
|
|
8
|
+
|
|
9
|
+
def __init__(self, resourceActions=None):
|
|
10
|
+
self.resourceActions = ClientValueCollection(ResourceAction, resourceActions)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
1
3
|
from office365.directory.security.alerts.evidence import AlertEvidence
|
|
2
4
|
from office365.directory.security.alerts.history_state import AlertHistoryState
|
|
3
5
|
from office365.entity import Entity
|
|
@@ -11,17 +13,13 @@ class Alert(Entity):
|
|
|
11
13
|
|
|
12
14
|
@property
|
|
13
15
|
def actor_display_name(self):
|
|
14
|
-
|
|
15
|
-
The adversary or activity group that is associated with this alert.
|
|
16
|
-
:rtype: str
|
|
17
|
-
"""
|
|
16
|
+
# type: () -> Optional[str]
|
|
17
|
+
"""The adversary or activity group that is associated with this alert."""
|
|
18
18
|
return self.properties.get("actorDisplayName", None)
|
|
19
19
|
|
|
20
20
|
@property
|
|
21
21
|
def alert_policy_id(self):
|
|
22
|
-
|
|
23
|
-
:rtype: str
|
|
24
|
-
"""
|
|
22
|
+
# type: () -> Optional[str]
|
|
25
23
|
return self.properties.get("alertPolicyId", None)
|
|
26
24
|
|
|
27
25
|
@property
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
from office365.directory.security.attacksimulations.report_overview import (
|
|
2
2
|
SimulationReportOverview,
|
|
3
3
|
)
|
|
4
|
+
from office365.directory.security.attacksimulations.users.details import (
|
|
5
|
+
UserSimulationDetails,
|
|
6
|
+
)
|
|
4
7
|
from office365.runtime.client_value import ClientValue
|
|
8
|
+
from office365.runtime.client_value_collection import ClientValueCollection
|
|
5
9
|
|
|
6
10
|
|
|
7
11
|
class SimulationReport(ClientValue):
|
|
@@ -10,8 +14,11 @@ class SimulationReport(ClientValue):
|
|
|
10
14
|
participated in the campaign.
|
|
11
15
|
"""
|
|
12
16
|
|
|
13
|
-
def __init__(self, overview=SimulationReportOverview()):
|
|
17
|
+
def __init__(self, overview=SimulationReportOverview(), simulationUsers=None):
|
|
14
18
|
"""
|
|
15
19
|
:param SimulationReportOverview overview: Overview of an attack simulation and training campaign.
|
|
16
20
|
"""
|
|
17
21
|
self.overview = overview
|
|
22
|
+
self.simulationUsers = ClientValueCollection(
|
|
23
|
+
UserSimulationDetails, simulationUsers
|
|
24
|
+
)
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
from office365.directory.security.attacksimulations.automation import (
|
|
2
2
|
SimulationAutomation,
|
|
3
3
|
)
|
|
4
|
+
from office365.directory.security.attacksimulations.landing_page import LandingPage
|
|
5
|
+
from office365.directory.security.attacksimulations.operation import (
|
|
6
|
+
AttackSimulationOperation,
|
|
7
|
+
)
|
|
4
8
|
from office365.directory.security.attacksimulations.simulation import Simulation
|
|
5
9
|
from office365.entity import Entity
|
|
6
10
|
from office365.entity_collection import EntityCollection
|
|
@@ -11,8 +15,35 @@ class AttackSimulationRoot(Entity):
|
|
|
11
15
|
"""Represents an abstract type that provides the ability to launch a realistic phishing attack that organizations
|
|
12
16
|
can learn from."""
|
|
13
17
|
|
|
18
|
+
@property
|
|
19
|
+
def landing_pages(self):
|
|
20
|
+
# type: () -> EntityCollection[LandingPage]
|
|
21
|
+
"""Represents an attack simulation training landing page."""
|
|
22
|
+
return self.properties.get(
|
|
23
|
+
"landingPages",
|
|
24
|
+
EntityCollection(
|
|
25
|
+
self.context,
|
|
26
|
+
LandingPage,
|
|
27
|
+
ResourcePath("landingPages", self.resource_path),
|
|
28
|
+
),
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def operations(self):
|
|
33
|
+
# type: () -> EntityCollection[AttackSimulationOperation]
|
|
34
|
+
"""Represents an attack simulation training operation."""
|
|
35
|
+
return self.properties.get(
|
|
36
|
+
"operations",
|
|
37
|
+
EntityCollection(
|
|
38
|
+
self.context,
|
|
39
|
+
AttackSimulationOperation,
|
|
40
|
+
ResourcePath("operations", self.resource_path),
|
|
41
|
+
),
|
|
42
|
+
)
|
|
43
|
+
|
|
14
44
|
@property
|
|
15
45
|
def simulations(self):
|
|
46
|
+
# type: () -> EntityCollection[Simulation]
|
|
16
47
|
"""Represents an attack simulation training campaign in a tenant."""
|
|
17
48
|
return self.properties.get(
|
|
18
49
|
"simulations",
|
|
@@ -25,6 +56,7 @@ class AttackSimulationRoot(Entity):
|
|
|
25
56
|
|
|
26
57
|
@property
|
|
27
58
|
def simulation_automations(self):
|
|
59
|
+
# type: () -> EntityCollection[SimulationAutomation]
|
|
28
60
|
"""Represents simulation automation created to run on a tenant."""
|
|
29
61
|
return self.properties.get(
|
|
30
62
|
"simulationAutomations",
|
|
@@ -38,6 +70,7 @@ class AttackSimulationRoot(Entity):
|
|
|
38
70
|
def get_property(self, name, default_value=None):
|
|
39
71
|
if default_value is None:
|
|
40
72
|
property_mapping = {
|
|
73
|
+
"landingPages": self.landing_pages,
|
|
41
74
|
"simulationAutomations": self.simulation_automations,
|
|
42
75
|
}
|
|
43
76
|
default_value = property_mapping.get(name, None)
|
|
File without changes
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
|
+
from typing import Optional
|
|
2
3
|
|
|
3
4
|
from office365.directory.security.alerts.alert import Alert
|
|
4
5
|
from office365.directory.security.alerts.comment import AlertComment
|
|
@@ -23,37 +24,31 @@ class Incident(Entity):
|
|
|
23
24
|
|
|
24
25
|
@property
|
|
25
26
|
def assigned_to(self):
|
|
26
|
-
|
|
27
|
-
Owner of the incident, or null if no owner is assigned. Free editable text.
|
|
28
|
-
:rtype: str or None
|
|
29
|
-
"""
|
|
27
|
+
# type: () -> Optional[str]
|
|
28
|
+
"""Owner of the incident, or null if no owner is assigned. Free editable text."""
|
|
30
29
|
return self.properties.get("assignedTo", None)
|
|
31
30
|
|
|
32
31
|
@property
|
|
33
32
|
def classification(self):
|
|
34
|
-
|
|
35
|
-
The specification for the incident.
|
|
33
|
+
# type: () -> Optional[str]
|
|
34
|
+
"""The specification for the incident.
|
|
36
35
|
Possible values are: unknown, falsePositive, truePositive, informationalExpectedActivity, unknownFutureValue.
|
|
37
|
-
:rtype: str or None
|
|
38
36
|
"""
|
|
39
37
|
return self.properties.get("classification", None)
|
|
40
38
|
|
|
41
39
|
@property
|
|
42
40
|
def comments(self):
|
|
43
|
-
"""
|
|
44
|
-
Array of comments created by the Security Operations (SecOps) team when the incident is managed.
|
|
45
|
-
"""
|
|
41
|
+
"""Array of comments created by the Security Operations (SecOps) team when the incident is managed."""
|
|
46
42
|
return self.properties.get("comments", ClientValueCollection(AlertComment))
|
|
47
43
|
|
|
48
44
|
@property
|
|
49
45
|
def created_datetime(self):
|
|
50
|
-
"""
|
|
51
|
-
Time when the incident was first created.
|
|
52
|
-
"""
|
|
46
|
+
"""Time when the incident was first created."""
|
|
53
47
|
return self.properties("createdDateTime", datetime.min)
|
|
54
48
|
|
|
55
49
|
@property
|
|
56
50
|
def alerts(self):
|
|
51
|
+
# type: () -> EntityCollection[Alert]
|
|
57
52
|
"""The list of related alerts. Supports $expand."""
|
|
58
53
|
return self.properties.get(
|
|
59
54
|
"alerts",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from office365.directory.security.alerts.alert import Alert
|
|
2
2
|
from office365.directory.security.attacksimulations.root import AttackSimulationRoot
|
|
3
3
|
from office365.directory.security.cases.root import CasesRoot
|
|
4
|
+
from office365.directory.security.hunting_query_results import HuntingQueryResults
|
|
4
5
|
from office365.directory.security.incidents.incident import Incident
|
|
5
6
|
from office365.directory.security.threatintelligence.threat_intelligence import (
|
|
6
7
|
ThreatIntelligence,
|
|
@@ -8,13 +9,30 @@ from office365.directory.security.threatintelligence.threat_intelligence import
|
|
|
8
9
|
from office365.directory.security.triggers.root import TriggersRoot
|
|
9
10
|
from office365.entity import Entity
|
|
10
11
|
from office365.entity_collection import EntityCollection
|
|
12
|
+
from office365.runtime.client_result import ClientResult
|
|
11
13
|
from office365.runtime.paths.resource_path import ResourcePath
|
|
14
|
+
from office365.runtime.queries.service_operation import ServiceOperationQuery
|
|
12
15
|
|
|
13
16
|
|
|
14
17
|
class Security(Entity):
|
|
15
18
|
"""The security resource is the entry point for the Security object model. It returns a singleton security resource.
|
|
16
19
|
It doesn't contain any usable properties."""
|
|
17
20
|
|
|
21
|
+
def run_hunting_query(self, query):
|
|
22
|
+
"""
|
|
23
|
+
Queries a specified set of event, activity, or entity data supported by Microsoft 365 Defender
|
|
24
|
+
to proactively look for specific threats in your environment.
|
|
25
|
+
:param str query: The hunting query in Kusto Query Language (KQL). For more information on KQL syntax,see KQL
|
|
26
|
+
quick reference: https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/kql-quick-reference
|
|
27
|
+
"""
|
|
28
|
+
return_type = ClientResult(self.context, HuntingQueryResults())
|
|
29
|
+
payload = {"Query": query}
|
|
30
|
+
qry = ServiceOperationQuery(
|
|
31
|
+
self, "runHuntingQuery", None, payload, None, return_type
|
|
32
|
+
)
|
|
33
|
+
self.context.add_query(qry)
|
|
34
|
+
return return_type
|
|
35
|
+
|
|
18
36
|
@property
|
|
19
37
|
def alerts(self):
|
|
20
38
|
# type: () -> EntityCollection[Alert]
|
|
@@ -28,9 +46,7 @@ class Security(Entity):
|
|
|
28
46
|
@property
|
|
29
47
|
def alerts_v2(self):
|
|
30
48
|
# type: () -> EntityCollection[Alert]
|
|
31
|
-
"""
|
|
32
|
-
A collection of alerts in Microsoft 365 Defender.
|
|
33
|
-
"""
|
|
49
|
+
"""A collection of alerts in Microsoft 365 Defender."""
|
|
34
50
|
return self.properties.get(
|
|
35
51
|
"alerts_v2",
|
|
36
52
|
EntityCollection(
|
|
@@ -69,6 +85,7 @@ class Security(Entity):
|
|
|
69
85
|
|
|
70
86
|
@property
|
|
71
87
|
def triggers(self):
|
|
88
|
+
""""""
|
|
72
89
|
return self.properties.get(
|
|
73
90
|
"triggers",
|
|
74
91
|
TriggersRoot(self.context, ResourcePath("triggers", self.resource_path)),
|