microsoft-graph-client 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -0
- package/dist/api/messages.js +2 -2
- package/dist/api/messages.js.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Microsoft Graph Client
|
|
2
|
+
|
|
3
|
+
TypeScript client for Microsoft Graph API with built-in authentication.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install microsoft-graph-client
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { GraphClient } from 'microsoft-graph-client';
|
|
15
|
+
|
|
16
|
+
// Create client with pre-seeded auth (for production/CI)
|
|
17
|
+
const client = new GraphClient({
|
|
18
|
+
clientId: process.env.MS_GRAPH_CLIENT_ID,
|
|
19
|
+
tenantId: process.env.MS_GRAPH_TENANT_ID,
|
|
20
|
+
authRecord: process.env.MS_GRAPH_AUTH_RECORD,
|
|
21
|
+
tokenCache: process.env.MS_GRAPH_TOKEN_CACHE,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
await client.initialize();
|
|
25
|
+
|
|
26
|
+
// Get current user
|
|
27
|
+
const me = await client.users.getCurrentUser();
|
|
28
|
+
|
|
29
|
+
// Search chats by member name
|
|
30
|
+
const result = await client.chats.search({ memberName: 'John' });
|
|
31
|
+
|
|
32
|
+
// Send a message to a chat
|
|
33
|
+
await client.messages.sendChatMessage({
|
|
34
|
+
chatId: '19:xxx@thread.v2',
|
|
35
|
+
message: 'Hello!',
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Get messages from a chat
|
|
39
|
+
const messages = await client.messages.getChatMessages({
|
|
40
|
+
chatId: '19:xxx@thread.v2',
|
|
41
|
+
limit: 20,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// Send mail
|
|
45
|
+
await client.mail.send({
|
|
46
|
+
to: [{ emailAddress: { address: 'user@example.com' } }],
|
|
47
|
+
subject: 'Hello',
|
|
48
|
+
body: { content: 'Message body', contentType: 'text' },
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// Get calendar events
|
|
52
|
+
const events = await client.calendar.getEvents({
|
|
53
|
+
startDateTime: '2025-01-01T00:00:00Z',
|
|
54
|
+
endDateTime: '2025-01-31T23:59:59Z',
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// Download SharePoint file
|
|
58
|
+
const file = await client.files.download({
|
|
59
|
+
siteHost: 'company.sharepoint.com',
|
|
60
|
+
sitePath: '/sites/TeamSite',
|
|
61
|
+
filePath: '/Documents/report.pdf',
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Get meeting transcripts
|
|
65
|
+
const transcripts = await client.transcripts.list({ meetingId: 'xxx' });
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## API Structure
|
|
69
|
+
|
|
70
|
+
| Domain | Methods |
|
|
71
|
+
|--------|---------|
|
|
72
|
+
| `client.users` | `getCurrentUser`, `get`, `search`, `setPresence`, `setPreferredPresence` |
|
|
73
|
+
| `client.chats` | `get`, `search`, `create` |
|
|
74
|
+
| `client.messages` | `get`, `getChatMessages`, `sendChatMessage`, `updateChatMessage`, `search`, `setReaction`, `unsetReaction` |
|
|
75
|
+
| `client.mail` | `list`, `send` |
|
|
76
|
+
| `client.calendar` | `getEvents`, `createEvent`, `findMeetingTimes`, `cancelEvent` |
|
|
77
|
+
| `client.files` | `download`, `upload`, `update`, `grantPermission` |
|
|
78
|
+
| `client.transcripts` | `getMeetingByJoinUrl`, `list`, `getContent` |
|
|
79
|
+
| `client.subscriptions` | `create`, `renew`, `delete`, `list`, `get` |
|
|
80
|
+
|
|
81
|
+
## Authentication
|
|
82
|
+
|
|
83
|
+
The client supports two authentication modes:
|
|
84
|
+
|
|
85
|
+
### 1. Device Code Auth (Interactive)
|
|
86
|
+
|
|
87
|
+
For local development or first-time setup:
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
const client = new GraphClient({
|
|
91
|
+
clientId: 'your-app-client-id',
|
|
92
|
+
tenantId: 'your-tenant-id',
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
// This will prompt you to visit a URL and enter a code
|
|
96
|
+
const result = await client.authenticate((info) => {
|
|
97
|
+
console.log(info.message);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
// Save these for later use
|
|
101
|
+
console.log('Auth Record:', result.authRecord);
|
|
102
|
+
console.log('Token Cache:', result.tokenCache);
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 2. Pre-seeded Auth (Non-interactive)
|
|
106
|
+
|
|
107
|
+
For production deployments with credentials from environment:
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
const client = new GraphClient({
|
|
111
|
+
clientId: process.env.MS_GRAPH_CLIENT_ID,
|
|
112
|
+
tenantId: process.env.MS_GRAPH_TENANT_ID,
|
|
113
|
+
authRecord: process.env.MS_GRAPH_AUTH_RECORD,
|
|
114
|
+
tokenCache: process.env.MS_GRAPH_TOKEN_CACHE,
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
await client.initialize();
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Environment Variables
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
MS_GRAPH_CLIENT_ID=your-azure-app-client-id
|
|
124
|
+
MS_GRAPH_TENANT_ID=your-azure-tenant-id
|
|
125
|
+
MS_GRAPH_AUTH_RECORD={"homeAccountId":"...","environment":"..."}
|
|
126
|
+
MS_GRAPH_TOKEN_CACHE={"Account":{"..."},"RefreshToken":{"..."}}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Azure App Registration
|
|
130
|
+
|
|
131
|
+
1. Go to [Azure Portal](https://portal.azure.com) > Azure Active Directory > App registrations
|
|
132
|
+
2. Create a new registration with "Accounts in this organizational directory only"
|
|
133
|
+
3. Add a Mobile/Desktop redirect URI: `http://localhost`
|
|
134
|
+
4. Under API permissions, add Microsoft Graph delegated permissions as needed
|
|
135
|
+
5. Copy the Application (client) ID and Directory (tenant) ID
|
|
136
|
+
|
|
137
|
+
## Raw SDK Access
|
|
138
|
+
|
|
139
|
+
For operations not covered by the typed APIs:
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
const sdkClient = await client.getSDKClient();
|
|
143
|
+
const result = await sdkClient.api('/me/photo/$value').get();
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Requirements
|
|
147
|
+
|
|
148
|
+
- Node.js >= 22.0.0
|
|
149
|
+
|
|
150
|
+
## License
|
|
151
|
+
|
|
152
|
+
MIT
|
package/dist/api/messages.js
CHANGED
|
@@ -16,7 +16,7 @@ export class MessagesApi extends BaseApi {
|
|
|
16
16
|
*/
|
|
17
17
|
async getChatMessages(params) {
|
|
18
18
|
let query = this.client
|
|
19
|
-
.api(`/
|
|
19
|
+
.api(`/chats/${params.chatId}/messages`)
|
|
20
20
|
.top(params.limit || 20)
|
|
21
21
|
.orderby('createdDateTime desc');
|
|
22
22
|
if (params.fromUser) {
|
|
@@ -96,7 +96,7 @@ export class MessagesApi extends BaseApi {
|
|
|
96
96
|
mentions,
|
|
97
97
|
attachments,
|
|
98
98
|
};
|
|
99
|
-
return this.client.api(`/
|
|
99
|
+
return this.client.api(`/chats/${params.chatId}/messages`).post(messagePayload);
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
102
|
* Update an existing chat message.
|
package/dist/api/messages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/api/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAkBtD;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,OAAO;IACtC;;OAEG;IACI,KAAK,CAAC,GAAG,CAAC,MAAwB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,EAA0B,CAAC;IAC/G,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,MAA6B;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM;aACpB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/api/messages.ts"],"names":[],"mappings":"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"}
|