Inventory of sites and permissions
Lists the sites with getAllSites, each one's libraries, and walks each drive with delta and Prefer: hierarchicalsharing, reading permissions only at the inheritance roots.
Octo for SharePoint, OneDrive, Teams and Power Automate
In Microsoft 365, sites, libraries, files and permissions go through Microsoft Graph. Octo inventories the tenant read-only, points out anonymous links and broken inheritance, proposes the minimum permission for each app, measures the network folder before migrating and treats Power Automate flows as reviewable code. Consent, access, personal data and publishing stay with the administrator and with each site's owner.
Six possible deliverables, drawn from the research. All of them start by reading, all of them request the smallest permission that does the job, and all of them go to review by whoever administers the tenant and whoever owns the content.
Lists the sites with getAllSites, each one's libraries, and walks each drive with delta and Prefer: hierarchicalsharing, reading permissions only at the inheritance roots.
Replaces the Sites.ReadWrite.All requested "for testing" with Sites.Selected with a read or write role on the site that matters, and records how to revoke it.
Measures the network folder before the window: paths over 400 characters with the target prefix, files over 250 GB, suspicious names, duplicates by SHA-256, folders with personal data.
Deliverable: a CSV manifest for the data owner to approveOnly what was approved goes, with createUploadSession, conflictBehavior set to fail, 10 MiB fragments and respect for Retry-After.
Exports the solution with pac solution export, unpacks it and reviews each flow's JSON by diff; imports with a settings file per environment.
Finds scripts that still depend on SharePoint Add-ins and ACS, retired on Apr 2, 2026, and OneNote integrations that relied on app permissions.
Deliverable: list of what stopped or will stop, with the new pathThe same Octo cycle, applied to Microsoft 365. Each arm has a narrow role; the ones who consent, grant access and answer for the data are people.
Sites, libraries, teams, flows, registered apps and what still depends on Add-ins and ACS.
Libraries, columns, versions, volume and what becomes metadata in the migration.
Minimum permission per app, anonymous links, external guests and folders with personal data (LGPD, Brazil's data protection law) flagged.
Graph directly, PnP PowerShell, Migration Manager or a Power Platform solution, depending on the task and the volume.
Inventory, pre-scan and upload with throttling respected and the source of each syntax noted.
Permission listed on the site, size at the target, a diff of the flow's JSON before importing.
Package and script ready; applying to the tenant is done with a person's approval.
Inventory, permissions granted, who approved, the migration manifest and how to roll back.
Octo does not consent to permissions, does not keep app certificates or secrets, does not open or close access on its own and does not answer for the data stored in the tenant.
The criteria Octo uses to choose, with the call and the documented least-privilege permission.
| Task | Path | Notes |
|---|---|---|
| List all sites | GET /sites/getAllSites | App only, Sites.Read.All |
| Scan files and changes | GET /drives/{id}/root/delta | Files.Read.All; save the deltaLink |
| Find only permission roots | Prefer: hierarchicalsharing | A permission operation costs 5 RU |
| Read an item's permissions | GET .../items/{id}/permissions | Direct in grantedToV2, by link in grantedToIdentitiesV2; the permission root comes from delta |
| Grant access to a single site | Sites.Selected + POST /sites/{id}/permissions | Writing requires Sites.FullControl.All; in a delegated session, a SharePoint admin who is a site member |
| Revoke that access | DELETE /sites/{id}/permissions/{id} | Or revoke the consent |
| Upload a large file | createUploadSession + PUT | Multiples of 320 KiB, under 60 MiB |
| Combine calls | POST /$batch | Up to 20; throttling counts each one |
| Migrate a network share | Migration Manager | Agents, CSV, files up to 250 GB |
| Export and promote flows | pac solution export / import | Imports the managed zip, with --settings-file per environment |
| Message in a Teams channel | POST /teams/{id}/channels/{id}/messages | Delegated; app only for migration |
| OneNote notebooks | /me/onenote/... | Delegated only since Mar 31, 2025 |
Three steps. Each one only makes sense after the previous one has shown results on your team.
A proposal, not a promise
Octo shows what is in the tenant and where access is too open, without writing anything.
Apps start seeing only the site they need; migrations start with a pre-scan and a manifest.
Sites.Selected instead of .AllFlows under version control, promotion by solution and a record of each access granted.
Every point below has a source published by Microsoft (Learn and Support), by the package's official repository (PyPI, NuGet, PowerShell Gallery) or in Brazilian federal law. The examples are scripts to follow, not runs. The sources are in the next section.
4
points with a published source, each with its reference shown alongside.
Sites.Selected starts with no access; the permission is written on the site with POST /sites/{id}/permissions and the roles read, write, owner or fullcontrol. On a list, item or file, it breaks inheritance. In a delegated session, whoever writes must be a SharePoint Administrator or higher and a member of the target site; the method only creates app permissions.Source: Microsoft Learn, selected permissions and creating a site permissionOcto prepares everything, but it does not sign. The document of record stays with whoever is accountable for it.
Surveys, organizes and produces the files: documents, spreadsheets, presentations, schedules, inventories and check reports, on file and through the APIs, without sending or publishing anything.
Deliverable: material ready to checkWhoever is accountable for the document, the spreadsheet or the schedule checks what Octo delivered before approving. If something doesn't add up, it goes back to Octo with the correction.
Step: checked by the person accountableOcto does not sign, approve or send. The document owner reviews and signs; the project manager approves the baseline; the Microsoft 365 administrator grants consent for permissions; the data protection officer approves anything that goes out with personal data.
Approval: document owner and 365 administratorOfficial documentation for Microsoft Graph, SharePoint Online, Entra ID and Power Platform, and the PnP PowerShell documentation, consulted on Oct 31, 2026.
The assessment starts with an inventory of sites and permissions, read-only. You get the list of what is too open, what will stop working and the questions only your team can answer, and you decide with that in hand.