@marktoflow/integrations 2.0.0-alpha.3
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/dist/adapters/claude-code.d.ts +16 -0
- package/dist/adapters/claude-code.d.ts.map +1 -0
- package/dist/adapters/claude-code.js +56 -0
- package/dist/adapters/claude-code.js.map +1 -0
- package/dist/adapters/ollama.d.ts +3 -0
- package/dist/adapters/ollama.d.ts.map +1 -0
- package/dist/adapters/ollama.js +9 -0
- package/dist/adapters/ollama.js.map +1 -0
- package/dist/adapters/opencode.d.ts +21 -0
- package/dist/adapters/opencode.d.ts.map +1 -0
- package/dist/adapters/opencode.js +119 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/claude-code.d.ts +16 -0
- package/dist/claude-code.d.ts.map +1 -0
- package/dist/claude-code.js +56 -0
- package/dist/claude-code.js.map +1 -0
- package/dist/github.d.ts +3 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +13 -0
- package/dist/github.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/jira.d.ts +3 -0
- package/dist/jira.d.ts.map +1 -0
- package/dist/jira.js +21 -0
- package/dist/jira.js.map +1 -0
- package/dist/ollama.d.ts +3 -0
- package/dist/ollama.d.ts.map +1 -0
- package/dist/ollama.js +9 -0
- package/dist/ollama.js.map +1 -0
- package/dist/opencode.d.ts +19 -0
- package/dist/opencode.d.ts.map +1 -0
- package/dist/opencode.js +104 -0
- package/dist/opencode.js.map +1 -0
- package/dist/script.d.ts +3 -0
- package/dist/script.d.ts.map +1 -0
- package/dist/script.js +21 -0
- package/dist/script.js.map +1 -0
- package/dist/services/airtable.d.ts +145 -0
- package/dist/services/airtable.d.ts.map +1 -0
- package/dist/services/airtable.js +295 -0
- package/dist/services/airtable.js.map +1 -0
- package/dist/services/confluence.d.ts +205 -0
- package/dist/services/confluence.d.ts.map +1 -0
- package/dist/services/confluence.js +356 -0
- package/dist/services/confluence.js.map +1 -0
- package/dist/services/discord.d.ts +212 -0
- package/dist/services/discord.d.ts.map +1 -0
- package/dist/services/discord.js +279 -0
- package/dist/services/discord.js.map +1 -0
- package/dist/services/github.d.ts +3 -0
- package/dist/services/github.d.ts.map +1 -0
- package/dist/services/github.js +13 -0
- package/dist/services/github.js.map +1 -0
- package/dist/services/gmail-trigger.d.ts +92 -0
- package/dist/services/gmail-trigger.d.ts.map +1 -0
- package/dist/services/gmail-trigger.js +172 -0
- package/dist/services/gmail-trigger.js.map +1 -0
- package/dist/services/gmail.d.ts +116 -0
- package/dist/services/gmail.d.ts.map +1 -0
- package/dist/services/gmail.js +333 -0
- package/dist/services/gmail.js.map +1 -0
- package/dist/services/http.d.ts +120 -0
- package/dist/services/http.d.ts.map +1 -0
- package/dist/services/http.js +284 -0
- package/dist/services/http.js.map +1 -0
- package/dist/services/jira.d.ts +3 -0
- package/dist/services/jira.d.ts.map +1 -0
- package/dist/services/jira.js +21 -0
- package/dist/services/jira.js.map +1 -0
- package/dist/services/linear.d.ts +163 -0
- package/dist/services/linear.d.ts.map +1 -0
- package/dist/services/linear.js +326 -0
- package/dist/services/linear.js.map +1 -0
- package/dist/services/notion.d.ts +206 -0
- package/dist/services/notion.d.ts.map +1 -0
- package/dist/services/notion.js +358 -0
- package/dist/services/notion.js.map +1 -0
- package/dist/services/outlook-trigger.d.ts +121 -0
- package/dist/services/outlook-trigger.d.ts.map +1 -0
- package/dist/services/outlook-trigger.js +204 -0
- package/dist/services/outlook-trigger.js.map +1 -0
- package/dist/services/outlook.d.ts +237 -0
- package/dist/services/outlook.d.ts.map +1 -0
- package/dist/services/outlook.js +475 -0
- package/dist/services/outlook.js.map +1 -0
- package/dist/services/slack-socket.d.ts +18 -0
- package/dist/services/slack-socket.d.ts.map +1 -0
- package/dist/services/slack-socket.js +46 -0
- package/dist/services/slack-socket.js.map +1 -0
- package/dist/services/slack.d.ts +3 -0
- package/dist/services/slack.d.ts.map +1 -0
- package/dist/services/slack.js +11 -0
- package/dist/services/slack.js.map +1 -0
- package/dist/slack.d.ts +3 -0
- package/dist/slack.d.ts.map +1 -0
- package/dist/slack.js +11 -0
- package/dist/slack.js.map +1 -0
- package/dist/tools/script.d.ts +3 -0
- package/dist/tools/script.d.ts.map +1 -0
- package/dist/tools/script.js +21 -0
- package/dist/tools/script.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { Client } from '@microsoft/microsoft-graph-client';
|
|
2
|
+
import { TriggerType } from '@marktoflow/core';
|
|
3
|
+
/**
|
|
4
|
+
* Outlook trigger handler for Microsoft Graph webhook subscriptions.
|
|
5
|
+
*
|
|
6
|
+
* Setup requirements:
|
|
7
|
+
* 1. Register an Azure AD application with Mail.Read permissions
|
|
8
|
+
* 2. Set up a publicly accessible webhook endpoint
|
|
9
|
+
* 3. Call subscribe() to start receiving notifications
|
|
10
|
+
* 4. Handle subscription renewal before expiration (max ~3 days)
|
|
11
|
+
*/
|
|
12
|
+
export class OutlookTrigger {
|
|
13
|
+
config;
|
|
14
|
+
client;
|
|
15
|
+
subscription;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
this.config = config;
|
|
18
|
+
this.client = Client.init({
|
|
19
|
+
authProvider: (done) => {
|
|
20
|
+
done(null, config.token);
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create a subscription to receive mail notifications.
|
|
26
|
+
*/
|
|
27
|
+
async subscribe() {
|
|
28
|
+
const changeTypes = this.config.changeTypes ?? ['created'];
|
|
29
|
+
const resource = this.config.resource ?? 'me/mailFolders/inbox/messages';
|
|
30
|
+
const expirationMinutes = this.config.expirationMinutes ?? 4230;
|
|
31
|
+
const expirationDateTime = new Date(Date.now() + expirationMinutes * 60 * 1000).toISOString();
|
|
32
|
+
const subscription = await this.client.api('/subscriptions').post({
|
|
33
|
+
changeType: changeTypes.join(','),
|
|
34
|
+
notificationUrl: this.config.notificationUrl,
|
|
35
|
+
resource,
|
|
36
|
+
expirationDateTime,
|
|
37
|
+
clientState: this.config.clientState,
|
|
38
|
+
});
|
|
39
|
+
this.subscription = {
|
|
40
|
+
id: subscription.id,
|
|
41
|
+
resource: subscription.resource,
|
|
42
|
+
changeType: subscription.changeType,
|
|
43
|
+
notificationUrl: subscription.notificationUrl,
|
|
44
|
+
expirationDateTime: subscription.expirationDateTime,
|
|
45
|
+
clientState: subscription.clientState,
|
|
46
|
+
};
|
|
47
|
+
return this.subscription;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Renew an existing subscription.
|
|
51
|
+
*/
|
|
52
|
+
async renew(expirationMinutes) {
|
|
53
|
+
if (!this.subscription) {
|
|
54
|
+
throw new Error('No active subscription to renew. Call subscribe() first.');
|
|
55
|
+
}
|
|
56
|
+
const minutes = expirationMinutes ?? this.config.expirationMinutes ?? 4230;
|
|
57
|
+
const expirationDateTime = new Date(Date.now() + minutes * 60 * 1000).toISOString();
|
|
58
|
+
const updated = await this.client.api(`/subscriptions/${this.subscription.id}`).patch({
|
|
59
|
+
expirationDateTime,
|
|
60
|
+
});
|
|
61
|
+
this.subscription.expirationDateTime = updated.expirationDateTime;
|
|
62
|
+
return this.subscription;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Delete the subscription (stop receiving notifications).
|
|
66
|
+
*/
|
|
67
|
+
async unsubscribe() {
|
|
68
|
+
if (!this.subscription) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
await this.client.api(`/subscriptions/${this.subscription.id}`).delete();
|
|
72
|
+
this.subscription = undefined;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the current subscription status.
|
|
76
|
+
*/
|
|
77
|
+
getSubscription() {
|
|
78
|
+
return this.subscription;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Check if subscription is still active (not expired).
|
|
82
|
+
*/
|
|
83
|
+
isSubscriptionActive() {
|
|
84
|
+
if (!this.subscription)
|
|
85
|
+
return false;
|
|
86
|
+
return new Date(this.subscription.expirationDateTime) > new Date();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Handle an incoming Graph notification.
|
|
90
|
+
* Call this from your webhook endpoint after validation.
|
|
91
|
+
*/
|
|
92
|
+
async handleNotification(notification) {
|
|
93
|
+
for (const item of notification.value) {
|
|
94
|
+
// Validate client state if configured
|
|
95
|
+
if (this.config.clientState && item.clientState !== this.config.clientState) {
|
|
96
|
+
console.warn('Invalid client state in notification, skipping');
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
// Map change type to event
|
|
100
|
+
let event;
|
|
101
|
+
switch (item.changeType) {
|
|
102
|
+
case 'created':
|
|
103
|
+
event = 'email_received';
|
|
104
|
+
break;
|
|
105
|
+
case 'updated':
|
|
106
|
+
event = 'email_updated';
|
|
107
|
+
break;
|
|
108
|
+
case 'deleted':
|
|
109
|
+
event = 'email_deleted';
|
|
110
|
+
break;
|
|
111
|
+
default:
|
|
112
|
+
console.warn(`Unknown change type: ${item.changeType}`);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const payload = {
|
|
116
|
+
type: TriggerType.WEBHOOK,
|
|
117
|
+
event,
|
|
118
|
+
subscriptionId: item.subscriptionId,
|
|
119
|
+
changeType: item.changeType,
|
|
120
|
+
resource: item.resource,
|
|
121
|
+
resourceData: item.resourceData
|
|
122
|
+
? {
|
|
123
|
+
'@odata.type': item.resourceData['@odata.type'],
|
|
124
|
+
'@odata.id': item.resourceData['@odata.id'],
|
|
125
|
+
'@odata.etag': item.resourceData['@odata.etag'],
|
|
126
|
+
id: item.resourceData.id,
|
|
127
|
+
}
|
|
128
|
+
: undefined,
|
|
129
|
+
clientState: item.clientState,
|
|
130
|
+
tenantId: item.tenantId,
|
|
131
|
+
};
|
|
132
|
+
// Call matching handlers
|
|
133
|
+
for (const trigger of this.config.triggers) {
|
|
134
|
+
if (trigger.event === event) {
|
|
135
|
+
await trigger.handler(payload);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Check if a request is a validation request from Graph.
|
|
142
|
+
*/
|
|
143
|
+
static isValidationRequest(query) {
|
|
144
|
+
return typeof query.validationToken === 'string';
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Validate the notification body structure.
|
|
148
|
+
*/
|
|
149
|
+
static validateNotification(body) {
|
|
150
|
+
if (!body || typeof body !== 'object')
|
|
151
|
+
return false;
|
|
152
|
+
const notification = body;
|
|
153
|
+
if (!Array.isArray(notification.value))
|
|
154
|
+
return false;
|
|
155
|
+
return notification.value.every((item) => {
|
|
156
|
+
if (!item || typeof item !== 'object')
|
|
157
|
+
return false;
|
|
158
|
+
const entry = item;
|
|
159
|
+
return (typeof entry.subscriptionId === 'string' &&
|
|
160
|
+
typeof entry.changeType === 'string' &&
|
|
161
|
+
typeof entry.resource === 'string');
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Express/Fastify-compatible middleware for handling Outlook Graph webhooks.
|
|
167
|
+
*
|
|
168
|
+
* Handles both:
|
|
169
|
+
* - Subscription validation (GET with validationToken)
|
|
170
|
+
* - Notification processing (POST with notification payload)
|
|
171
|
+
*/
|
|
172
|
+
export function createOutlookWebhookHandler(trigger) {
|
|
173
|
+
return async (req, res) => {
|
|
174
|
+
try {
|
|
175
|
+
// Handle subscription validation (Microsoft Graph sends GET with validationToken)
|
|
176
|
+
if (req.method === 'GET' || OutlookTrigger.isValidationRequest(req.query)) {
|
|
177
|
+
if (OutlookTrigger.isValidationRequest(req.query)) {
|
|
178
|
+
res.contentType('text/plain');
|
|
179
|
+
res.status(200).send(req.query.validationToken);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
res.status(400).send('Missing validationToken');
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
// Handle notification
|
|
186
|
+
if (!OutlookTrigger.validateNotification(req.body)) {
|
|
187
|
+
res.status(400).send('Invalid notification format');
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
// Process notification asynchronously (Graph expects quick 202 response)
|
|
191
|
+
setImmediate(() => {
|
|
192
|
+
trigger.handleNotification(req.body).catch((error) => {
|
|
193
|
+
console.error('Error processing notification:', error);
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
res.status(202).send('Accepted');
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
console.error('Outlook webhook error:', error);
|
|
200
|
+
res.status(500).send('Internal error');
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=outlook-trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outlook-trigger.js","sourceRoot":"","sources":["../../src/services/outlook-trigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { Client } from '@microsoft/microsoft-graph-client';
|
|
2
|
+
import { SDKInitializer } from '@marktoflow/core';
|
|
3
|
+
export interface OutlookEmail {
|
|
4
|
+
id: string;
|
|
5
|
+
conversationId: string;
|
|
6
|
+
subject: string;
|
|
7
|
+
from: string;
|
|
8
|
+
fromAddress: string;
|
|
9
|
+
to: {
|
|
10
|
+
name: string;
|
|
11
|
+
address: string;
|
|
12
|
+
}[];
|
|
13
|
+
cc?: {
|
|
14
|
+
name: string;
|
|
15
|
+
address: string;
|
|
16
|
+
}[];
|
|
17
|
+
bcc?: {
|
|
18
|
+
name: string;
|
|
19
|
+
address: string;
|
|
20
|
+
}[];
|
|
21
|
+
receivedDateTime: string;
|
|
22
|
+
sentDateTime?: string;
|
|
23
|
+
bodyPreview: string;
|
|
24
|
+
body?: string;
|
|
25
|
+
bodyHtml?: string;
|
|
26
|
+
isRead: boolean;
|
|
27
|
+
hasAttachments: boolean;
|
|
28
|
+
importance: 'low' | 'normal' | 'high';
|
|
29
|
+
categories: string[];
|
|
30
|
+
webLink?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface GetEmailsOptions {
|
|
33
|
+
folder?: string;
|
|
34
|
+
filter?: string;
|
|
35
|
+
select?: string[];
|
|
36
|
+
top?: number;
|
|
37
|
+
skip?: number;
|
|
38
|
+
orderBy?: string;
|
|
39
|
+
search?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface SendEmailOptions {
|
|
42
|
+
to: string | string[] | {
|
|
43
|
+
name?: string;
|
|
44
|
+
address: string;
|
|
45
|
+
}[];
|
|
46
|
+
subject: string;
|
|
47
|
+
body: string;
|
|
48
|
+
bodyType?: 'text' | 'html';
|
|
49
|
+
cc?: string | string[] | {
|
|
50
|
+
name?: string;
|
|
51
|
+
address: string;
|
|
52
|
+
}[];
|
|
53
|
+
bcc?: string | string[] | {
|
|
54
|
+
name?: string;
|
|
55
|
+
address: string;
|
|
56
|
+
}[];
|
|
57
|
+
importance?: 'low' | 'normal' | 'high';
|
|
58
|
+
saveToSentItems?: boolean;
|
|
59
|
+
replyTo?: string | {
|
|
60
|
+
name?: string;
|
|
61
|
+
address: string;
|
|
62
|
+
}[];
|
|
63
|
+
}
|
|
64
|
+
export interface CreateDraftOptions {
|
|
65
|
+
to?: string | string[] | {
|
|
66
|
+
name?: string;
|
|
67
|
+
address: string;
|
|
68
|
+
}[];
|
|
69
|
+
subject?: string;
|
|
70
|
+
body?: string;
|
|
71
|
+
bodyType?: 'text' | 'html';
|
|
72
|
+
cc?: string | string[] | {
|
|
73
|
+
name?: string;
|
|
74
|
+
address: string;
|
|
75
|
+
}[];
|
|
76
|
+
bcc?: string | string[] | {
|
|
77
|
+
name?: string;
|
|
78
|
+
address: string;
|
|
79
|
+
}[];
|
|
80
|
+
importance?: 'low' | 'normal' | 'high';
|
|
81
|
+
}
|
|
82
|
+
export interface CalendarEvent {
|
|
83
|
+
id: string;
|
|
84
|
+
subject: string;
|
|
85
|
+
body?: string;
|
|
86
|
+
bodyHtml?: string;
|
|
87
|
+
start: {
|
|
88
|
+
dateTime: string;
|
|
89
|
+
timeZone: string;
|
|
90
|
+
};
|
|
91
|
+
end: {
|
|
92
|
+
dateTime: string;
|
|
93
|
+
timeZone: string;
|
|
94
|
+
};
|
|
95
|
+
location?: string;
|
|
96
|
+
attendees: {
|
|
97
|
+
name: string;
|
|
98
|
+
address: string;
|
|
99
|
+
type: string;
|
|
100
|
+
}[];
|
|
101
|
+
organizer?: {
|
|
102
|
+
name: string;
|
|
103
|
+
address: string;
|
|
104
|
+
};
|
|
105
|
+
isOnlineMeeting: boolean;
|
|
106
|
+
onlineMeetingUrl?: string;
|
|
107
|
+
webLink?: string;
|
|
108
|
+
}
|
|
109
|
+
export interface GetEventsOptions {
|
|
110
|
+
startDateTime?: string;
|
|
111
|
+
endDateTime?: string;
|
|
112
|
+
top?: number;
|
|
113
|
+
skip?: number;
|
|
114
|
+
filter?: string;
|
|
115
|
+
orderBy?: string;
|
|
116
|
+
}
|
|
117
|
+
export interface CreateEventOptions {
|
|
118
|
+
subject: string;
|
|
119
|
+
body?: string;
|
|
120
|
+
bodyType?: 'text' | 'html';
|
|
121
|
+
start: {
|
|
122
|
+
dateTime: string;
|
|
123
|
+
timeZone?: string;
|
|
124
|
+
};
|
|
125
|
+
end: {
|
|
126
|
+
dateTime: string;
|
|
127
|
+
timeZone?: string;
|
|
128
|
+
};
|
|
129
|
+
location?: string;
|
|
130
|
+
attendees?: (string | {
|
|
131
|
+
name?: string;
|
|
132
|
+
address: string;
|
|
133
|
+
})[];
|
|
134
|
+
isOnlineMeeting?: boolean;
|
|
135
|
+
reminderMinutesBeforeStart?: number;
|
|
136
|
+
}
|
|
137
|
+
export interface OutlookDraft {
|
|
138
|
+
id: string;
|
|
139
|
+
conversationId?: string;
|
|
140
|
+
webLink?: string;
|
|
141
|
+
}
|
|
142
|
+
export interface GetEmailsResult {
|
|
143
|
+
emails: OutlookEmail[];
|
|
144
|
+
nextLink?: string;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Outlook actions for workflow integration (Email + Calendar)
|
|
148
|
+
*/
|
|
149
|
+
export declare class OutlookActions {
|
|
150
|
+
private client;
|
|
151
|
+
constructor(client: Client);
|
|
152
|
+
/**
|
|
153
|
+
* Get emails from Outlook mailbox
|
|
154
|
+
*/
|
|
155
|
+
getEmails(options?: GetEmailsOptions): Promise<GetEmailsResult>;
|
|
156
|
+
/**
|
|
157
|
+
* Get a specific email by ID
|
|
158
|
+
*/
|
|
159
|
+
getEmail(id: string): Promise<OutlookEmail>;
|
|
160
|
+
/**
|
|
161
|
+
* Send an email via Outlook
|
|
162
|
+
*/
|
|
163
|
+
sendEmail(options: SendEmailOptions): Promise<void>;
|
|
164
|
+
/**
|
|
165
|
+
* Create a draft email in Outlook
|
|
166
|
+
*/
|
|
167
|
+
createDraft(options: CreateDraftOptions): Promise<OutlookDraft>;
|
|
168
|
+
/**
|
|
169
|
+
* Reply to an email
|
|
170
|
+
*/
|
|
171
|
+
reply(messageId: string, body: string, bodyType?: 'text' | 'html', replyAll?: boolean): Promise<void>;
|
|
172
|
+
/**
|
|
173
|
+
* Forward an email
|
|
174
|
+
*/
|
|
175
|
+
forward(messageId: string, to: string | string[] | {
|
|
176
|
+
name?: string;
|
|
177
|
+
address: string;
|
|
178
|
+
}[], comment?: string): Promise<void>;
|
|
179
|
+
/**
|
|
180
|
+
* Mark an email as read
|
|
181
|
+
*/
|
|
182
|
+
markAsRead(id: string): Promise<void>;
|
|
183
|
+
/**
|
|
184
|
+
* Mark an email as unread
|
|
185
|
+
*/
|
|
186
|
+
markAsUnread(id: string): Promise<void>;
|
|
187
|
+
/**
|
|
188
|
+
* Move an email to a folder
|
|
189
|
+
*/
|
|
190
|
+
moveToFolder(messageId: string, destinationFolderId: string): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* Delete an email (move to deleted items)
|
|
193
|
+
*/
|
|
194
|
+
delete(id: string): Promise<void>;
|
|
195
|
+
/**
|
|
196
|
+
* List mail folders
|
|
197
|
+
*/
|
|
198
|
+
listFolders(): Promise<{
|
|
199
|
+
id: string;
|
|
200
|
+
displayName: string;
|
|
201
|
+
totalItemCount: number;
|
|
202
|
+
}[]>;
|
|
203
|
+
/**
|
|
204
|
+
* Get calendar events
|
|
205
|
+
*/
|
|
206
|
+
getEvents(options?: GetEventsOptions): Promise<CalendarEvent[]>;
|
|
207
|
+
/**
|
|
208
|
+
* Get a specific calendar event by ID
|
|
209
|
+
*/
|
|
210
|
+
getEvent(id: string): Promise<CalendarEvent>;
|
|
211
|
+
/**
|
|
212
|
+
* Create a calendar event
|
|
213
|
+
*/
|
|
214
|
+
createEvent(options: CreateEventOptions): Promise<CalendarEvent>;
|
|
215
|
+
/**
|
|
216
|
+
* Update a calendar event
|
|
217
|
+
*/
|
|
218
|
+
updateEvent(id: string, updates: Partial<CreateEventOptions>): Promise<CalendarEvent>;
|
|
219
|
+
/**
|
|
220
|
+
* Delete a calendar event
|
|
221
|
+
*/
|
|
222
|
+
deleteEvent(id: string): Promise<void>;
|
|
223
|
+
/**
|
|
224
|
+
* Accept a meeting invitation
|
|
225
|
+
*/
|
|
226
|
+
acceptEvent(id: string, comment?: string, sendResponse?: boolean): Promise<void>;
|
|
227
|
+
/**
|
|
228
|
+
* Decline a meeting invitation
|
|
229
|
+
*/
|
|
230
|
+
declineEvent(id: string, comment?: string, sendResponse?: boolean): Promise<void>;
|
|
231
|
+
/**
|
|
232
|
+
* Tentatively accept a meeting invitation
|
|
233
|
+
*/
|
|
234
|
+
tentativelyAcceptEvent(id: string, comment?: string, sendResponse?: boolean): Promise<void>;
|
|
235
|
+
}
|
|
236
|
+
export declare const OutlookInitializer: SDKInitializer;
|
|
237
|
+
//# sourceMappingURL=outlook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outlook.d.ts","sourceRoot":"","sources":["../../src/services/outlook.ts"],"names":[],"mappings":"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"}
|