@deploybaseline/microsoft
v0.14.1
Published
Microsoft Entra ID OAuth 2.0 / OpenID Connect and Microsoft Graph (users, groups, Outlook mail, calendar, contacts, To Do) emulator: OAuth authorize, token exchange, userinfo, OIDC discovery, logout, and token revocation, plus Graph `/me`, `/users`, `/gro
Readme
@deploybaseline/microsoft
Microsoft Entra ID OAuth 2.0 / OpenID Connect and Microsoft Graph (users, groups, Outlook mail, calendar, contacts, To Do) emulator: OAuth authorize, token exchange, userinfo, OIDC discovery, logout, and token revocation, plus Graph /me, /users, /groups, mail folders, messages, sendMail, attachments, mailbox settings, calendars, events, calendarView, getSchedule, findMeetingTimes, contacts, To Do, places, subscriptions, and $batch. SharePoint Online and OneDrive are served through Graph (sites, lists, list items, drives, drive items, permissions, sharing, search) and the SharePoint REST API (/{site}/_api) from one shared state, with a control plane at /_baseline/sharepoint.
Part of Baseline: local drop-in replacement services for CI and no-network sandboxes.
Usage
npx @deploybaseline/cli start --service microsoftimport { createEmulator } from "@deploybaseline/cli";
const microsoft = await createEmulator({ service: "microsoft" });
// Sign in at microsoft.url and call Graph at `${microsoft.url}/v1.0/...`
await microsoft.close();MSAL and the Microsoft Graph SDKs only attach tokens to HTTPS hosts. Start with an https base URL (the emulator still listens on plain HTTP) and give the SDK a transport that rewrites requests to http::
npx @deploybaseline/cli start --service microsoft --port 4005 --base-url https://localhost:4005Behavior is recorded from a real Microsoft 365 tenant and replayed against the emulator on every test run; see conformance/README.md and the coverage matrix in docs/coverage.md.
Documentation
- Microsoft docs: Entra ID flows, issuers, Graph routes, permissions, SDK setup, seed keys, and fidelity notes
- API reference:
http://localhost:3999/docs/microsoftwhile the CLI runs (how it works)
License
Apache-2.0
