Skip to Content
SourcesMicrosoft 365

Microsoft 365

Microsoft 365

Scan SharePoint sites, OneDrive files, and Teams files via Microsoft Graph API.

Category
Collaboration
Source type
MICROSOFT_365
Produces
fileimagesitedrive

SharePoint, OneDrive and Teams are one filesystem with three front doors, and between them they hold most of the documents an organisation produces. This source reads all three through Microsoft Graph.

What you need to connect

An Entra (Azure AD) app registration: tenant ID, client ID, and one of

ModeWhat you supply
Client secretThe app’s secret
CertificateA PEM certificate and its password
Managed identityNothing — the workload’s own identity is used

Grant the app read-only application permissions — Sites.Read.All and Files.Read.All are the usual pair. Permission metadata needs more (Sites.FullControl.All), which is why it’s a separate switch.

What Classifyre reads

Pick which ecosystems to scan — SharePoint sites, OneDrive, Teams files — then narrow by site, by drive, by folder path, and by file extension.

Every file becomes an asset and is read with the full file pipeline. Optionally also:

  • Site and drive assets, so the structure itself is inventoried.
  • Sharing permissions on each item — useful when the question is not just what is sensitive but who can see it.

Files in SharePoint, OneDrive and Teams are read with the shared file pipeline: see Supported File Formats for everything it can open, and OCR & Transcription for reading text out of images, audio and video.

Metadata on every asset

Asset kind · file

FieldTypeAlways presentWhat it is
size_bytesintegerYesRaw byte size of the content
mime_typestringYesResolved MIME type
parse_errorstringNoSet when content extraction failed
image_widthintegerNoWidth in pixels
image_heightintegerNoHeight in pixels
page_countintegerNoNumber of pages (pdf)
paragraph_countintegerNoNumber of paragraphs (docx)
table_countintegerNoNumber of tables (docx)
row_countintegerNoNumber of data rows
columnsobject[]NoColumns as {name, type} objects (type may be empty for csv/xlsx)
encodingstringNoDetected character encoding
json_root_typestringNoRoot JSON type: object, array, or scalar
top_level_keysintegerNoNumber of top-level keys when the root is an object
array_lengthintegerNoLength when the root is an array
site_namestringNoSharePoint site display name
drive_namestringYesDrive display name
item_pathstringYesFull path within the drive
ecosystemstringYesSource ecosystem (sharepoint_sites, onedrive, teams_files)
web_urlstringNoBrowser-accessible URL for the item
etagstringNoGraph API eTag for the item
created_bystringNoUser who created the file
modified_bystringNoUser who last modified the file
permissionsstring[]NoSharing permissions on the item: list of {role, grantee_type, grantee} entries (requires include_permissions)

Asset kind · image

FieldTypeAlways presentWhat it is
size_bytesintegerYesRaw byte size of the content
mime_typestringYesResolved MIME type
parse_errorstringNoSet when content extraction failed
source_hashstringYesHash of the parent file asset
locationstringYesLocation of the embedded image within the parent

Asset kind · site

FieldTypeAlways presentWhat it is
site_idstringYesGraph API site ID
site_urlstringNoSite URL
site_namestringYesSite display name
drive_countintegerNoNumber of document libraries

Asset kind · drive

FieldTypeAlways presentWhat it is
drive_idstringYesGraph API drive ID
drive_namestringYesDrive display name
drive_typestringNoDrive type (documentLibrary, personal, etc.)
site_namestringNoParent site display name
quota_totalintegerNoTotal storage quota in bytes
quota_usedintegerNoUsed storage in bytes

Lineage

Lineage

This source records no lineage. Nothing in the system it reads describes data moving from one place to another, so no FLOW edges are produced. Related items are still linked — see Lineage & Relationships for what those links mean and how they differ from lineage.

Worth knowing

  • Teams files are SharePoint files. Scanning Teams reads each team’s document library — chat messages are not included.
  • Graph throttling is handled with backoff and retries; a large tenant is a matter of time, not failure.
  • Start with one site collection. A tenant-wide first scan is rarely the quickest way to a useful answer.

Configuration

Beyond the fields below, every source also has the settings shared by all of them: the sampling strategy, the detectors to run, the scan schedule, and the compute limits for its scan jobs.

Required

Without these, the source will not save.

This section depends on which authentication method you pick — one of the following applies.

Microsoft 365 Client Secret

FieldTypeRequiredWhat it doesDefault
auth_mode"CLIENT_SECRET"Yes
tenant_idstringYesAzure AD tenant ID (directory ID)
client_idstringYesAzure AD application (client) ID

Microsoft 365 Certificate

FieldTypeRequiredWhat it doesDefault
auth_mode"CERTIFICATE"Yes
tenant_idstringYesAzure AD tenant ID (directory ID)
client_idstringYesAzure AD application (client) ID

Microsoft 365 Managed Identity

FieldTypeRequiredWhat it doesDefault
auth_mode"MANAGED_IDENTITY"Yes
client_idstringNoUser-assigned managed identity client ID (omit for system-assigned)

Secrets

Stored encrypted and never shown again after you save them. See Configuration & Fields.

This section depends on which authentication method you pick — one of the following applies.

Microsoft 365 Client Secret

FieldTypeRequiredWhat it doesDefault
client_secretstringYesAzure AD application client secret

Microsoft 365 Certificate

FieldTypeRequiredWhat it doesDefault
certificate_pemstringYesPEM-encoded certificate (private key + cert chain)
certificate_passwordstringNoPassphrase for encrypted PEM private key (optional)

Microsoft 365 Managed Identity

Secret fields · Microsoft 365 Managed Identity: none for this source.

Optional

Everything you can tune. Sensible defaults apply when you leave them alone.

FieldTypeRequiredWhat it doesDefault
optionalobjectNono extra properties
connectionobjectNoNetwork and throttle controls for Graph API requests.no extra properties
connection.max_retriesintegerNoMaximum retries on transient errors and 429 throttlingmin 0, max 103
connection.page_sizeintegerNoItems per page for Graph API list requestsmin 1, max 999200
connection.rate_limit_delay_secondsnumberNoBase delay between requests when throttled (exponential backoff applied)min 01
connection.request_timeout_secondsintegerNoSocket timeout for Graph API operationsmin 5, max 30030
extractionobjectNoControls which structural assets to emit beyond files.no extra properties
extraction.include_drive_metadatabooleanNoEmit drive-level assets with metadatatrue
extraction.include_permissionsbooleanNoInclude file/site permission metadata (requires Sites.FullControl.All)false
extraction.include_site_metadatabooleanNoEmit site-level assets with metadatatrue
scopeobjectNoEcosystem selection and content filtering.no extra properties
scope.drive_filterarrayNoDrive names or IDs to include (empty = all)
scope.drive_filter[]stringNo
scope.ecosystemsarrayNoMicrosoft 365 ecosystems to scan (select one or more)["sharepoint_sites"]
scope.ecosystems[]enumNoMicrosoft 365 ecosystem to scan Allowed: sharepoint_sites, onedrive, teams_files
scope.exclude_extensionsarrayNoSkip files with these extensions
scope.exclude_extensions[]stringNo
scope.include_extensionsarrayNoOnly include files with these extensions (e.g. .pdf, .docx)
scope.include_extensions[]stringNo
scope.max_object_bytesintegerNoSkip files larger than this many bytes (default 100 MB)min 0104857600
scope.path_prefixstringNoOnly scan items under this folder path (e.g. /Documents/Legal)
scope.site_filterarrayNoSharePoint site hostnames or paths to include (empty = all accessible)
scope.site_filter[]stringNo
Last updated on