@exellix/microsoft-365-user-read-services
v1.0.0
Published
Delegated Microsoft Graph read runtime for one Microsoft 365 user.
Readme
@exellix/microsoft-365-user-read-services
Microsoft Graph runtime for one delegated Microsoft 365 user.
Environment
EXELLIX_M365_USER_READ_PORT=9711
MICROSOFT_GRAPH_REQUEST_TIMEOUT_MS=30000
MICROSOFT_GRAPH_READ_OPERATION_MAP_PATH=/config/operation-map.json
MICROSOFT_365_READ_CREDENTIALS_JSON='{"customer:m365-read":{"role":"read","authMode":"delegated-oauth","accessToken":"...","userPrincipalName":"[email protected]","scopes":["User.Read","Mail.Read","Files.Read.All"]}}'
MEMORIX_DATA_PLANE_WRITE_URL=http://memorix-data-plane/records
MEMORIX_DATA_PLANE_TOKEN=...
# Optional Logxer (disabled unless a Mongo URI is set):
# logxer_mongo_uri=mongodb://localhost:27017
# M365_USER_READ_LOGS_LEVEL=infoStub / fixture mode
Serve mock/microsoft-365 fixtures instead of calling Graph with "stub": { "enabled": true, "vendor": "microsoft-365" } or M365_USER_READ_USE_STUBS=1. Optional: M365_USER_READ_STUB_VENDOR, M365_USER_READ_STUB_ROOT. Stub mode also serves fixtures for list-shared-with-me-legacy even when that Graph op is disabled live.
Logging (@x12i/logxer)
Optional. Without a Mongo URI (logxer_mongo_uri / MONGO_URI / related fallbacks), logging is a silent noop. When enabled, use M365_USER_READ_LOGS_LEVEL (off | error | warn | info | debug | verbose).
The package does not implement tenant-wide application access. A credential resolver supplies a delegated access token for the one user represented by the integration instance.
list-shared-with-me-legacy is disabled in the default operation map because Microsoft deprecated that API. Enable it only as a temporary migration measure. Use search-accessible-files for user-visible OneDrive and SharePoint search, and direct drive/item IDs for deterministic reads.
Monorepo
From the exellix-connectors root:
npm run m365-read:dev