Office365-REST-Python-Client 2.4.2__py3-none-any.whl → 2.4.4__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.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/METADATA +65 -31
- {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/RECORD +401 -259
- office365/base_item.py +27 -5
- office365/booking/business.py +7 -0
- office365/booking/currency.py +5 -0
- office365/booking/solutions_root.py +32 -0
- office365/communications/calls/invitation_participant_info.py +17 -1
- office365/communications/calls/options.py +9 -0
- office365/communications/onlinemeetings/provider_type.py +3 -0
- office365/communications/presences/presence.py +14 -0
- office365/communications/presences/status_message.py +12 -0
- office365/directory/administrative_unit.py +22 -0
- office365/directory/applications/collection.py +2 -1
- office365/directory/applications/roles/assignment.py +45 -5
- office365/directory/applications/roles/assignment_collection.py +8 -0
- office365/directory/applications/roles/role.py +6 -1
- office365/directory/audit/signins/activity.py +31 -0
- office365/directory/audit/signins/location.py +17 -0
- office365/directory/audit/signins/signin.py +33 -0
- office365/directory/authentication/authentication.py +9 -0
- office365/directory/authentication/methods/details.py +25 -0
- office365/directory/authentication/methods/email.py +16 -0
- office365/directory/authentication/methods/root.py +27 -0
- office365/directory/certificates/authority.py +6 -1
- office365/directory/extensions/extended_property.py +8 -1
- office365/directory/extensions/extension.py +1 -1
- office365/directory/extensions/extension_property.py +0 -3
- office365/directory/extensions/open_type.py +8 -0
- office365/directory/groups/collection.py +2 -4
- office365/directory/groups/group.py +18 -4
- office365/directory/identities/governance.py +2 -0
- office365/directory/identities/object_identity.py +3 -3
- office365/directory/insights/resource_reference.py +15 -0
- office365/directory/insights/shared.py +36 -0
- office365/directory/insights/sharing_detail.py +11 -0
- office365/directory/insights/trending.py +8 -0
- office365/directory/insights/usage_details.py +16 -0
- office365/directory/insights/used.py +30 -0
- office365/directory/invitations/invitation.py +33 -1
- office365/directory/licenses/assigned_plan.py +19 -1
- office365/directory/licenses/assignment_state.py +5 -0
- office365/directory/licenses/service_plan_info.py +4 -0
- office365/directory/licenses/subscribed_sku.py +41 -0
- office365/directory/licenses/units_detail.py +11 -0
- office365/directory/object.py +3 -1
- office365/directory/object_collection.py +3 -4
- office365/directory/password_credential.py +5 -1
- office365/directory/permissions/email_identity.py +5 -0
- office365/directory/permissions/grants/condition_set.py +26 -0
- office365/directory/permissions/grants/resource_specific.py +21 -0
- office365/directory/policies/authentication_flows.py +9 -0
- office365/directory/policies/authentication_strength.py +10 -0
- office365/directory/policies/authorization.py +8 -0
- office365/directory/policies/cross_tenant_access.py +5 -0
- office365/directory/policies/root.py +35 -2
- office365/directory/protection/information.py +5 -0
- office365/directory/protection/risk_detection.py +11 -0
- office365/directory/protection/riskyusers/activity.py +5 -0
- office365/directory/protection/riskyusers/collection.py +32 -0
- office365/directory/protection/riskyusers/history_item.py +20 -0
- office365/directory/protection/riskyusers/risky_user.py +26 -0
- office365/directory/protection/root.py +31 -0
- office365/directory/rolemanagement/application.py +35 -0
- office365/directory/{roles → rolemanagement}/management.py +8 -1
- office365/directory/{roles → rolemanagement}/role.py +14 -0
- office365/directory/{roles → rolemanagement}/template.py +8 -0
- office365/directory/rolemanagement/unified_role_assignment.py +45 -0
- office365/directory/rolemanagement/unified_role_definition.py +6 -0
- office365/directory/security/alerts/alert.py +21 -0
- office365/directory/security/alerts/history_state.py +5 -0
- office365/directory/security/attacksimulations/automation.py +21 -0
- office365/directory/security/attacksimulations/automation_run.py +5 -0
- office365/directory/security/attacksimulations/repeat_offender.py +6 -0
- office365/directory/security/attacksimulations/root.py +26 -0
- office365/directory/security/attacksimulations/simulation.py +17 -0
- office365/directory/security/cases/__init__.py +0 -0
- office365/directory/security/cases/ediscovery.py +6 -0
- office365/directory/security/cases/root.py +22 -0
- office365/directory/security/incidents/incident.py +67 -0
- office365/directory/security/security.py +10 -1
- office365/directory/serviceprincipals/service_principal.py +89 -4
- office365/directory/synchronization/__init__.py +0 -0
- office365/directory/synchronization/job.py +16 -0
- office365/directory/synchronization/progress.py +5 -0
- office365/directory/synchronization/status.py +13 -0
- office365/directory/synchronization/synchronization.py +24 -0
- office365/directory/tenant_information.py +17 -0
- office365/directory/tenant_relationship.py +21 -0
- office365/directory/users/activities/activity.py +45 -1
- office365/directory/users/collection.py +8 -0
- office365/directory/users/password_profile.py +18 -2
- office365/directory/users/user.py +254 -29
- office365/entity.py +3 -3
- office365/graph_client.py +64 -12
- office365/intune/audit/actor.py +5 -0
- office365/intune/audit/event.py +21 -24
- office365/intune/audit/event_collection.py +26 -0
- office365/intune/audit/property.py +5 -0
- office365/intune/audit/resource.py +11 -0
- office365/intune/brand.py +6 -0
- office365/intune/devices/compliance/__init__.py +0 -0
- office365/intune/devices/compliance/policy.py +6 -0
- office365/intune/devices/compliance/policy_state.py +5 -0
- office365/intune/devices/data.py +5 -0
- office365/intune/devices/detail.py +10 -0
- office365/intune/devices/enrollment/__init__.py +0 -0
- office365/intune/devices/enrollment/configuration.py +25 -0
- office365/intune/devices/enrollment/configuration_assignment.py +5 -0
- office365/intune/devices/enrollment/limit_configuration.py +5 -0
- office365/intune/devices/managed.py +44 -3
- office365/intune/devices/management/__init__.py +0 -0
- office365/intune/devices/management/management.py +69 -0
- office365/intune/devices/management/reports/__init__.py +0 -0
- office365/intune/devices/management/reports/reports.py +5 -0
- office365/intune/devices/management/settings.py +18 -0
- office365/intune/organizations/branding.py +15 -0
- office365/intune/organizations/organization.py +14 -0
- office365/intune/printing/__init__.py +0 -0
- office365/intune/printing/base.py +11 -0
- office365/intune/printing/capabilities.py +5 -0
- office365/intune/printing/connectors/__init__.py +0 -0
- office365/intune/printing/connectors/connector.py +6 -0
- office365/intune/printing/operations/__init__.py +0 -0
- office365/intune/printing/print.py +24 -0
- office365/intune/printing/printer.py +6 -0
- office365/intune/printing/services/__init__.py +0 -0
- office365/intune/printing/services/endpoint.py +5 -0
- office365/intune/printing/services/service.py +17 -0
- office365/intune/printing/share.py +5 -0
- office365/intune/printing/shares/__init__.py +0 -0
- office365/intune/printing/taskdefinitions/__init__.py +0 -0
- office365/intune/provisioned_plan.py +5 -1
- office365/intune/servicecommunications/__init__.py +0 -0
- office365/intune/servicecommunications/announcement.py +39 -0
- office365/intune/servicecommunications/announcement_base.py +5 -0
- office365/intune/servicecommunications/health/__init__.py +0 -0
- office365/intune/servicecommunications/health/health.py +7 -0
- office365/intune/servicecommunications/issues/__init__.py +0 -0
- office365/intune/servicecommunications/issues/issue.py +29 -0
- office365/intune/servicecommunications/messages/__init__.py +0 -0
- office365/intune/servicecommunications/messages/update.py +10 -0
- office365/intune/termsandconditions/__init__.py +0 -0
- office365/intune/vpp_token.py +10 -0
- office365/onedrive/admin.py +16 -0
- office365/onedrive/columns/content_approval_status.py +5 -0
- office365/onedrive/columns/datetime.py +15 -0
- office365/onedrive/columns/default_value.py +4 -0
- office365/onedrive/columns/definition.py +49 -3
- office365/onedrive/columns/definition_collection.py +17 -6
- office365/onedrive/columns/lookup.py +5 -1
- office365/onedrive/columns/types.py +13 -0
- office365/onedrive/contenttypes/content_type.py +8 -0
- office365/onedrive/driveitems/audio.py +12 -1
- office365/onedrive/driveitems/driveItem.py +147 -69
- office365/onedrive/driveitems/image.py +8 -1
- office365/onedrive/driveitems/item_preview_info.py +20 -2
- office365/onedrive/driveitems/remote_item.py +19 -4
- office365/onedrive/drives/drive.py +7 -1
- office365/onedrive/drives/quota.py +18 -0
- office365/onedrive/drives/recipient.py +4 -0
- office365/onedrive/files/system_info.py +8 -6
- office365/onedrive/folders/folder.py +3 -3
- office365/onedrive/internal/paths/children.py +1 -4
- office365/onedrive/internal/paths/shared.py +7 -2
- office365/onedrive/lists/collection.py +12 -6
- office365/onedrive/lists/list.py +13 -5
- office365/onedrive/operations/long_running.py +7 -0
- office365/onedrive/operations/pending.py +13 -0
- office365/onedrive/operations/pending_content_update.py +5 -0
- office365/onedrive/permissions/collection.py +5 -6
- office365/onedrive/permissions/sharing_link.py +16 -1
- office365/onedrive/sensitivitylabels/__init__.py +0 -0
- office365/onedrive/sensitivitylabels/assignment.py +17 -0
- office365/onedrive/sensitivitylabels/assignment_method.py +4 -0
- office365/onedrive/sensitivitylabels/extract_result.py +13 -0
- office365/onedrive/sharepoint_settings.py +25 -0
- office365/onedrive/sites/sites_with_root.py +11 -1
- office365/onedrive/termstore/groups/collection.py +1 -1
- office365/onedrive/termstore/groups/group.py +1 -0
- office365/onedrive/termstore/sets/collection.py +1 -1
- office365/onenote/operations/operation.py +10 -1
- office365/onenote/resources/resource.py +1 -0
- office365/outlook/calendar/calendar.py +116 -6
- office365/outlook/calendar/dateTimeTimeZone.py +4 -0
- office365/outlook/calendar/email_address.py +7 -0
- office365/outlook/calendar/events/event.py +0 -4
- office365/outlook/calendar/events/reminder.py +22 -3
- office365/outlook/calendar/group.py +0 -2
- office365/outlook/calendar/location_constraint.py +16 -1
- office365/outlook/calendar/meetingtimes/activity_domain.py +10 -0
- office365/outlook/calendar/meetingtimes/suggestion.py +1 -1
- office365/outlook/calendar/meetingtimes/time_constraint.py +18 -0
- office365/outlook/calendar/permissions/__init__.py +0 -0
- office365/outlook/calendar/permissions/collection.py +24 -0
- office365/outlook/calendar/{permission.py → permissions/permission.py} +35 -2
- office365/outlook/calendar/place.py +7 -0
- office365/outlook/calendar/role_type.py +17 -0
- office365/outlook/calendar/schedule/information.py +5 -4
- office365/outlook/calendar/schedule/item.py +20 -1
- office365/outlook/calendar/sharing_message.py +2 -2
- office365/outlook/calendar/time_zone_base.py +3 -0
- office365/outlook/calendar/working_hours.py +17 -1
- office365/outlook/contacts/collection.py +39 -0
- office365/outlook/contacts/contact.py +21 -11
- office365/outlook/geo_coordinates.py +20 -0
- office365/outlook/item.py +5 -4
- office365/outlook/locale_info.py +3 -0
- office365/outlook/mail/automatic_replies_setting.py +14 -0
- office365/outlook/mail/folders/folder.py +52 -3
- office365/outlook/mail/folders/search.py +11 -0
- office365/outlook/mail/importance.py +1 -0
- office365/outlook/mail/item_body.py +3 -0
- office365/outlook/mail/location.py +27 -2
- office365/outlook/mail/location_constraint_item.py +5 -0
- office365/outlook/mail/mailbox_settings.py +13 -1
- office365/outlook/mail/messages/collection.py +7 -0
- office365/outlook/mail/messages/followup_flag.py +21 -0
- office365/outlook/mail/messages/internet_header.py +16 -0
- office365/outlook/mail/messages/message.py +184 -6
- office365/outlook/mail/messages/rules/__init__.py +0 -0
- office365/outlook/mail/messages/rules/actions.py +38 -0
- office365/outlook/mail/messages/rules/predicates.py +5 -0
- office365/outlook/mail/messages/rules/rule.py +32 -0
- office365/outlook/mail/patterned_recurrence.py +14 -1
- office365/outlook/mail/physical_address.py +5 -1
- office365/outlook/mail/recipient.py +3 -0
- office365/outlook/mail/recurrence_pattern.py +18 -1
- office365/outlook/mail/recurrence_range.py +16 -2
- office365/outlook/timezone_information.py +3 -0
- office365/reports/root.py +28 -1
- office365/reports/security/__init__.py +0 -0
- office365/reports/security/root.py +21 -0
- office365/reports/userregistration/__init__.py +0 -0
- office365/reports/userregistration/method_count.py +17 -0
- office365/reports/userregistration/method_summary.py +21 -0
- office365/runtime/auth/authentication_context.py +123 -25
- office365/runtime/auth/client_credential.py +2 -2
- office365/runtime/auth/providers/acs_token_provider.py +6 -3
- office365/runtime/auth/providers/saml_token_provider.py +10 -7
- office365/runtime/auth/token_response.py +3 -3
- office365/runtime/client_object_collection.py +12 -7
- office365/runtime/client_result.py +9 -0
- office365/runtime/client_runtime_context.py +10 -8
- office365/runtime/http/request_options.py +2 -1
- office365/runtime/odata/request.py +4 -4
- office365/runtime/paths/appid.py +2 -1
- office365/runtime/paths/entity.py +2 -2
- office365/{sharepoint/internal/paths/entity.py → runtime/paths/key.py} +5 -3
- office365/runtime/paths/resource_path.py +3 -0
- office365/runtime/types/event_handler.py +6 -0
- office365/search/external/__init__.py +0 -0
- office365/search/external/configuration.py +8 -0
- office365/search/external/connection.py +27 -0
- office365/{external → search/external}/external.py +1 -1
- office365/search/external/search_settings.py +5 -0
- office365/search/query.py +3 -1
- office365/search/request.py +3 -1
- office365/search/sharepoint_onedrive_options.py +3 -0
- office365/search/sort_property.py +9 -0
- office365/sharepoint/activities/client_request.py +4 -1
- office365/sharepoint/activities/logger.py +25 -0
- office365/sharepoint/activities/revision_info.py +9 -0
- office365/sharepoint/addtoonedrive/mount_point.py +25 -0
- office365/sharepoint/addtoonedrive/mounted_folder_info.py +5 -0
- office365/sharepoint/alerts/alert.py +31 -0
- office365/sharepoint/apps/license_collection.py +1 -2
- office365/sharepoint/changes/item.py +14 -0
- office365/sharepoint/client_context.py +91 -30
- office365/sharepoint/clientsidecomponent/component_context_info.py +7 -0
- office365/sharepoint/clientsidecomponent/identifier.py +3 -0
- office365/sharepoint/compliance/tag_info.py +17 -0
- office365/sharepoint/contenttypes/collection.py +6 -7
- office365/sharepoint/contenttypes/content_type.py +49 -1
- office365/sharepoint/contenttypes/fieldlinks/collection.py +5 -6
- office365/sharepoint/features/known_list.py +2 -0
- office365/sharepoint/fields/collection.py +70 -39
- office365/sharepoint/fields/computed.py +5 -2
- office365/sharepoint/fields/creation_information.py +5 -4
- office365/sharepoint/fields/field.py +73 -15
- office365/sharepoint/fields/user.py +3 -3
- office365/sharepoint/files/checked_out_file.py +3 -2
- office365/sharepoint/files/file.py +9 -4
- office365/sharepoint/files/versions/version.py +7 -9
- office365/sharepoint/folders/collection.py +2 -2
- office365/sharepoint/folders/coloring.py +39 -0
- office365/sharepoint/folders/coloring_information.py +15 -0
- office365/sharepoint/folders/folder.py +21 -10
- office365/sharepoint/forms/customization.py +8 -0
- office365/sharepoint/listitems/listitem.py +29 -10
- office365/sharepoint/lists/bloom_filter.py +0 -1
- office365/sharepoint/lists/creation_information.py +18 -4
- office365/sharepoint/lists/list.py +203 -27
- office365/sharepoint/lists/render_data_parameters.py +21 -1
- office365/sharepoint/lists/template_type.py +10 -0
- office365/sharepoint/navigation/configured_metadata_items.py +25 -1
- office365/sharepoint/navigation/metadata_settings.py +6 -4
- office365/sharepoint/permissions/irm/file_settings.py +43 -0
- office365/sharepoint/permissions/securable_object.py +5 -6
- office365/sharepoint/portal/sites/manager.py +5 -6
- office365/sharepoint/portal/userprofiles/documents_shared_with_group.py +3 -0
- office365/sharepoint/publishing/base_custom_property.py +8 -0
- office365/sharepoint/publishing/navigation/structural_navigation_cache_wrapper.py +8 -0
- office365/sharepoint/publishing/pagecopywithassets/__init__.py +0 -0
- office365/sharepoint/publishing/pagecopywithassets/response.py +8 -0
- office365/sharepoint/publishing/pages/campaign_publication.py +7 -0
- office365/sharepoint/publishing/pages/collection.py +1 -1
- office365/sharepoint/publishing/pages/page.py +4 -1
- office365/sharepoint/publishing/pages/reposts/metadata.py +8 -0
- office365/sharepoint/publishing/personmagazine/person_magazine.py +4 -1
- office365/sharepoint/search/administration/tenant_crawl_versions_info_provider.py +8 -1
- office365/sharepoint/search/query/auto_completion_match.py +3 -0
- office365/sharepoint/search/query/property_value.py +18 -0
- office365/sharepoint/search/request.py +16 -2
- office365/sharepoint/sharing/abilities.py +22 -0
- office365/sharepoint/sharing/direct_abilities.py +27 -0
- office365/sharepoint/sharing/link_abilities.py +9 -1
- office365/sharepoint/sharing/links/data.py +26 -1
- office365/sharepoint/sharing/links/info.py +1 -1
- office365/sharepoint/sharing/links/partial_success_response.py +5 -0
- office365/sharepoint/sharing/links/share_settings.py +24 -1
- office365/sharepoint/sharing/object_sharing_information.py +65 -2
- office365/sharepoint/sharing/object_sharing_information_user.py +9 -0
- office365/sharepoint/sharing/object_sharing_settings.py +17 -4
- office365/sharepoint/sharing/principal.py +10 -0
- office365/sharepoint/sharing/securable_object_extensions.py +1 -17
- office365/sharepoint/sharing/site_sharing_report_helper.py +2 -1
- office365/sharepoint/sharing/user_sharing_result.py +18 -8
- office365/sharepoint/sitehealth/result.py +10 -0
- office365/sharepoint/sites/language.py +11 -1
- office365/sharepoint/sites/language_collection.py +1 -0
- office365/sharepoint/sites/site.py +42 -7
- office365/sharepoint/taxonomy/create_xml_parameters.py +22 -15
- office365/sharepoint/taxonomy/field.py +10 -8
- office365/sharepoint/taxonomy/groups/collection.py +8 -1
- office365/sharepoint/taxonomy/groups/group.py +26 -0
- office365/sharepoint/taxonomy/sets/collection.py +15 -0
- office365/sharepoint/taxonomy/sets/name.py +23 -0
- office365/sharepoint/taxonomy/sets/set.py +16 -1
- office365/sharepoint/taxonomy/stores/store.py +0 -8
- office365/sharepoint/tenant/administration/audit/search_request_status.py +8 -0
- office365/sharepoint/tenant/administration/deny_add_and_customize_pages_status.py +3 -0
- office365/sharepoint/tenant/administration/hubsites/permission.py +10 -0
- office365/sharepoint/tenant/administration/sites/properties.py +12 -10
- office365/sharepoint/tenant/administration/tenant.py +2 -1
- office365/sharepoint/tenant/apps/information.py +3 -1
- office365/sharepoint/tenant/management/office365_tenant.py +14 -11
- office365/sharepoint/types/resource_path.py +3 -1
- office365/sharepoint/userprofiles/people_manager.py +0 -2
- office365/sharepoint/userprofiles/sharedwithme/document.py +16 -0
- office365/sharepoint/userprofiles/sharedwithme/document_user.py +12 -0
- office365/sharepoint/userprofiles/sharedwithme/item_collection.py +41 -0
- office365/sharepoint/userprofiles/sharedwithme/items.py +18 -1
- office365/sharepoint/viva/site_manager.py +14 -0
- office365/sharepoint/webhooks/subscription_collection.py +5 -6
- office365/sharepoint/webparts/definition.py +1 -1
- office365/sharepoint/webparts/webpart.py +18 -4
- office365/sharepoint/webs/context_web_information.py +2 -4
- office365/sharepoint/webs/web.py +31 -12
- office365/sharepoint/workflowservices/manager.py +0 -2
- office365/subscriptions/collection.py +42 -0
- office365/subscriptions/subscription.py +120 -2
- office365/teams/apps/catalog.py +23 -0
- office365/teams/associated_info.py +12 -0
- office365/teams/channels/channel.py +2 -3
- office365/teams/channels/collection.py +1 -1
- office365/teams/channels/iIdentity.py +5 -0
- office365/teams/chats/chat.py +12 -2
- office365/teams/chats/collection.py +1 -2
- office365/teams/chats/messages/__init__.py +0 -0
- office365/teams/chats/messages/info.py +14 -0
- office365/teams/chats/{message.py → messages/message.py} +18 -3
- office365/teams/info.py +20 -0
- office365/teams/members/aad_user_conversation.py +2 -2
- office365/teams/members/conversation_collection.py +3 -3
- office365/teams/schedule/change_request.py +4 -2
- office365/teams/schedule/change_tracked_entity.py +11 -2
- office365/teams/summary.py +15 -0
- office365/teams/tabs/configuration.py +12 -1
- office365/teams/tabs/tab.py +0 -1
- office365/teams/team.py +34 -1
- office365/teams/teamwork/__init__.py +0 -0
- office365/teams/teamwork/activity_topic.py +5 -0
- office365/teams/teamwork/tags/__init__.py +0 -0
- office365/teams/teamwork/tags/identity.py +6 -0
- office365/teams/teamwork/tags/member.py +5 -0
- office365/teams/teamwork/tags/tag.py +15 -0
- office365/{directory/security/cases_root.py → teams/viva/employee_experience_user.py} +1 -1
- office365/todo/attachments/session.py +34 -0
- office365/todo/linked_resource.py +10 -1
- office365/todo/tasks/task.py +4 -0
- office365/directory/identities/protection_root.py +0 -5
- office365/directory/rbac/application.py +0 -18
- office365/directory/rbac/unified_role_assignment.py +0 -8
- office365/external/connection.py +0 -5
- office365/intune/devices/management.py +0 -35
- office365/onedrive/internal/queries/download_content.py +0 -26
- office365/onedrive/internal/queries/upload_content.py +0 -23
- office365/outlook/mail/messages/message_rule.py +0 -15
- office365/runtime/auth/providers/oauth_token_provider.py +0 -25
- office365/teams/team_info.py +0 -6
- {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/LICENSE +0 -0
- {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/WHEEL +0 -0
- {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/top_level.txt +0 -0
- /office365/{directory/rbac → booking}/__init__.py +0 -0
- /office365/directory/{roles → protection}/__init__.py +0 -0
- /office365/{external → directory/protection/riskyusers}/__init__.py +0 -0
- /office365/{teams/messages → directory/rolemanagement}/__init__.py +0 -0
- /office365/outlook/calendar/{time_slot.py → meetingtimes/time_slot.py} +0 -0
- /office365/teams/chats/{message_attachment.py → messages/attachment.py} +0 -0
- /office365/teams/{member_settings.py → members/settings.py} +0 -0
- /office365/teams/{user_teamwork.py → teamwork/user.py} +0 -0
|
@@ -4,10 +4,12 @@ from office365.runtime.client_value import ClientValue
|
|
|
4
4
|
class TenantAppInformation(ClientValue):
|
|
5
5
|
"""Specifies the information for the tenant-scoped app."""
|
|
6
6
|
|
|
7
|
-
def __init__(self, app_principal_id=None, app_web_full_url=None):
|
|
7
|
+
def __init__(self, app_principal_id=None, app_web_full_url=None, creation_time=None):
|
|
8
8
|
"""
|
|
9
9
|
:param str app_principal_id: Specifies the OAuth Id for the tenant-scoped app.
|
|
10
10
|
:param str app_web_full_url: Specifies the web full URL for the tenant-scoped app.
|
|
11
|
+
:param datetime.datetime creation_time: Specifies the creation time for the tenant-scoped app.
|
|
11
12
|
"""
|
|
12
13
|
self.AppPrincipalId = app_principal_id
|
|
13
14
|
self.AppWebFullUrl = app_web_full_url
|
|
15
|
+
self.CreationTime = creation_time
|
|
@@ -151,24 +151,28 @@ class Office365Tenant(BaseEntity):
|
|
|
151
151
|
self.context.add_query(qry)
|
|
152
152
|
return self
|
|
153
153
|
|
|
154
|
-
def revoke_all_user_sessions(self,
|
|
154
|
+
def revoke_all_user_sessions(self, user):
|
|
155
155
|
"""
|
|
156
156
|
Provides IT administrators the ability to invalidate a particular users' O365 sessions across all their devices.
|
|
157
157
|
|
|
158
|
-
:param str or User
|
|
158
|
+
:param str or User user: Specifies a user name or user object
|
|
159
159
|
(for example, user1@contoso.com) or User object
|
|
160
160
|
"""
|
|
161
161
|
return_type = SPOUserSessionRevocationResult(self.context)
|
|
162
|
-
if isinstance(user_or_username, User):
|
|
163
|
-
def _user_loaded():
|
|
164
|
-
next_qry = ServiceOperationQuery(self, "RevokeAllUserSessions", [user_or_username.login_name], None,
|
|
165
|
-
None, return_type)
|
|
166
|
-
self.context.add_query(next_qry)
|
|
167
162
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
163
|
+
def _revoke_all_user_sessions(login_name):
|
|
164
|
+
"""
|
|
165
|
+
:type login_name: str
|
|
166
|
+
"""
|
|
167
|
+
qry = ServiceOperationQuery(self, "RevokeAllUserSessions", [login_name], None, None, return_type)
|
|
171
168
|
self.context.add_query(qry)
|
|
169
|
+
|
|
170
|
+
if isinstance(user, User):
|
|
171
|
+
def _user_loaded():
|
|
172
|
+
_revoke_all_user_sessions(user.login_name)
|
|
173
|
+
user.ensure_property("LoginName", _user_loaded)
|
|
174
|
+
else:
|
|
175
|
+
_revoke_all_user_sessions(user)
|
|
172
176
|
return return_type
|
|
173
177
|
|
|
174
178
|
def get_external_users(self, position=0, page_size=50, _filter=None, sort_order=0):
|
|
@@ -238,7 +242,6 @@ class Office365Tenant(BaseEntity):
|
|
|
238
242
|
def delete_tenant_theme(self, name):
|
|
239
243
|
"""
|
|
240
244
|
Removes a theme from tenant
|
|
241
|
-
|
|
242
245
|
:type name: str
|
|
243
246
|
"""
|
|
244
247
|
payload = {
|
|
@@ -17,6 +17,7 @@ class ResourcePath(ClientValue):
|
|
|
17
17
|
@staticmethod
|
|
18
18
|
def create_absolute(site_url, path):
|
|
19
19
|
"""
|
|
20
|
+
Creates absolute path
|
|
20
21
|
:param str site_url: Site url
|
|
21
22
|
:param str path: Resource path
|
|
22
23
|
"""
|
|
@@ -29,11 +30,12 @@ class ResourcePath(ClientValue):
|
|
|
29
30
|
@staticmethod
|
|
30
31
|
def create_relative(site_url, path):
|
|
31
32
|
"""
|
|
33
|
+
Creates server relative path
|
|
32
34
|
:param str site_url: Site url
|
|
33
35
|
:param str path: Resource path
|
|
34
36
|
"""
|
|
35
37
|
site_path = urlparse(site_url).path
|
|
36
|
-
if not path.startswith(site_path):
|
|
38
|
+
if not path.lower().startswith(site_path.lower()):
|
|
37
39
|
return ResourcePath("/".join([site_path, path]))
|
|
38
40
|
else:
|
|
39
41
|
return ResourcePath(path)
|
|
@@ -265,8 +265,6 @@ class PeopleManager(BaseEntity):
|
|
|
265
265
|
def set_multi_valued_profile_property(self, account_name, property_name, property_values):
|
|
266
266
|
"""
|
|
267
267
|
Sets the value of a multivalued user profile property.
|
|
268
|
-
|
|
269
|
-
|
|
270
268
|
:param str account_name: Specifies the user by account name.
|
|
271
269
|
:param str property_name: The name of the property to set.
|
|
272
270
|
:param list[str] property_values: The values being set on the property.
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
|
|
1
3
|
from office365.runtime.client_value_collection import ClientValueCollection
|
|
2
4
|
from office365.sharepoint.base_entity import BaseEntity
|
|
3
5
|
from office365.sharepoint.userprofiles.sharedwithme.document_user import SharedWithMeDocumentUser
|
|
@@ -15,12 +17,16 @@ class SharedWithMeDocument(BaseEntity):
|
|
|
15
17
|
|
|
16
18
|
@property
|
|
17
19
|
def caller_stack(self):
|
|
20
|
+
"""
|
|
21
|
+
:rtype: str
|
|
22
|
+
"""
|
|
18
23
|
return self.properties.get('CallerStack', None)
|
|
19
24
|
|
|
20
25
|
@property
|
|
21
26
|
def content_type_id(self):
|
|
22
27
|
"""
|
|
23
28
|
Specifies the identifier of the content type of the document.
|
|
29
|
+
:rtype: str
|
|
24
30
|
"""
|
|
25
31
|
return self.properties.get('ContentTypeId', None)
|
|
26
32
|
|
|
@@ -28,6 +34,7 @@ class SharedWithMeDocument(BaseEntity):
|
|
|
28
34
|
def doc_id(self):
|
|
29
35
|
"""
|
|
30
36
|
Specifies the document identifier.
|
|
37
|
+
:rtype: str
|
|
31
38
|
"""
|
|
32
39
|
return self.properties.get('DocId', None)
|
|
33
40
|
|
|
@@ -37,3 +44,12 @@ class SharedWithMeDocument(BaseEntity):
|
|
|
37
44
|
Specifies a list of users that can edit the document.
|
|
38
45
|
"""
|
|
39
46
|
return self.properties.get('Editors', ClientValueCollection(SharedWithMeDocumentUser))
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def modified(self):
|
|
50
|
+
"""Specifies the date and time when the document was last modified."""
|
|
51
|
+
return self.properties.get("Modified", datetime.min)
|
|
52
|
+
|
|
53
|
+
@property
|
|
54
|
+
def entity_type_name(self):
|
|
55
|
+
return "Microsoft.SharePoint.Portal.UserProfiles.SharedWithMeDocument"
|
|
@@ -4,6 +4,18 @@ from office365.runtime.client_value import ClientValue
|
|
|
4
4
|
class SharedWithMeDocumentUser(ClientValue):
|
|
5
5
|
"""Represents a user of a document that is shared with the current user."""
|
|
6
6
|
|
|
7
|
+
def __init__(self, _id=None, login_name=None, sip_address=None, title=None):
|
|
8
|
+
"""
|
|
9
|
+
:param str _id: Identifier
|
|
10
|
+
:param str login_name: Specifies the login name of the user.
|
|
11
|
+
:param str sip_address: Specifies the sip address of the user.
|
|
12
|
+
:param str title: Specifies the title of the user.
|
|
13
|
+
"""
|
|
14
|
+
self.Id = _id
|
|
15
|
+
self.LoginName = login_name
|
|
16
|
+
self.SipAddress = sip_address
|
|
17
|
+
self.Title = title
|
|
18
|
+
|
|
7
19
|
@property
|
|
8
20
|
def entity_type_name(self):
|
|
9
21
|
return "Microsoft.SharePoint.Portal.UserProfiles.SharedWithMeDocumentUser"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from office365.runtime.client_result import ClientResult
|
|
2
|
+
from office365.runtime.queries.service_operation import ServiceOperationQuery
|
|
3
|
+
from office365.sharepoint.base_entity import BaseEntity
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class SharedWithMeItemCollection(BaseEntity):
|
|
7
|
+
""""""
|
|
8
|
+
|
|
9
|
+
@staticmethod
|
|
10
|
+
def get_shared_with_me_external_items(context, top):
|
|
11
|
+
"""
|
|
12
|
+
:param office365.sharepoint.client_context.ClientContext context: Client context
|
|
13
|
+
:param int top:
|
|
14
|
+
"""
|
|
15
|
+
binding_type = SharedWithMeItemCollection(context)
|
|
16
|
+
return_type = ClientResult(context, str())
|
|
17
|
+
params = {"top": top}
|
|
18
|
+
qry = ServiceOperationQuery(binding_type, "GetSharedWithMeExternalItems", params,
|
|
19
|
+
return_type=return_type, is_static=True)
|
|
20
|
+
context.add_query(qry)
|
|
21
|
+
return return_type
|
|
22
|
+
|
|
23
|
+
@staticmethod
|
|
24
|
+
def get_shared_with_me_items(context, top, skip_token=None, include_sharing_history=None):
|
|
25
|
+
"""
|
|
26
|
+
:param office365.sharepoint.client_context.ClientContext context: Client context
|
|
27
|
+
:param int top:
|
|
28
|
+
:param str skip_token:
|
|
29
|
+
:param bool include_sharing_history:
|
|
30
|
+
"""
|
|
31
|
+
binding_type = SharedWithMeItemCollection(context)
|
|
32
|
+
return_type = ClientResult(context, str())
|
|
33
|
+
params = {
|
|
34
|
+
"top": top,
|
|
35
|
+
"skiptoken": skip_token,
|
|
36
|
+
"includeSharingHistory": include_sharing_history
|
|
37
|
+
}
|
|
38
|
+
qry = ServiceOperationQuery(binding_type, "GetSharedWithMeItems", None, params,
|
|
39
|
+
return_type=return_type, is_static=True)
|
|
40
|
+
context.add_query(qry)
|
|
41
|
+
return return_type
|
|
@@ -1,5 +1,22 @@
|
|
|
1
|
+
from office365.runtime.queries.service_operation import ServiceOperationQuery
|
|
1
2
|
from office365.sharepoint.base_entity import BaseEntity
|
|
3
|
+
from office365.sharepoint.base_entity_collection import BaseEntityCollection
|
|
4
|
+
from office365.sharepoint.userprofiles.sharedwithme.document import SharedWithMeDocument
|
|
2
5
|
|
|
3
6
|
|
|
4
7
|
class SharedWithMeItems(BaseEntity):
|
|
5
|
-
|
|
8
|
+
|
|
9
|
+
@staticmethod
|
|
10
|
+
def shared_with_me(context):
|
|
11
|
+
"""
|
|
12
|
+
:param office365.sharepoint.client_context.ClientContext context: Client context
|
|
13
|
+
"""
|
|
14
|
+
binding_type = SharedWithMeItems(context)
|
|
15
|
+
return_type = BaseEntityCollection(context, SharedWithMeDocument)
|
|
16
|
+
qry = ServiceOperationQuery(binding_type, "SharedWithMe", return_type=return_type, is_static=True)
|
|
17
|
+
context.add_query(qry)
|
|
18
|
+
return return_type
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def entity_type_name(self):
|
|
22
|
+
return "Microsoft.SharePoint.Portal.UserProfiles.SharedWithMeItems"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
2
|
+
from office365.sharepoint.base_entity import BaseEntity
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class VivaSiteManager(BaseEntity):
|
|
6
|
+
""""""
|
|
7
|
+
def __init__(self, content, resource_path=None):
|
|
8
|
+
if resource_path is None:
|
|
9
|
+
resource_path = ResourcePath("Microsoft.SharePoint.Portal.VivaSiteManager")
|
|
10
|
+
super().__init__(content, resource_path)
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def entity_type_name(self):
|
|
14
|
+
return "Microsoft.SharePoint.Portal.VivaSiteManager"
|
|
@@ -22,20 +22,19 @@ class SubscriptionCollection(BaseEntityCollection):
|
|
|
22
22
|
return_type = Subscription(self.context)
|
|
23
23
|
self.add_child(return_type)
|
|
24
24
|
|
|
25
|
-
def
|
|
25
|
+
def _create_and_add_query(information):
|
|
26
26
|
"""
|
|
27
27
|
:type information: SubscriptionInformation
|
|
28
28
|
"""
|
|
29
29
|
payload = {"parameters": information}
|
|
30
|
-
|
|
30
|
+
qry = ServiceOperationQuery(self, "Add", None, payload, None, return_type)
|
|
31
|
+
self.context.add_query(qry)
|
|
31
32
|
|
|
32
33
|
if isinstance(parameters, SubscriptionInformation):
|
|
33
|
-
|
|
34
|
-
self.context.add_query(qry)
|
|
34
|
+
_create_and_add_query(parameters)
|
|
35
35
|
else:
|
|
36
36
|
def _parent_loaded():
|
|
37
|
-
|
|
38
|
-
self.context.add_query(next_qry)
|
|
37
|
+
_create_and_add_query(SubscriptionInformation(parameters, self._parent.properties["Id"]))
|
|
39
38
|
self._parent.ensure_property("Id", _parent_loaded)
|
|
40
39
|
return return_type
|
|
41
40
|
|
|
@@ -20,7 +20,7 @@ class WebPartDefinition(BaseEntity):
|
|
|
20
20
|
|
|
21
21
|
@property
|
|
22
22
|
def web_part(self):
|
|
23
|
-
"""The WebPart object
|
|
23
|
+
"""The WebPart object, as specified in section 3.2.5.148, associated with this WebPartDefinition.
|
|
24
24
|
The WebPart object (1) contains additional properties relating to the Web Part represented by this
|
|
25
25
|
WebPartDefinition object"""
|
|
26
26
|
return self.properties.get('WebPart',
|
|
@@ -2,7 +2,21 @@ from office365.sharepoint.base_entity import BaseEntity
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class WebPart(BaseEntity):
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
"""
|
|
6
|
+
A reusable component that contains or generates web-based content such as XML, HTML, and scripting code.
|
|
7
|
+
It has a standard property schema and displays that content in a cohesive unit on a webpage. See also Web Parts Page
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def zone_index(self):
|
|
12
|
+
"""
|
|
13
|
+
An integer that specifies the relative position of a Web Part in a Web Part zone.
|
|
14
|
+
Web Parts are positioned from the smallest to the largest zone index. If two or more Web Parts have the
|
|
15
|
+
same zone index they are positioned adjacent to each other in an undefined order
|
|
16
|
+
:rtype: int or None
|
|
17
|
+
"""
|
|
18
|
+
return self.properties.get("ZoneIndex", None)
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def entity_type_name(self):
|
|
22
|
+
return "SP.WebParts.WebPart"
|
|
@@ -9,7 +9,8 @@ class ContextWebInformation(ClientValue):
|
|
|
9
9
|
|
|
10
10
|
def __init__(self, form_digest_value=None, form_digest_timeout_secs=None):
|
|
11
11
|
"""
|
|
12
|
-
:param str form_digest_value:
|
|
12
|
+
:param str form_digest_value: An object that is inserted into a page and is used by a protocol server
|
|
13
|
+
to validate client requests. The validation is specific to a user, site, and time period.
|
|
13
14
|
:param int form_digest_timeout_secs: Specifies the amount of time in seconds before security validation expires.
|
|
14
15
|
"""
|
|
15
16
|
super(ContextWebInformation, self).__init__()
|
|
@@ -21,9 +22,6 @@ class ContextWebInformation(ClientValue):
|
|
|
21
22
|
self.WebFullUrl = None
|
|
22
23
|
self._valid_from = time.time()
|
|
23
24
|
|
|
24
|
-
def reset(self):
|
|
25
|
-
pass
|
|
26
|
-
|
|
27
25
|
@property
|
|
28
26
|
def is_valid(self):
|
|
29
27
|
"""
|
office365/sharepoint/webs/web.py
CHANGED
|
@@ -26,11 +26,13 @@ from office365.sharepoint.flows.synchronization_result import FlowSynchronizatio
|
|
|
26
26
|
from office365.sharepoint.folders.folder import Folder
|
|
27
27
|
from office365.sharepoint.folders.collection import FolderCollection
|
|
28
28
|
from office365.sharepoint.listitems.listitem import ListItem
|
|
29
|
+
from office365.sharepoint.lists.creation_information import ListCreationInformation
|
|
29
30
|
from office365.sharepoint.lists.document_library_information import DocumentLibraryInformation
|
|
30
31
|
from office365.sharepoint.lists.get_parameters import GetListsParameters
|
|
31
32
|
from office365.sharepoint.lists.list import List
|
|
32
33
|
from office365.sharepoint.lists.collection import ListCollection
|
|
33
34
|
from office365.sharepoint.lists.template_collection import ListTemplateCollection
|
|
35
|
+
from office365.sharepoint.lists.template_type import ListTemplateType
|
|
34
36
|
from office365.sharepoint.marketplace.corporatecuratedgallery.available_addins_response import SPAvailableAddinsResponse
|
|
35
37
|
from office365.sharepoint.navigation.navigation import Navigation
|
|
36
38
|
from office365.sharepoint.permissions.base_permissions import BasePermissions
|
|
@@ -74,8 +76,13 @@ from office365.sharepoint.webs.theme_info import ThemeInfo
|
|
|
74
76
|
|
|
75
77
|
|
|
76
78
|
class Web(SecurableObject):
|
|
77
|
-
"""
|
|
78
|
-
|
|
79
|
+
"""
|
|
80
|
+
Represents a SharePoint site. A site is a type of SecurableObject.
|
|
81
|
+
|
|
82
|
+
A group of related webpages that is hosted by a server on the World Wide Web or an intranet.
|
|
83
|
+
Each website has its own entry points, metadata, administration settings, and workflows.
|
|
84
|
+
Also referred to as web site.
|
|
85
|
+
"""
|
|
79
86
|
|
|
80
87
|
def __init__(self, context, resource_path=None):
|
|
81
88
|
"""
|
|
@@ -89,6 +96,16 @@ class Web(SecurableObject):
|
|
|
89
96
|
super(Web, self).__init__(context, resource_path)
|
|
90
97
|
self._web_url = None
|
|
91
98
|
|
|
99
|
+
def add_list(self, title, template_type=ListTemplateType.GenericList):
|
|
100
|
+
"""
|
|
101
|
+
Creates a new list and adds it to the web.
|
|
102
|
+
|
|
103
|
+
:param str title: Specifies the display name of the new list.
|
|
104
|
+
:param int template_type: Specifies the list server template of the new list.
|
|
105
|
+
"""
|
|
106
|
+
info = ListCreationInformation(title, None, template_type)
|
|
107
|
+
return self.lists.add(info)
|
|
108
|
+
|
|
92
109
|
def available_addins(self, server_relative_urls=None):
|
|
93
110
|
"""
|
|
94
111
|
:param list[str] server_relative_urls:
|
|
@@ -131,6 +148,7 @@ class Web(SecurableObject):
|
|
|
131
148
|
return result
|
|
132
149
|
|
|
133
150
|
def consent_to_power_platform(self):
|
|
151
|
+
""""""
|
|
134
152
|
return_type = FlowSynchronizationResult(self.context)
|
|
135
153
|
qry = ServiceOperationQuery(self, "ConsentToPowerPlatform", None, None, None, return_type)
|
|
136
154
|
self.context.add_query(qry)
|
|
@@ -185,19 +203,21 @@ class Web(SecurableObject):
|
|
|
185
203
|
"""
|
|
186
204
|
return_type = PushNotificationSubscriberCollection(self.context)
|
|
187
205
|
|
|
188
|
-
def
|
|
189
|
-
|
|
190
|
-
|
|
206
|
+
def _create_and_add_query(login_name):
|
|
207
|
+
"""
|
|
208
|
+
:type login_name: str
|
|
209
|
+
"""
|
|
210
|
+
qry = ServiceOperationQuery(self, "GetPushNotificationSubscribersByUser",
|
|
211
|
+
[login_name], None, None, return_type)
|
|
212
|
+
self.context.add_query(qry)
|
|
191
213
|
|
|
192
214
|
if isinstance(user, User):
|
|
193
215
|
def _user_loaded():
|
|
194
|
-
|
|
195
|
-
self.context.add_query(next_qry)
|
|
216
|
+
_create_and_add_query(user.login_name)
|
|
196
217
|
|
|
197
218
|
user.ensure_property("LoginName", _user_loaded)
|
|
198
219
|
else:
|
|
199
|
-
|
|
200
|
-
self.context.add_query(qry)
|
|
220
|
+
_create_and_add_query(user)
|
|
201
221
|
return return_type
|
|
202
222
|
|
|
203
223
|
@staticmethod
|
|
@@ -369,7 +389,6 @@ class Web(SecurableObject):
|
|
|
369
389
|
def add_supported_ui_language(self, lcid):
|
|
370
390
|
"""
|
|
371
391
|
Adds a supported UI language by its language identifier.
|
|
372
|
-
|
|
373
392
|
:param int lcid: Specifies the language identifier to be added.
|
|
374
393
|
"""
|
|
375
394
|
qry = ServiceOperationQuery(self, "AddSupportedUILanguage", {"lcid": lcid})
|
|
@@ -1396,8 +1415,8 @@ class Web(SecurableObject):
|
|
|
1396
1415
|
|
|
1397
1416
|
@property
|
|
1398
1417
|
def allow_rss_feeds(self):
|
|
1399
|
-
"""
|
|
1400
|
-
|
|
1418
|
+
"""
|
|
1419
|
+
Gets a Boolean value that specifies whether the site collection allows RSS feeds.
|
|
1401
1420
|
:rtype: str
|
|
1402
1421
|
"""
|
|
1403
1422
|
return self.properties.get("AllowRssFeeds", None)
|
|
@@ -6,7 +6,6 @@ from office365.sharepoint.base_entity import BaseEntity
|
|
|
6
6
|
class WorkflowServicesManager(BaseEntity):
|
|
7
7
|
"""Describes the workflow host configuration states and provides service objects that interact with the workflow."""
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
def get_workflow_instance_service(self):
|
|
11
10
|
"""Returns the WorkflowInstanceService (manages and reads workflow instances from the workflow host),
|
|
12
11
|
which manages workflow instances."""
|
|
@@ -16,7 +15,6 @@ class WorkflowServicesManager(BaseEntity):
|
|
|
16
15
|
self.context.add_query(qry)
|
|
17
16
|
return return_type
|
|
18
17
|
|
|
19
|
-
|
|
20
18
|
@staticmethod
|
|
21
19
|
def current(context):
|
|
22
20
|
"""
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from office365.entity_collection import EntityCollection
|
|
2
|
+
from office365.runtime.queries.create_entity import CreateEntityQuery
|
|
3
|
+
from office365.subscriptions.subscription import Subscription
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class SubscriptionCollection(EntityCollection):
|
|
7
|
+
|
|
8
|
+
def __init__(self, context, resource_path=None):
|
|
9
|
+
super(SubscriptionCollection, self).__init__(context, Subscription, resource_path)
|
|
10
|
+
|
|
11
|
+
def add(self, change_type, notification_url, resource_path, expiration, client_state=None,
|
|
12
|
+
latest_supported_tls_version=None):
|
|
13
|
+
"""
|
|
14
|
+
Subscribes a listener application to receive change notifications when the requested type of changes occur
|
|
15
|
+
to the specified resource in Microsoft Graph.
|
|
16
|
+
|
|
17
|
+
:param str change_type: Indicates the type of change in the subscribed resource that will raise a change
|
|
18
|
+
notification
|
|
19
|
+
:param str notification_url: The URL of the endpoint that will receive the change notifications.
|
|
20
|
+
This URL must make use of the HTTPS protocol. Any query string parameter included in the notificationUrl
|
|
21
|
+
property will be included in the HTTP POST request when Microsoft Graph sends the change notifications.
|
|
22
|
+
:param office365.runtime.paths.resource_path.ResourcePath or str resource_path:
|
|
23
|
+
:param datetime.datetime expiration: Specifies the date and time when the webhook subscription expires.
|
|
24
|
+
:param str client_state: Specifies the value of the clientState property sent by the service in each change
|
|
25
|
+
notification
|
|
26
|
+
:param str latest_supported_tls_version: Specifies the latest version of Transport Layer Security (TLS) that
|
|
27
|
+
the notification endpoint, specified by notificationUrl, supports.
|
|
28
|
+
The possible values are: v1_0, v1_1, v1_2, v1_3.
|
|
29
|
+
"""
|
|
30
|
+
return_type = Subscription(self.context)
|
|
31
|
+
self.add_child(return_type)
|
|
32
|
+
payload = {
|
|
33
|
+
"changeType": change_type,
|
|
34
|
+
"notificationUrl": notification_url,
|
|
35
|
+
"resource": str(resource_path),
|
|
36
|
+
"expirationDateTime": expiration.isoformat() + "Z",
|
|
37
|
+
"clientState": client_state,
|
|
38
|
+
"latestSupportedTlsVersion": latest_supported_tls_version
|
|
39
|
+
}
|
|
40
|
+
qry = CreateEntityQuery(self, payload, return_type)
|
|
41
|
+
self.context.add_query(qry)
|
|
42
|
+
return return_type
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
|
|
1
3
|
from office365.entity import Entity
|
|
2
4
|
from office365.runtime.queries.service_operation import ServiceOperationQuery
|
|
3
5
|
|
|
@@ -6,7 +8,7 @@ class Subscription(Entity):
|
|
|
6
8
|
"""A subscription allows a client app to receive change notifications about changes to data in Microsoft Graph"""
|
|
7
9
|
|
|
8
10
|
def reauthorize(self):
|
|
9
|
-
""""""
|
|
11
|
+
"""Reauthorize a subscription when you receive a reauthorizationRequired challenge."""
|
|
10
12
|
qry = ServiceOperationQuery(self, "reauthorize")
|
|
11
13
|
self.context.add_query(qry)
|
|
12
14
|
return self
|
|
@@ -15,11 +17,119 @@ class Subscription(Entity):
|
|
|
15
17
|
def application_id(self):
|
|
16
18
|
"""
|
|
17
19
|
Identifier of the application used to create the subscription.
|
|
18
|
-
|
|
19
20
|
:rtype: str or None
|
|
20
21
|
"""
|
|
21
22
|
return self.properties.get("applicationId", None)
|
|
22
23
|
|
|
24
|
+
@property
|
|
25
|
+
def change_type(self):
|
|
26
|
+
"""
|
|
27
|
+
Required. Indicates the type of change in the subscribed resource that will raise a change notification.
|
|
28
|
+
The supported values are: created, updated, deleted.
|
|
29
|
+
Multiple values can be combined using a comma-separated list.
|
|
30
|
+
|
|
31
|
+
Note:
|
|
32
|
+
Drive root item and list change notifications support only the updated changeType.
|
|
33
|
+
User and group change notifications support updated and deleted changeType. Use updated to receive
|
|
34
|
+
notifications when user or group is created, updated or soft deleted. Use deleted to receive notifications
|
|
35
|
+
when user or group is permanently deleted.
|
|
36
|
+
:rtype: str or None
|
|
37
|
+
"""
|
|
38
|
+
return self.properties.get("changeType", None)
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def client_state(self):
|
|
42
|
+
"""
|
|
43
|
+
Required. Specifies the value of the clientState property sent by the service in each change notification.
|
|
44
|
+
The maximum length is 128 characters. The client can check that the change notification came from the service
|
|
45
|
+
by comparing the value of the clientState property sent with the subscription with the value of the clientState
|
|
46
|
+
property received with each change notification.
|
|
47
|
+
:rtype: str or None
|
|
48
|
+
"""
|
|
49
|
+
return self.properties.get("clientState", None)
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def creator_id(self):
|
|
53
|
+
"""
|
|
54
|
+
Optional. Identifier of the user or service principal that created the subscription. If the app used
|
|
55
|
+
delegated permissions to create the subscription, this field contains the id of the signed-in user the app
|
|
56
|
+
called on behalf of. If the app used application permissions, this field contains the id of the service
|
|
57
|
+
principal corresponding to the app. Read-only.
|
|
58
|
+
:rtype: str or None
|
|
59
|
+
"""
|
|
60
|
+
return self.properties.get("creatorId", None)
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def encryption_certificate(self):
|
|
64
|
+
"""
|
|
65
|
+
Optional. A base64-encoded representation of a certificate with a public key used to encrypt resource data in
|
|
66
|
+
change notifications. Optional but required when includeResourceData is true.
|
|
67
|
+
:rtype: str or None
|
|
68
|
+
"""
|
|
69
|
+
return self.properties.get("encryptionCertificate", None)
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def encryption_certificate_id(self):
|
|
73
|
+
"""
|
|
74
|
+
Optional. A custom app-provided identifier to help identify the certificate needed to decrypt resource data.
|
|
75
|
+
:rtype: str or None
|
|
76
|
+
"""
|
|
77
|
+
return self.properties.get("encryptionCertificateId", None)
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def expiration_datetime(self):
|
|
81
|
+
"""
|
|
82
|
+
Required. Specifies the date and time when the webhook subscription expires. The time is in UTC, and can be
|
|
83
|
+
an amount of time from subscription creation that varies for the resource subscribed to
|
|
84
|
+
"""
|
|
85
|
+
return self.properties.get("expirationDateTime", datetime.datetime)
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def include_resource_data(self):
|
|
89
|
+
"""
|
|
90
|
+
Optional. When set to true, change notifications include resource data (such as content of a chat message).
|
|
91
|
+
:rtype: bool
|
|
92
|
+
"""
|
|
93
|
+
return self.properties.get("includeResourceData", None)
|
|
94
|
+
|
|
95
|
+
@property
|
|
96
|
+
def latest_supported_tls_version(self):
|
|
97
|
+
"""
|
|
98
|
+
Optional. Specifies the latest version of Transport Layer Security (TLS) that the notification endpoint,
|
|
99
|
+
specified by notificationUrl, supports. The possible values are: v1_0, v1_1, v1_2, v1_3.
|
|
100
|
+
|
|
101
|
+
For subscribers whose notification endpoint supports a version lower than the currently recommended
|
|
102
|
+
version (TLS 1.2), specifying this property by a set timeline allows them to temporarily use their deprecated
|
|
103
|
+
version of TLS before completing their upgrade to TLS 1.2. For these subscribers, not setting this property
|
|
104
|
+
per the timeline would result in subscription operations failing.
|
|
105
|
+
|
|
106
|
+
For subscribers whose notification endpoint already supports TLS 1.2, setting this property is optional.
|
|
107
|
+
In such cases, Microsoft Graph defaults the property to v1_2.
|
|
108
|
+
:rtype: str
|
|
109
|
+
"""
|
|
110
|
+
return self.properties.get("latestSupportedTlsVersion", None)
|
|
111
|
+
|
|
112
|
+
@property
|
|
113
|
+
def lifecycle_notification_url(self):
|
|
114
|
+
"""
|
|
115
|
+
Required for Teams resources if the expirationDateTime value is more than 1 hour from now; optional otherwise.
|
|
116
|
+
The URL of the endpoint that receives lifecycle notifications, including subscriptionRemoved,
|
|
117
|
+
reauthorizationRequired, and missed notifications. This URL must make use of the HTTPS protocol.
|
|
118
|
+
For more information, see Reduce missing subscriptions and change notifications.
|
|
119
|
+
:rtype: str or None
|
|
120
|
+
"""
|
|
121
|
+
return self.properties.get("lifecycleNotificationUrl", None)
|
|
122
|
+
|
|
123
|
+
@property
|
|
124
|
+
def notification_url(self):
|
|
125
|
+
"""
|
|
126
|
+
Required. The URL of the endpoint that will receive the change notifications. This URL must make use of
|
|
127
|
+
the HTTPS protocol. Any query string parameter included in the notificationUrl property will be included
|
|
128
|
+
in the HTTP POST request when Microsoft Graph sends the change notifications.
|
|
129
|
+
:rtype: str or None
|
|
130
|
+
"""
|
|
131
|
+
return self.properties.get("notificationUrl", None)
|
|
132
|
+
|
|
23
133
|
@property
|
|
24
134
|
def resource(self):
|
|
25
135
|
"""
|
|
@@ -30,3 +140,11 @@ class Subscription(Entity):
|
|
|
30
140
|
:rtype: str or None
|
|
31
141
|
"""
|
|
32
142
|
return self.properties.get("resource", None)
|
|
143
|
+
|
|
144
|
+
def get_property(self, name, default_value=None):
|
|
145
|
+
if default_value is None:
|
|
146
|
+
property_mapping = {
|
|
147
|
+
"expirationDateTime": self.expiration_datetime,
|
|
148
|
+
}
|
|
149
|
+
default_value = property_mapping.get(name, None)
|
|
150
|
+
return super(Subscription, self).get_property(name, default_value)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from office365.entity import Entity
|
|
2
|
+
from office365.entity_collection import EntityCollection
|
|
3
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
4
|
+
from office365.teams.apps.app import TeamsApp
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AppCatalogs(Entity):
|
|
8
|
+
"""A container for apps from the Microsoft Teams app catalog"""
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def teams_apps(self):
|
|
12
|
+
"""List apps from the Microsoft Teams app catalog."""
|
|
13
|
+
return self.properties.get('teamsApps',
|
|
14
|
+
EntityCollection(self.context, TeamsApp,
|
|
15
|
+
ResourcePath("teamsApps", self.resource_path)))
|
|
16
|
+
|
|
17
|
+
def get_property(self, name, default_value=None):
|
|
18
|
+
if default_value is None:
|
|
19
|
+
property_mapping = {
|
|
20
|
+
"teamsApps": self.teams_apps
|
|
21
|
+
}
|
|
22
|
+
default_value = property_mapping.get(name, None)
|
|
23
|
+
return super(AppCatalogs, self).get_property(name, default_value)
|