microsoft-graph-client
v1.0.49
Published
TypeScript client library for Microsoft Graph API with built-in authentication
Maintainers
Readme
Microsoft Graph Client
TypeScript client library for Microsoft Graph API. Thin wrapper providing typed domain APIs — no caching, no auto-pagination, no built-in auth flow. Requires a pre-obtained access token.
Installation
npm install microsoft-graph-clientUsage
import { GraphClient } from 'microsoft-graph-client';
const client = new GraphClient({
clientId: process.env.MS_GRAPH_CLIENT_ID,
tenantId: process.env.MS_GRAPH_TENANT_ID,
accessToken: 'eyJ...', // Pre-obtained access token (required)
});
await client.initialize();
// Get current user
const me = await client.users.getCurrentUser();
// Search chats by member name
const result = await client.chats.search({ memberName: 'John' });
// Send a message to a chat
await client.messages.sendChatMessage({
chatId: '19:[email protected]',
message: 'Hello!',
});
// Get messages from a chat
const messages = await client.messages.getChatMessages({
chatId: '19:[email protected]',
limit: 20,
});
// Send mail
await client.mail.send({
to: [{ emailAddress: { address: '[email protected]' } }],
subject: 'Hello',
body: { content: 'Message body', contentType: 'text' },
});
// List mail (inbox by default)
const mails = await client.mail.list({ top: 10 });
// Get calendar events
const events = await client.calendar.getEvents({
startDateTime: '2025-01-01T00:00:00Z',
endDateTime: '2025-01-31T23:59:59Z',
});
// Download SharePoint file
const file = await client.files.download({
siteHost: 'company.sharepoint.com',
sitePath: '/sites/TeamSite',
filePath: '/Documents/report.pdf',
});
// Get meeting transcripts
const transcripts = await client.transcripts.list({ meetingId: 'xxx' });API Structure
| Domain | Methods |
|--------|---------|
| client.users | getCurrentUser, get, search, setPresence, setPreferredPresence |
| client.chats | get, search, create |
| client.messages | get, getChatMessages, sendChatMessage, updateChatMessage, search, setReaction, unsetReaction |
| client.mail | list, get, search, send, reply, forward, markRead, move, copy, delete |
| client.mailFolders | list, listChildren, get, create, update, delete, move |
| client.mailRules | list, get, create, update, delete (inbox rules) |
| client.calendar | getEvents, createEvent, findMeetingTimes, cancelEvent |
| client.files | download, upload, update, grantPermission |
| client.transcripts | getMeetingByJoinUrl, list, getContent |
| client.subscriptions | create, renew, delete, list, get |
Authentication
The client requires a pre-obtained access token. There is no built-in OAuth or device code flow — the caller is responsible for obtaining and refreshing tokens.
const client = new GraphClient({
clientId: process.env.MS_GRAPH_CLIENT_ID,
tenantId: process.env.MS_GRAPH_TENANT_ID,
accessToken: token, // Required — obtained via OAuth proxy or other means
});
await client.initialize();Azure App Registration
- Go to Azure Portal > Azure Active Directory > App registrations
- Create a new registration with "Accounts in this organizational directory only"
- Under API permissions, add Microsoft Graph delegated permissions as needed
- Copy the Application (client) ID and Directory (tenant) ID
Raw SDK Access
For operations not covered by the typed APIs:
const sdkClient = await client.getSDKClient();
const result = await sdkClient.api('/me/photo/$value').get();Requirements
- Node.js >= 22.0.0
License
MIT
