dingtalk-mcp 1.0.11 → 1.0.13

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.
@@ -0,0 +1,714 @@
1
+ server:
2
+ name: dingtalk-calendar
3
+ securitySchemes:
4
+ - id: DingTalkAuth
5
+ type: apiKey
6
+ in: header
7
+ name: x-acs-dingtalk-access-token
8
+ tools:
9
+ - name: addAttendee
10
+ description: "向指定日程添加参与者,支持批量添加多人,可设置参与者类型和通知方式"
11
+ args:
12
+ - name: attendeesToAdd
13
+ description: "需要添加的参与者列表,包含用户ID和参与类型"
14
+ type: array
15
+ required: true
16
+ items:
17
+ type: object
18
+ position: body
19
+ - name: calendarId
20
+ description: "日历ID,使用'primary'表示主日历"
21
+ type: string
22
+ required: true
23
+ position: path
24
+ - name: chatNotification
25
+ description: "是否发送单聊通知"
26
+ type: boolean
27
+ position: body
28
+ - name: eventId
29
+ description: "日程ID"
30
+ type: string
31
+ required: true
32
+ position: path
33
+ - name: id
34
+ description: "参与者的用户ID"
35
+ type: string
36
+ position: body
37
+ - name: isOptional
38
+ description: "是否为可选参与者(true=可选,false=必须)"
39
+ type: boolean
40
+ position: body
41
+ - name: pushNotification
42
+ description: "是否发送弹窗提醒"
43
+ type: boolean
44
+ position: body
45
+ - name: userId
46
+ description: "日程创建者的userId"
47
+ type: string
48
+ required: true
49
+ position: path
50
+ - name: x-client-token
51
+ description: "幂等性校验令牌,避免重复请求"
52
+ type: string
53
+ position: header
54
+ requestTemplate:
55
+ url: https://api.dingtalk.com/v1.0/calendar/users/{userId}/calendars/{calendarId}/events/{eventId}/attendees
56
+ method: POST
57
+ headers:
58
+ - key: Content-Type
59
+ value: application/json
60
+ security:
61
+ id: DingTalkAuth
62
+ responseTemplate:
63
+ body: |
64
+ # 日程参与者添加结果
65
+
66
+ {{if .success}}
67
+ ✅ **操作成功** - 已成功向日程添加参与者
68
+
69
+ **日程信息**:
70
+ - 日程ID: {{.eventId}}
71
+ - 操作时间: {{.timestamp}}
72
+
73
+ **添加的参与者**:
74
+ {{range $i, $attendee := .attendees}}
75
+ {{add $i 1}}. {{$attendee.displayName}}
76
+ - unionId: {{$attendee.id}}
77
+ - 参与类型: {{if $attendee.isOptional}}可选参与{{else}}必须参与{{end}}
78
+ - 通知状态: {{if $attendee.notified}}已通知{{else}}未通知{{end}}
79
+ {{end}}
80
+
81
+ {{if .notifications}}
82
+ **通知发送状态**:
83
+ - 单聊通知: {{if .notifications.chatSent}}已发送{{else}}未发送{{end}}
84
+ - 弹窗提醒: {{if .notifications.pushSent}}已发送{{else}}未发送{{end}}
85
+ {{end}}
86
+
87
+ {{else}}
88
+ ❌ **操作失败** - {{.error}}
89
+
90
+ **错误详情**: {{.errorMessage}}
91
+ {{end}}
92
+
93
+ - name: createEvent
94
+ description: "创建新的日程,支持设置时间、参与者、提醒等完整功能"
95
+ args:
96
+ - name: userId
97
+ description: "日程创建者的userId"
98
+ type: string
99
+ required: true
100
+ position: path
101
+ - name: calendarId
102
+ description: "日历ID,使用'primary'表示主日历"
103
+ type: string
104
+ required: true
105
+ position: path
106
+ - name: summary
107
+ description: "日程标题"
108
+ type: string
109
+ required: true
110
+ position: body
111
+ - name: start
112
+ description: "日程开始时间"
113
+ type: object
114
+ required: true
115
+ position: body
116
+ - name: end
117
+ description: "日程结束时间"
118
+ type: object
119
+ required: true
120
+ position: body
121
+ - name: description
122
+ description: "日程描述内容"
123
+ type: string
124
+ position: body
125
+ - name: isAllDay
126
+ description: "是否为全天日程"
127
+ type: boolean
128
+ position: body
129
+ - name: attendees
130
+ description: "参与者列表"
131
+ type: array
132
+ items:
133
+ type: object
134
+ position: body
135
+ requestTemplate:
136
+ url: https://api.dingtalk.com/v1.0/calendar/users/{userId}/calendars/{calendarId}/events
137
+ method: POST
138
+ security:
139
+ id: DingTalkAuth
140
+ responseTemplate:
141
+ body: |
142
+ # 日程创建结果
143
+
144
+ {{if .success}}
145
+ ✅ **日程创建成功**
146
+
147
+ **日程信息**:
148
+ - 📅 标题: {{.summary}}
149
+ - 🆔 日程ID: {{.id}}
150
+ - ⏰ 开始时间: {{.start.dateTime | formatTime}}
151
+ - ⏰ 结束时间: {{.end.dateTime | formatTime}}
152
+ - 📍 类型: {{if .isAllDay}}全天日程{{else}}定时日程{{end}}
153
+ {{if .description}}
154
+ - 📝 描述: {{.description}}
155
+ {{end}}
156
+ {{if .location}}
157
+ - 📍 地点: {{.location.displayName}}
158
+ {{end}}
159
+
160
+ {{if .attendees}}
161
+ **参与者** ({{len .attendees}}人):
162
+ {{range $i, $attendee := .attendees}}
163
+ {{add $i 1}}. {{$attendee.displayName}}{{if $attendee.isOptional}} (可选){{end}}
164
+ {{end}}
165
+ {{end}}
166
+
167
+ **访问方式**:
168
+ - 日程链接: {{.webLink}}
169
+ {{if .onlineMeeting}}
170
+ - 会议链接: {{.onlineMeeting.joinUrl}}
171
+ {{end}}
172
+
173
+ {{else}}
174
+ ❌ **日程创建失败** - {{.error}}
175
+
176
+ **错误详情**: {{.errorMessage}}
177
+ {{end}}
178
+
179
+ - name: deleteEvent
180
+ description: "删除指定日程,组织者删除将通知所有参与者,参与者删除仅从自己日历移除"
181
+ args:
182
+ - name: calendarId
183
+ description: "日历ID,使用'primary'表示主日历"
184
+ type: string
185
+ required: true
186
+ position: path
187
+ - name: eventId
188
+ description: "要删除的日程ID"
189
+ type: string
190
+ required: true
191
+ position: path
192
+ - name: pushNotification
193
+ description: "是否发送弹窗通知"
194
+ type: boolean
195
+ position: query
196
+ - name: userId
197
+ description: "执行删除操作的userId"
198
+ type: string
199
+ required: true
200
+ position: path
201
+ - name: x-client-token
202
+ description: "幂等性校验令牌"
203
+ type: string
204
+ position: header
205
+ requestTemplate:
206
+ url: https://api.dingtalk.com/v1.0/calendar/users/{userId}/calendars/{calendarId}/events/{eventId}?pushNotification=Boolean
207
+ method: DELETE
208
+ security:
209
+ id: DingTalkAuth
210
+ responseTemplate:
211
+ body: |
212
+ # 日程删除结果
213
+
214
+ {{if .success}}
215
+ ✅ **日程删除成功**
216
+
217
+ **删除信息**:
218
+ - 日程ID: {{.eventId}}
219
+ - 删除者: {{.deletedBy}}
220
+ - 删除时间: {{.deletedAt | formatTime}}
221
+ - 影响范围: {{if .isOrganizer}}所有参与者(组织者删除){{else}}仅自己(参与者退出){{end}}
222
+
223
+ {{if .notifications}}
224
+ **通知状态**:
225
+ {{if .isOrganizer}}
226
+ - 取消通知已发送给 {{.notifications.notifiedCount}} 位参与者
227
+ {{end}}
228
+ - 弹窗提醒: {{if .notifications.pushSent}}已发送{{else}}未发送{{end}}
229
+ {{end}}
230
+
231
+ {{else}}
232
+ ❌ **日程删除失败** - {{.error}}
233
+
234
+ **错误详情**: {{.errorMessage}}
235
+ {{end}}
236
+
237
+ - name: getEventsView
238
+ description: "查询指定时间范围内的日程视图,支持循环日程展开显示"
239
+ args:
240
+ - name: calendarId
241
+ description: "日历ID,使用'primary'表示主日历"
242
+ type: string
243
+ required: true
244
+ position: path
245
+ - name: maxAttendees
246
+ description: "每个日程返回的参与者数量上限(默认100,最大100)"
247
+ type: integer
248
+ position: query
249
+ - name: maxResults
250
+ description: "返回的日程数量上限(默认100,最大100)"
251
+ type: integer
252
+ position: query
253
+ - name: nextToken
254
+ description: "分页标记,用于获取下一页数据"
255
+ type: string
256
+ position: query
257
+ - name: timeMax
258
+ description: "查询结束时间(ISO-8601格式)"
259
+ type: string
260
+ position: query
261
+ - name: timeMin
262
+ description: "查询开始时间(ISO-8601格式)"
263
+ type: string
264
+ position: query
265
+ - name: userId
266
+ description: "要查询的userId"
267
+ type: string
268
+ required: true
269
+ position: path
270
+ requestTemplate:
271
+ url: https://api.dingtalk.com/v1.0/calendar/users/{userId}/calendars/{calendarId}/eventsview?timeMin=String&timeMax=String&maxResults=Long&nextToken=String
272
+ method: GET
273
+ security:
274
+ id: DingTalkAuth
275
+ responseTemplate:
276
+ body: |
277
+ # 📅 日程视图查询结果
278
+
279
+ {{if .events}}
280
+ **查询范围**: {{.timeMin | formatTime}} 至 {{.timeMax | formatTime}}
281
+ **找到日程**: {{len .events}} 个{{if .hasMore}}(显示部分,还有更多){{end}}
282
+
283
+ {{range $i, $event := .events}}
284
+ ## {{add $i 1}}. {{$event.summary}}
285
+
286
+ **⏰ 时间**: {{$event.start.dateTime | formatTime}} - {{$event.end.dateTime | formatTime}}
287
+ {{if $event.isAllDay}}**📅 类型**: 全天日程{{end}}
288
+ {{if $event.location}}**📍 地点**: {{$event.location.displayName}}{{end}}
289
+ {{if $event.description}}**📝 描述**: {{$event.description | truncate 100}}{{end}}
290
+ {{if $event.attendees}}**👥 参与者**: {{len $event.attendees}}人{{end}}
291
+ {{if $event.seriesMasterId}}**🔄 循环**: 这是循环日程的一个实例{{end}}
292
+
293
+ {{end}}
294
+
295
+ {{if .nextToken}}
296
+ ---
297
+ **📄 分页信息**: 使用 nextToken "{{.nextToken}}" 获取更多结果
298
+ {{end}}
299
+
300
+ {{else}}
301
+ 📭 **暂无日程**
302
+
303
+ 指定时间范围内没有找到任何日程。
304
+ {{end}}
305
+
306
+ - name: getEventDetails
307
+ description: "获取指定日程的详细信息,包含完整的参与者、位置、描述等信息"
308
+ args:
309
+ - name: calendarId
310
+ description: "日历ID,使用'primary'表示主日历"
311
+ type: string
312
+ required: true
313
+ position: path
314
+ - name: eventId
315
+ description: "日程ID"
316
+ type: string
317
+ required: true
318
+ position: path
319
+ - name: userId
320
+ description: "查询者的userId"
321
+ type: string
322
+ required: true
323
+ position: path
324
+ - name: maxAttendees
325
+ description: "返回的参与者数量上限(默认100,最大100)"
326
+ type: integer
327
+ position: query
328
+ requestTemplate:
329
+ url: https://api.dingtalk.com/v1.0/calendar/users/{userId}/calendars/{calendarId}/events/{eventId}?maxAttendees=Long
330
+ method: GET
331
+ security:
332
+ id: DingTalkAuth
333
+ responseTemplate:
334
+ body: |
335
+ # 📅 日程详情
336
+
337
+ ## {{.summary}}
338
+
339
+ **基本信息**:
340
+ - 🆔 日程ID: {{.id}}
341
+ - ⏰ 开始时间: {{.start.dateTime | formatTime}}
342
+ - ⏰ 结束时间: {{.end.dateTime | formatTime}}
343
+ - 📅 类型: {{if .isAllDay}}全天日程{{else}}定时日程{{end}}
344
+ - 👤 创建者: {{.organizer.displayName}}
345
+ - 📊 状态: {{.status}}
346
+
347
+ {{if .description}}
348
+ **📝 详细描述**:
349
+ {{.description}}
350
+ {{end}}
351
+
352
+ {{if .location}}
353
+ **📍 会议地点**:
354
+ {{.location.displayName}}
355
+ {{end}}
356
+
357
+ {{if .onlineMeeting}}
358
+ **💻 在线会议**:
359
+ - 会议链接: {{.onlineMeeting.joinUrl}}
360
+ - 会议ID: {{.onlineMeeting.conferenceId}}
361
+ {{end}}
362
+
363
+ {{if .attendees}}
364
+ **👥 参与者** ({{len .attendees}}人):
365
+ {{range $i, $attendee := .attendees}}
366
+ {{add $i 1}}. {{$attendee.displayName}}
367
+ - 状态: {{$attendee.responseStatus}}{{if $attendee.isOptional}} (可选参与){{end}}
368
+ {{if $attendee.comment}}- 备注: {{$attendee.comment}}{{end}}
369
+ {{end}}
370
+ {{end}}
371
+
372
+ {{if .recurrence}}
373
+ **🔄 重复设置**:
374
+ {{.recurrence | formatRecurrence}}
375
+ {{end}}
376
+
377
+ {{if .reminders}}
378
+ **⏰ 提醒设置**:
379
+ {{range $reminder := .reminders}}
380
+ - {{$reminder.method}}: 提前{{$reminder.minutes}}分钟
381
+ {{end}}
382
+ {{end}}
383
+
384
+ - name: listAttendees
385
+ description: "获取指定日程的所有参与者列表及其状态信息"
386
+ args:
387
+ - name: calendarId
388
+ description: "日历ID,使用'primary'表示主日历"
389
+ type: string
390
+ required: true
391
+ position: path
392
+ - name: eventId
393
+ description: "日程ID"
394
+ type: string
395
+ required: true
396
+ position: path
397
+ - name: maxResults
398
+ description: "返回的参与者数量上限(默认100,最大500)"
399
+ type: integer
400
+ position: query
401
+ - name: nextToken
402
+ description: "分页标记,用于获取下一页数据"
403
+ type: string
404
+ position: query
405
+ - name: userId
406
+ description: "查询者的userId"
407
+ type: string
408
+ required: true
409
+ position: path
410
+ requestTemplate:
411
+ url: https://api.dingtalk.com/v1.0/calendar/users/{userId}/calendars/{calendarId}/events/{eventId}/attendees?maxResults=Long&nextToken=String
412
+ method: GET
413
+ security:
414
+ id: DingTalkAuth
415
+ responseTemplate:
416
+ body: |
417
+ # 👥 日程参与者列表
418
+
419
+ **日程**: {{.eventSummary}}
420
+ **参与者总数**: {{.totalCount}}人{{if .hasMore}}(显示部分){{end}}
421
+
422
+ {{range $i, $attendee := .attendees}}
423
+ ## {{add $i 1}}. {{$attendee.displayName}}
424
+
425
+ - 🆔 unionId: {{$attendee.id}}
426
+ - 📧 邮箱: {{$attendee.email}}
427
+ - 📱 状态: {{if eq $attendee.responseStatus "accepted"}}✅ 已接受{{else if eq $attendee.responseStatus "declined"}}❌ 已拒绝{{else if eq $attendee.responseStatus "tentative"}}❓ 待定{{else}}⏳ 未回复{{end}}
428
+ - 👤 类型: {{if $attendee.isOptional}}可选参与者{{else}}必须参与者{{end}}
429
+ {{if $attendee.comment}}- 💬 备注: {{$attendee.comment}}{{end}}
430
+ {{if $attendee.isOrganizer}}- 🎯 **组织者**{{end}}
431
+
432
+ {{end}}
433
+
434
+ {{if .nextToken}}
435
+ ---
436
+ **📄 分页信息**: 使用 nextToken "{{.nextToken}}" 获取更多参与者
437
+ {{end}}
438
+
439
+ - name: listEvents
440
+ description: "查询指定时间范围内的日程列表,支持分页和增量同步"
441
+ args:
442
+ - name: calendarId
443
+ description: "日历ID,使用'primary'表示主日历"
444
+ type: string
445
+ required: true
446
+ position: path
447
+ - name: maxAttendees
448
+ description: "每个日程返回的参与者数量上限(默认100)"
449
+ type: integer
450
+ position: query
451
+ - name: maxResults
452
+ description: "返回的日程数量上限(默认100,最大100)"
453
+ type: integer
454
+ position: query
455
+ - name: nextToken
456
+ description: "分页标记,用于获取下一页数据"
457
+ type: string
458
+ position: query
459
+ - name: seriesMasterId
460
+ description: "重复日程的主日程ID,用于查询特定循环日程"
461
+ type: string
462
+ position: query
463
+ - name: showDeleted
464
+ description: "是否包含已删除的日程"
465
+ type: boolean
466
+ position: query
467
+ - name: syncToken
468
+ description: "同步标记,用于增量数据同步"
469
+ type: string
470
+ position: query
471
+ - name: timeMax
472
+ description: "查询结束时间(ISO-8601格式)"
473
+ type: string
474
+ position: query
475
+ - name: timeMin
476
+ description: "查询开始时间(ISO-8601格式)"
477
+ type: string
478
+ position: query
479
+ - name: userId
480
+ description: "要查询的userId"
481
+ type: string
482
+ required: true
483
+ position: path
484
+ requestTemplate:
485
+ url: https://api.dingtalk.com/v1.0/calendar/users/{userId}/calendars/{calendarId}/events?timeMin=String&timeMax=String&showDeleted=Boolean&maxResults=Integer&maxAttendees=Integer&nextToken=String&syncToken=String
486
+ method: GET
487
+ security:
488
+ id: DingTalkAuth
489
+ responseTemplate:
490
+ body: |
491
+ # 📋 日程列表
492
+
493
+ {{if .events}}
494
+ **查询时间**: {{if .timeMin}}{{.timeMin | formatTime}}{{else}}不限{{end}} 至 {{if .timeMax}}{{.timeMax | formatTime}}{{else}}不限{{end}}
495
+ **日程数量**: {{len .events}}个{{if .hasMore}}(显示部分){{end}}
496
+
497
+ {{range $i, $event := .events}}
498
+ ## {{add $i 1}}. {{$event.summary}}
499
+
500
+ - 🆔 ID: {{$event.id}}
501
+ - ⏰ 时间: {{$event.start.dateTime | formatTime}} - {{$event.end.dateTime | formatTime}}
502
+ {{if $event.isAllDay}}- 📅 全天日程{{end}}
503
+ {{if $event.location}}- 📍 地点: {{$event.location.displayName}}{{end}}
504
+ {{if $event.attendees}}- 👥 参与者: {{len $event.attendees}}人{{end}}
505
+ {{if $event.recurrenceId}}- 🔄 这是循环日程的实例{{end}}
506
+ {{if $event.status}}- 📊 状态: {{$event.status}}{{end}}
507
+
508
+ {{end}}
509
+
510
+ {{if .nextToken}}
511
+ **📄 分页**: 使用 nextToken "{{.nextToken}}" 获取更多
512
+ {{end}}
513
+
514
+ {{if .syncToken}}
515
+ **🔄 同步**: 使用 syncToken "{{.syncToken}}" 进行增量同步
516
+ {{end}}
517
+
518
+ {{else}}
519
+ 📭 **暂无日程**
520
+
521
+ 指定时间范围内没有找到任何日程。
522
+ {{end}}
523
+
524
+ - name: updateEvent
525
+ description: "修改现有日程的信息,支持更新标题、时间、参与者、地点等任意字段,仅需要组织者权限"
526
+ args:
527
+ - name: calendarId
528
+ description: "日历ID,使用'primary'表示主日历"
529
+ type: string
530
+ required: true
531
+ position: path
532
+ - name: eventId
533
+ description: "要修改的日程ID"
534
+ type: string
535
+ required: true
536
+ position: path
537
+ - name: userId
538
+ description: "日程组织者的userId"
539
+ type: string
540
+ required: true
541
+ position: path
542
+ - name: summary
543
+ description: "日程标题"
544
+ type: string
545
+ position: body
546
+ - name: description
547
+ description: "日程描述"
548
+ type: string
549
+ position: body
550
+ - name: start
551
+ description: "日程开始时间"
552
+ type: object
553
+ position: body
554
+ - name: end
555
+ description: "日程结束时间"
556
+ type: object
557
+ position: body
558
+ - name: location
559
+ description: "日程地点"
560
+ type: object
561
+ position: body
562
+ - name: attendees
563
+ description: "参与者列表"
564
+ type: array
565
+ items:
566
+ type: object
567
+ position: body
568
+ - name: isAllDay
569
+ description: "是否为全天日程"
570
+ type: boolean
571
+ position: body
572
+ - name: reminders
573
+ description: "提醒设置"
574
+ type: array
575
+ items:
576
+ type: object
577
+ position: body
578
+ - name: recurrence
579
+ description: "重复设置"
580
+ type: object
581
+ position: body
582
+ - name: onlineMeetingInfo
583
+ description: "在线会议设置"
584
+ type: object
585
+ position: body
586
+ - name: x-client-token
587
+ description: "幂等性校验令牌"
588
+ type: string
589
+ position: header
590
+ requestTemplate:
591
+ url: https://api.dingtalk.com/v1.0/calendar/users/{userId}/calendars/{calendarId}/events/{eventId}
592
+ method: PUT
593
+ headers:
594
+ - key: Content-Type
595
+ value: application/json
596
+ security:
597
+ id: DingTalkAuth
598
+ responseTemplate:
599
+ body: |
600
+ # ✏️ 日程修改结果
601
+
602
+ {{if .success}}
603
+ ✅ **日程修改成功**
604
+
605
+ **更新后的日程信息**:
606
+ - 📅 标题: {{.summary}}
607
+ - 🆔 日程ID: {{.id}}
608
+ - ⏰ 开始时间: {{.start.dateTime | formatTime}}
609
+ - ⏰ 结束时间: {{.end.dateTime | formatTime}}
610
+ - 📍 类型: {{if .isAllDay}}全天日程{{else}}定时日程{{end}}
611
+ {{if .description}}
612
+ - 📝 描述: {{.description}}
613
+ {{end}}
614
+ {{if .location}}
615
+ - 📍 地点: {{.location.displayName}}
616
+ {{end}}
617
+
618
+ **修改的内容**:
619
+ {{range $change := .changes}}
620
+ - {{$change.field}}: {{$change.oldValue}} → {{$change.newValue}}
621
+ {{end}}
622
+
623
+ {{if .attendees}}
624
+ **参与者** ({{len .attendees}}人):
625
+ {{range $i, $attendee := .attendees}}
626
+ {{add $i 1}}. {{$attendee.displayName}}{{if $attendee.isOptional}} (可选){{end}}
627
+ {{end}}
628
+ {{end}}
629
+
630
+ {{if .onlineMeeting}}
631
+ **在线会议**:
632
+ - 会议链接: {{.onlineMeeting.joinUrl}}
633
+ {{end}}
634
+
635
+ {{else}}
636
+ ❌ **日程修改失败** - {{.error}}
637
+
638
+ **错误详情**: {{.errorMessage}}
639
+ {{end}}
640
+
641
+ - name: removeAttendee
642
+ description: "从指定日程中移除参与者,支持批量移除多人"
643
+ args:
644
+ - name: attendeesToRemove
645
+ description: "需要移除的参与者列表"
646
+ type: array
647
+ items:
648
+ type: object
649
+ position: body
650
+ - name: calendarId
651
+ description: "日历ID,使用'primary'表示主日历"
652
+ type: string
653
+ required: true
654
+ position: path
655
+ - name: eventId
656
+ description: "日程ID"
657
+ type: string
658
+ required: true
659
+ position: path
660
+ - name: id
661
+ description: "要移除的用户ID"
662
+ type: string
663
+ position: body
664
+ - name: userId
665
+ description: "日程创建者的userId"
666
+ type: string
667
+ required: true
668
+ position: path
669
+ - name: x-client-token
670
+ description: "幂等性校验令牌"
671
+ type: string
672
+ position: header
673
+ requestTemplate:
674
+ url: https://api.dingtalk.com/v1.0/calendar/users/{userId}/calendars/{calendarId}/events/{eventId}/attendees/remove
675
+ method: POST
676
+ headers:
677
+ - key: Content-Type
678
+ value: application/json
679
+ security:
680
+ id: DingTalkAuth
681
+ responseTemplate:
682
+ body: |
683
+ # 👥➖ 日程参与者移除结果
684
+
685
+ {{if .success}}
686
+ ✅ **操作成功** - 已从日程中移除参与者
687
+
688
+ **日程信息**:
689
+ - 日程ID: {{.eventId}}
690
+ - 操作时间: {{.timestamp}}
691
+
692
+ **移除的参与者**:
693
+ {{range $i, $attendee := .removedAttendees}}
694
+ {{add $i 1}}. {{$attendee.displayName}}
695
+ - unionId: {{$attendee.id}}
696
+ - 移除原因: {{$attendee.reason}}
697
+ {{end}}
698
+
699
+ **剩余参与者数量**: {{.remainingCount}}人
700
+
701
+ {{if .notifications}}
702
+ **通知状态**:
703
+ {{if .notifications.attendeesNotified}}
704
+ - 已向移除的参与者发送通知
705
+ {{end}}
706
+ {{end}}
707
+
708
+ {{else}}
709
+ ❌ **操作失败** - {{.error}}
710
+
711
+ **错误详情**: {{.errorMessage}}
712
+ {{end}}
713
+
714
+