Skip to content

Sets the external sharing capability for a site.

Reference

View source

from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.tenant.administration.sharing_capabilities import SharingCapabilities
from office365.sharepoint.tenant.administration.tenant import Tenant
from tests.settings import admin_site_url, cert_path, cert_thumbprint, client_id, site_url, tenant

SHARING_LABELS = {
    SharingCapabilities.Disabled: "Disabled",
    SharingCapabilities.ExternalUserSharingOnly: "Authenticated external only",
    SharingCapabilities.ExternalUserAndGuestSharing: "Anyone (links + guests)",
    SharingCapabilities.ExistingExternalUserSharingOnly: "Existing guests only",
}


def sharing_label(cap):
    """Return a human-readable label for a sharing capability."""
    if cap is None:
        return "Unknown"
    return SHARING_LABELS.get(cap, str(cap))


ctx = ClientContext(admin_site_url).with_client_certificate(
    tenant, client_id=client_id, thumbprint=cert_thumbprint, cert_path=cert_path
)
tenant = Tenant(ctx)

props = tenant.get_site_properties_by_url(site_url).execute_query()
print(f"Current: {sharing_label(props.sharing_capability)}")

props.sharing_capability = SharingCapabilities.ExternalUserSharingOnly
props.update_ex().execute_query()
print(f"Updated: {sharing_label(props.sharing_capability)}")

← Back to Sharing