{
  "connector": "sharepoint",
  "label": "SharePoint",
  "vendor_docs": "https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/get-to-know-the-sharepoint-rest-service",
  "summary": "A SharePoint Online tenant that answers Microsoft Graph's sites, drives, lists and pages, SharePoint's classic `_api` REST and SOAP reads for the official client libraries, plus an MCP server.",
  "surfaces": [
    {
      "kind": "REST",
      "path": "/v1.0",
      "notes": "Microsoft Graph sites, drives, driveItems, lists, list items, pages, permissions, delta and subscriptions; `$batch`"
    },
    {
      "kind": "REST",
      "path": "/_api",
      "notes": "SharePoint REST (also `/sites/{name}/_api`) for webs, lists, items, files, folders, search, comments and likes; `$batch`"
    },
    {
      "kind": "OAuth",
      "path": "/{tenant}/oauth2/v2.0/token",
      "notes": "client credentials with Graph and SharePoint scopes, `Sites.Selected` site grants"
    },
    {
      "kind": "MCP",
      "path": "/mcp",
      "notes": "Streamable HTTP"
    }
  ],
  "api_versions": [
    "Microsoft Graph v1.0",
    "SharePoint REST (`_api`)"
  ],
  "supported": [
    {
      "item": "Office365-REST-Python-Client and PnPjs request shapes against `_api`, including `GetByTitle`, `GetById`, `GetItemById` and `/sites/{name}/_api` addressing"
    },
    {
      "item": "Comments, replies and `@mention{n}` mentions on list items and pages, comment and item likes, `likedByInformation`, `Reputation.SetLike`, `SetCommentsDisabled` and the page's `showComments`"
    },
    {
      "item": "Drive and list delta with resumable tokens, and change-notification subscriptions with the validation handshake"
    },
    {
      "item": "Refusals in each surface's own envelope (`accessDenied`, `-2147024891, System.UnauthorizedAccessException`, `itemNotFound`)"
    },
    {
      "item": "A day1 estate and a day2 incremental that only appends to it"
    },
    {
      "item": "The REST change log (`getChanges`, `RenderListDataAsStream`), chunked `startUpload`/`continueUpload`/`finishUpload`, recycle-bin restore and `SP.MoveCopyUtil.*`"
    },
    {
      "item": "Role-inheritance and role-assignment writes, role definitions, field and view creation, `webs/add`, navigation, regional settings and site features over `_api`"
    },
    {
      "item": "Graph follow and `followedSites`, special folders, media facets, `getActivitiesByInterval` activity stats, the term store, sensitivity labels, `$count` and `sites/getByPath`"
    }
  ],
  "unsupported": [
    {
      "item": "Document sets, content-type hubs, retention labels, and Graph content-type create/update/delete"
    },
    {
      "item": "SOAP writes (`Lists.asmx` writes, `Webs.asmx`, `Copy.asmx`) and Excel workbook comments"
    }
  ],
  "differences": [
    {
      "scenario": "Site group membership",
      "difference": "Membership is derived from the site's grants and served read-only; adding a member through `_api` is refused.",
      "guidance": "Grant access through site permissions instead of group membership."
    },
    {
      "scenario": "Comment entities in Office365-REST-Python-Client",
      "difference": "The client keys a `Comment` on `Id` while the service sends `id`, as SharePoint Online does, so a comment read from a collection is not addressable as is.",
      "guidance": "Address a fetched comment as `Comments({id})` before calling `like()` or `delete_object()`."
    }
  ],
  "faults_supported": [
    {
      "fault": "throttle",
      "behaviour": "429 with `Retry-After`, the way SharePoint Online throttles"
    }
  ]
}
