1# @ohos.calendarManager (Calendar Manager)
2
3The **calendarManager** module provides APIs for calendar and event management, including those for creating, deleting, modifying, and querying calendars and events.
4
5- A [CalendarManager](#calendarmanager) object is used to manage [Calendar](#calendar) objects.
6
7- A [Calendar](#calendar) object contains the account information [CalendarAccount](#calendaraccount) and configuration information [CalendarConfig](#calendarconfig). Calendars and events are in the one-to-many relationship. That is, a calendar can have multiple events, but an event belongs to only one calendar.
8
9> **NOTE**
10>
11> The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.
12
13
14## Modules to Import
15
16```typescript
17import { calendarManager } from '@kit.CalendarKit'
18```
19
20## calendarManager.getCalendarManager
21
22getCalendarManager(context : Context): CalendarManager
23
24Obtains a **CalendarManager** object based on the context.
25
26**Atomic service API**: This API can be used in atomic services since API version 11.
27
28**System capability**: SystemCapability.Applications.CalendarData
29
30**Model restriction**: This API can be used only in the stage model.
31
32**Parameters**
33
34| Name  | Type                       | Mandatory| Description                                                                                                            |
35| -------- | --------------------------- | ---- |----------------------------------------------------------------------------------------------------------------|
36| context  | Context                     | Yes  | Application context. For details about the application context of the stage model, see [Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md).|
37
38**Return value**
39
40| Type                          | Description                                 |
41| ------------------------------ | ------------------------------------- |
42| CalendarManager | **CalendarManager** object obtained.|
43
44**Example**
45
46```typescript
47// Obtain an mContext object.
48// Obtain a calendarMgr object.
49// The file is auto-generated: entry/src/main/ets/entryability/EntryAbility.ets
50import {
51  abilityAccessCtrl,
52  AbilityConstant, common, PermissionRequestResult, Permissions, UIAbility, Want } from '@kit.AbilityKit';
53import { BusinessError } from '@kit.BasicServicesKit';
54import { calendarManager } from '@kit.CalendarKit';
55import { window } from '@kit.ArkUI';
56
57export let calendarMgr: calendarManager.CalendarManager | null = null;
58export let mContext: common.UIAbilityContext | null = null;
59export default class EntryAbility extends UIAbility {
60  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
61    console.info("Ability onCreate");
62  }
63
64  onDestroy(): void {
65    console.info("Ability onDestroy");
66  }
67
68  onWindowStageCreate(windowStage: window.WindowStage): void {
69    // Main window is created, set main page for this ability
70    console.info("Ability onWindowStageCreate");
71
72    windowStage.loadContent('pages/Index', (err, data) => {
73      if (err.code) {
74        console.error(`Failed to load the content. Code: ${err.code}, message: ${err.message}`);
75        return;
76      }
77      console.info(`Succeeded in loading the content. Data: ${JSON.stringify(data)}`);
78    });
79    mContext = this.context;
80    const permissions: Permissions[] = ['ohos.permission.READ_CALENDAR', 'ohos.permission.WRITE_CALENDAR'];
81    let atManager = abilityAccessCtrl.createAtManager();
82    atManager.requestPermissionsFromUser(mContext, permissions).then((result: PermissionRequestResult) => {
83      console.log(`get Permission success, result: ${JSON.stringify(result)}`);
84      calendarMgr = calendarManager.getCalendarManager(mContext);
85    }).catch((error: BusinessError) => {
86      console.error(`get Permission error, error. Code: ${error.code}, message: ${error.message}`);
87    })
88  }
89
90  onWindowStageDestroy(): void {
91    // Main window is destroyed, release UI related resources
92    console.info("Ability onWindowStageDestroy");
93  }
94
95  onForeground(): void {
96    // Ability has brought to foreground
97    console.info("Ability onForeground");
98  }
99
100  onBackground(): void {
101    // Ability has back to background
102    console.info("Ability onBackground");
103  }
104}
105```
106
107## CalendarManager
108
109Before calling any of the following APIs, you must use [getCalendarManager()](#calendarmanagergetcalendarmanager) to obtain a **CalendarManager** object.
110
111
112### createCalendar
113
114createCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void
115
116Creates a **Calendar** object based on the calendar account information. This API uses an asynchronous callback to return the result.
117
118**Required permissions**: ohos.permission.WRITE_CALENDAR
119
120**System capability**: SystemCapability.Applications.CalendarData
121
122**Parameters**
123
124| Name         | Type                                 | Mandatory| Description                              |
125| --------------- | ------------------------------------- | ---- | ---------------------------------- |
126| calendarAccount | [CalendarAccount](#calendaraccount)   | Yes  | Calendar account information.                    |
127| callback        | AsyncCallback\<[Calendar](#calendar)> | Yes  | Callback used to return the created **Calendar** object.|
128
129**Error codes**
130
131For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
132
133| ID| Error Message                       |
134| -------- | ------------------------------ |
135| 201      | Permission denied.  |
136| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
137| 801      | Capability not supported.  |
138
139**Example**
140
141```typescript
142import { BusinessError } from '@kit.BasicServicesKit';
143import { calendarMgr } from '../entryability/EntryAbility';
144
145let calendar: calendarManager.Calendar | undefined = undefined;
146const calendarAccount: calendarManager.CalendarAccount = {
147  name: 'CreateMyCalendarByCallBack',
148  type: calendarManager.CalendarType.LOCAL
149};
150try {
151  calendarMgr?.createCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
152    if (err) {
153      console.error(`Failed to create calendar. Code: ${err.code}, message: ${err.message}`);
154    } else {
155      console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
156      calendar = data;
157    }
158  });
159} catch (error) {
160  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
161}
162```
163
164### createCalendar
165
166createCalendar(calendarAccount: CalendarAccount): Promise\<Calendar>
167
168Creates a **Calendar** object based on the calendar account information. This API uses a promise to return the result.
169
170**Required permissions**: ohos.permission.WRITE_CALENDAR
171
172**System capability**: SystemCapability.Applications.CalendarData
173
174**Parameters**
175
176| Name         | Type                               | Mandatory| Description          |
177| --------------- | ----------------------------------- | ---- | -------------- |
178| calendarAccount | [CalendarAccount](#calendaraccount) | Yes  | Calendar account information.|
179
180**Return value**
181
182| Type                          | Description                                 |
183| ------------------------------ | ------------------------------------- |
184| Promise<[Calendar](#calendar)> | Promise used to return the created **Calendar** object.|
185
186**Error codes**
187
188For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
189
190| ID| Error Message                       |
191| -------- | ------------------------------ |
192| 201      | Permission denied.  |
193| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
194| 801      | Capability not supported.  |
195
196**Example**
197
198```typescript
199import { BusinessError } from '@kit.BasicServicesKit';
200import { calendarMgr } from '../entryability/EntryAbility';
201
202let calendar : calendarManager.Calendar | undefined = undefined;
203const calendarAccount: calendarManager.CalendarAccount = {
204  name: 'CreateMyCalendarByPromise',
205  type: calendarManager.CalendarType.LOCAL,
206  displayName : 'MyApplication'
207};
208calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
209  console.info(`Succeeded in creating calendar data->${JSON.stringify(data)}`);
210  calendar = data;
211}).catch((error : BusinessError) => {
212  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
213});
214```
215
216### deleteCalendar
217
218deleteCalendar(calendar: Calendar, callback: AsyncCallback\<void>): void
219
220Deletes a specified **Calendar** object. This API uses an asynchronous callback to return the result.
221
222**Required permissions**: ohos.permission.WRITE_CALENDAR
223
224**System capability**: SystemCapability.Applications.CalendarData
225
226**Parameters**
227
228| Name  | Type                 | Mandatory| Description          |
229| -------- | --------------------- | ---- | -------------- |
230| calendar | [Calendar](#calendar) | Yes  | **Calendar** object to delete.|
231| callback | AsyncCallback\<void>  | Yes  | Asynchronous callback that returns no value.    |
232
233**Error codes**
234
235For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
236
237| ID| Error Message                       |
238| -------- | ------------------------------ |
239| 201      | Permission denied.  |
240| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
241| 801      | Capability not supported.  |
242
243**Example**
244
245```typescript
246import { BusinessError } from '@kit.BasicServicesKit';
247import { calendarMgr } from '../entryability/EntryAbility';
248
249const calendarAccount: calendarManager.CalendarAccount = {
250  name: 'DeleteMyCalendarByCallBack',
251  type: calendarManager.CalendarType.LOCAL
252};
253calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
254  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
255  calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
256    if (err) {
257      console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
258    } else {
259      console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
260      calendarMgr?.deleteCalendar(data, (err1: BusinessError) => {
261        if (err1) {
262          console.error(`Failed to delete calendar. Code: ${err1.code}, message: ${err1.message}`);
263        } else {
264          console.info("Succeeded in deleting calendar");
265        }
266      });
267    }
268  });
269}).catch((error: BusinessError) => {
270  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
271})
272```
273
274### deleteCalendar
275
276deleteCalendar(calendar: Calendar): Promise\<void>
277
278Deletes a specified **Calendar** object. This API uses a promise to return the result.
279
280**Required permissions**: ohos.permission.WRITE_CALENDAR
281
282**System capability**: SystemCapability.Applications.CalendarData
283
284**Parameters**
285
286| Name  | Type                 | Mandatory| Description          |
287| -------- | --------------------- | ---- | -------------- |
288| calendar | [Calendar](#calendar) | Yes  | **Calendar** object to delete.|
289
290**Return value**
291
292| Type          | Description                     |
293| -------------- | ------------------------- |
294| Promise\<void> | Promise that returns no value.|
295
296**Error codes**
297
298For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
299
300| ID| Error Message                       |
301| -------- | ------------------------------ |
302| 201      | Permission denied.  |
303| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
304| 801      | Capability not supported.  |
305
306**Example**
307
308```typescript
309import { BusinessError } from '@kit.BasicServicesKit';
310import { calendarMgr } from '../entryability/EntryAbility';
311
312const calendarAccount: calendarManager.CalendarAccount = {
313  name: 'DeleteMyCalendarByPromise',
314  type: calendarManager.CalendarType.LOCAL
315};
316calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
317  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
318  calendarMgr?.getCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
319    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
320    calendarMgr?.deleteCalendar(data).then(() => {
321      console.info("Succeeded in deleting calendar");
322    }).catch((err: BusinessError) => {
323      console.error(`Failed to delete calendar. Code: ${err.code}, message: ${err.message}`);
324    });
325  }).catch((err: BusinessError) => {
326    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
327  });
328}).catch((error: BusinessError) => {
329  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
330})
331```
332
333### getCalendar
334
335getCalendar(callback: AsyncCallback\<Calendar>): void
336
337Obtains the default **Calendar** object, which is created when the data storage runs for the first time. This API uses an asynchronous callback to return the result. You can call this API instead of [createCalendar()](#createcalendar) to use the default calendar for a new event.
338
339**Required permissions**: ohos.permission.READ_CALENDAR
340
341**Atomic service API**: This API can be used in atomic services since API version 11.
342
343**System capability**: SystemCapability.Applications.CalendarData
344
345**Parameters**
346
347| Name  | Type                                | Mandatory| Description                                |
348| -------- | ------------------------------------ | ---- | ------------------------------------ |
349| callback | AsyncCallback<[Calendar](#calendar)> | Yes  | Callback used to return the obtained **Calendar** object.|
350
351**Error codes**
352
353For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
354
355| ID| Error Message                       |
356| -------- | ------------------------------ |
357| 201      | Permission denied.  |
358| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
359| 801      | Capability not supported.  |
360
361**Example**
362
363```typescript
364import { BusinessError } from '@kit.BasicServicesKit';
365import { calendarMgr } from '../entryability/EntryAbility';
366
367let calendar : calendarManager.Calendar | undefined = undefined;
368calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
369  if (err) {
370    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
371  } else {
372    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
373    calendar = data;
374  }
375});
376```
377
378### getCalendar
379
380getCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void
381
382Obtains a specified **Calendar** object. This API uses an asynchronous callback to return the result.
383
384**Required permissions**: ohos.permission.READ_CALENDAR
385
386**Atomic service API**: This API can be used in atomic services since API version 11.
387
388**System capability**: SystemCapability.Applications.CalendarData
389
390**Parameters**
391
392| Name         | Type                                | Mandatory| Description                                |
393| --------------- | ------------------------------------ | ---- | ------------------------------------ |
394| calendarAccount | [CalendarAccount](#calendaraccount)  | Yes  | Calendar account information.                      |
395| callback        | AsyncCallback<[Calendar](#calendar)> | Yes  | Callback used to return the obtained **Calendar** object.|
396
397**Error codes**
398
399For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
400
401| ID| Error Message                       |
402| -------- | ------------------------------ |
403| 201      | Permission denied.  |
404| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
405| 801      | Capability not supported.  |
406
407**Example**
408
409```typescript
410import { BusinessError } from '@kit.BasicServicesKit';
411import { calendarMgr } from '../entryability/EntryAbility';
412
413let calendar : calendarManager.Calendar | undefined = undefined;
414const calendarAccount: calendarManager.CalendarAccount = {
415  name: 'MyCalendar',
416  type: calendarManager.CalendarType.LOCAL
417};
418calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => {
419  console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`);
420  calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => {
421    if (err) {
422      console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
423    } else {
424      console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`);
425      calendar = data;
426    }
427  });
428}).catch((error: BusinessError) => {
429  console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
430})
431```
432
433### getCalendar
434
435getCalendar(calendarAccount?: CalendarAccount): Promise\<Calendar>
436
437Obtains the default **Calendar** object or a specified **Calendar** object. This API uses a promise to return the result.
438
439**Required permissions**: ohos.permission.READ_CALENDAR
440
441**Atomic service API**: This API can be used in atomic services since API version 11.
442
443**System capability**: SystemCapability.Applications.CalendarData
444
445**Parameters**
446
447| Name         | Type                               | Mandatory| Description                                                        |
448| --------------- | ----------------------------------- | ---- | ------------------------------------------------------------ |
449| calendarAccount | [CalendarAccount](#calendaraccount) | No  | Calendar account information, which is used to obtain a specified **Calendar** object. If this parameter is not set, the default **Calendar** object is obtained.|
450
451**Return value**
452
453| Type                          | Description                                   |
454| ------------------------------ | --------------------------------------- |
455| Promise<[Calendar](#calendar)> | Promise used to return the obtained **Calendar** object.|
456
457**Error codes**
458
459For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
460
461| ID| Error Message                       |
462| -------- | ------------------------------ |
463| 201      | Permission denied.  |
464| 401      | Parameter error. Possible causes: Incorrect parameter types.  |
465| 801      | Capability not supported.  |
466
467**Example**
468
469```typescript
470import { BusinessError } from '@kit.BasicServicesKit';
471import { calendarMgr } from '../entryability/EntryAbility';
472
473let calendar : calendarManager.Calendar | undefined = undefined;
474calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => {
475  console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
476  calendar = data;
477}).catch((err: BusinessError) => {
478  console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
479});
480```
481
482### getAllCalendars
483
484getAllCalendars(callback: AsyncCallback\<Calendar[]>): void
485
486Obtains the created and default **Calendar** objects of the current application. This API uses an asynchronous callback to return the result.
487
488**Required permissions**: ohos.permission.READ_CALENDAR
489
490**System capability**: SystemCapability.Applications.CalendarData
491
492**Parameters**
493
494| Name  | Type                                  | Mandatory| Description                                     |
495| -------- | -------------------------------------- | ---- | ----------------------------------------- |
496| callback | AsyncCallback<[Calendar](#calendar)[]> | Yes  | Callback used to return an array of obtained **Calendar** objects.|
497
498**Error codes**
499
500For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
501
502| ID| Error Message                       |
503| -------- | ------------------------------ |
504| 201      | Permission denied.  |
505| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.  |
506| 801      | Capability not supported.  |
507
508**Example**
509
510```typescript
511import { BusinessError } from '@kit.BasicServicesKit';
512import { calendarMgr } from '../entryability/EntryAbility';
513
514calendarMgr?.getAllCalendars((err: BusinessError, data: calendarManager.Calendar[]) => {
515  if (err) {
516    console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`);
517  } else {
518    console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`);
519    data.forEach((calendar) => {
520      const account = calendar.getAccount();
521      console.info(`account -> ${JSON.stringify(account)}`);
522    })
523  }
524});
525```
526
527### getAllCalendars
528
529getAllCalendars(): Promise\<Calendar[]>
530
531Obtains the created and default **Calendar** objects of the current application. This API uses a promise to return the result.
532
533**Required permissions**: ohos.permission.READ_CALENDAR
534
535**System capability**: SystemCapability.Applications.CalendarData
536
537**Return value**
538
539| Type                            | Description                                       |
540| -------------------------------- | ------------------------------------------- |
541| Promise<[Calendar](#calendar)[]> | Promise used to return an array of obtained **Calendar** objects.|
542
543**Error codes**
544
545For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
546
547| ID| Error Message                       |
548| -------- | ------------------------------ |
549| 201      | Permission denied.  |
550| 401      | Parameter error. Possible causes: Incorrect parameter types.  |
551| 801      | Capability not supported.  |
552
553**Example**
554
555```typescript
556import { BusinessError } from '@kit.BasicServicesKit';
557import { calendarMgr } from '../entryability/EntryAbility';
558
559calendarMgr?.getAllCalendars().then((data: calendarManager.Calendar[]) => {
560  console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`);
561  data.forEach((calendar) => {
562    const account = calendar.getAccount();
563    console.info(`account -> ${JSON.stringify(account)}`);
564  })
565}).catch((err: BusinessError) => {
566  console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`);
567});
568```
569
570### editEvent<sup>12+</sup>
571
572editEvent(event: Event): Promise\<number>
573
574Creates a single event. If the input parameter **Event** is not set to the event ID, the event creation screen is displayed when this API is called. This API uses a Promise to return the result.
575
576**Atomic service API**: This API can be used in atomic services since API version 12.
577
578**System capability**: SystemCapability.Applications.CalendarData
579
580**Parameters**
581
582| Name| Type           | Mandatory| Description       |
583| ------ | --------------- | ---- | ----------- |
584| event  | [Event](#event) | Yes  | **Event** object.|
585
586**Return value**
587
588| Type          | Description                    |
589| -------------- | ------------------------ |
590| Promise\<number> | Promise used to return the event ID.|
591
592**Example**
593
594```typescript
595import { BusinessError } from '@kit.BasicServicesKit';
596import { calendarMgr } from '../entryability/EntryAbility';
597
598const date = new Date();
599const event: calendarManager.Event = {
600  title: 'title',
601  type: calendarManager.EventType.NORMAL,
602  startTime: date.getTime(),
603  endTime: date.getTime() + 60 * 60 * 1000
604};
605calendarMgr?.editEvent(event).then((eventId: number): void => {
606  console.info(`create Event id = ${eventId}`);
607}).catch((err: BusinessError) => {
608  console.error(`Failed to create Event. Code: ${err.code}, message: ${err.message}`);
609});
610```
611
612## Calendar
613
614In the following API examples, you need to use [createCalendar()](#createcalendar) or [getCalendar()](#getcalendar) to obtain a **Calendar** object before calling related APIs.
615
616### Attributes
617
618**Atomic service API**: This API can be used in atomic services since API version 11.
619
620**System capability**: SystemCapability.Applications.CalendarData
621
622| Name| Type  | Read-only| Optional| Description    |
623| ---- | ------ | ---- |----| -------- |
624| id   | number | Yes  | No | Calendar account ID.|
625
626### addEvent
627
628addEvent(event: Event, callback: AsyncCallback\<number>): void
629
630Creates an event, with no event ID specified in **Event**. This API uses an asynchronous callback to return the result.
631
632**Atomic service API**: This API can be used in atomic services since API version 11.
633
634**System capability**: SystemCapability.Applications.CalendarData
635
636**Parameters**
637
638| Name  | Type                  | Mandatory| Description                  |
639| -------- | ---------------------- | ---- | ---------------------- |
640| event    | [Event](#event)        | Yes  | **Event** object.           |
641| callback | AsyncCallback\<number> | Yes  | Callback used to return the event ID.|
642
643**Example**
644
645```typescript
646import { BusinessError } from '@kit.BasicServicesKit';
647import { calendarMgr } from '../entryability/EntryAbility';
648
649let calendar : calendarManager.Calendar | undefined = undefined;
650const date = new Date();
651const event: calendarManager.Event = {
652  type: calendarManager.EventType.NORMAL,
653  startTime: date.getTime(),
654  endTime: date.getTime() + 60 * 60 * 1000
655};
656calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => {
657  console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
658  calendar = data;
659  calendar.addEvent(event, (err: BusinessError, data: number): void => {
660    if (err) {
661      console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`);
662    } else {
663      console.info(`Succeeded in adding event, id -> ${data}`);
664    }
665  });
666}).catch((err: BusinessError) => {
667  console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
668});
669```
670
671### addEvent
672
673addEvent(event: Event): Promise\<number>
674
675Creates an event, with no event ID specified in **Event**. This API uses a promise to return the result.
676
677**Atomic service API**: This API can be used in atomic services since API version 11.
678
679**System capability**: SystemCapability.Applications.CalendarData
680
681**Parameters**
682
683| Name| Type           | Mandatory| Description       |
684| ------ | --------------- | ---- | ----------- |
685| event  | [Event](#event) | Yes  | **Event** object.|
686
687**Return value**
688
689| Type            | Description                       |
690| ---------------- | --------------------------- |
691| Promise\<number> | Promise used to return the event ID.|
692
693**Example**
694
695```typescript
696import { BusinessError } from '@kit.BasicServicesKit';
697import { calendarMgr } from '../entryability/EntryAbility';
698
699let calendar : calendarManager.Calendar | undefined = undefined;
700const date = new Date();
701const event: calendarManager.Event = {
702  type: calendarManager.EventType.NORMAL,
703  startTime: date.getTime(),
704  endTime: date.getTime() + 60 * 60 * 1000
705};
706calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
707  if (err) {
708    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
709  } else {
710    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
711    calendar = data;
712    calendar.addEvent(event).then((data: number) => {
713      console.info(`Succeeded in adding event, id -> ${data}`);
714    }).catch((err: BusinessError) => {
715      console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`);
716    });
717  }
718});
719```
720
721### addEvents
722
723addEvents(events: Event[], callback: AsyncCallback\<void>): void
724
725Creates events in batches, with no event ID specified in **Event**. This API uses an asynchronous callback to return the result.
726
727**System capability**: SystemCapability.Applications.CalendarData
728
729**Parameters**
730
731| Name  | Type                | Mandatory| Description           |
732| -------- | -------------------- | ---- | --------------- |
733| events   | [Event](#event)[]    | Yes  | Array of **Event** objects.|
734| callback | AsyncCallback\<void> | Yes  | Callback used to return the result.     |
735
736**Example**
737
738```typescript
739import { BusinessError } from '@kit.BasicServicesKit';
740import { calendarMgr } from '../entryability/EntryAbility';
741
742let calendar : calendarManager.Calendar | undefined = undefined;
743const date = new Date();
744const events: calendarManager.Event[] = [
745  {
746    type: calendarManager.EventType.NORMAL,
747    startTime: date.getTime(),
748    endTime: date.getTime() + 60 * 60 * 1000
749  },
750  {
751    type: calendarManager.EventType.NORMAL,
752    startTime: date.getTime(),
753    endTime: date.getTime() + 60 * 60 * 1000
754  }
755];
756calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
757  if (err) {
758    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
759  } else {
760    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
761    calendar = data;
762    calendar.addEvents(events, (err: BusinessError) => {
763      if (err) {
764        console.error(`Failed to add events. Code: ${err.code}, message: ${err.message}`);
765      } else {
766        console.info("Succeeded in adding events");
767      }
768    });
769  }
770});
771```
772
773### addEvents
774
775addEvents(events: Event[]): Promise\<void>
776
777Creates events in batches, with no event ID specified in **Event**. This API uses a promise to return the result.
778
779**System capability**: SystemCapability.Applications.CalendarData
780
781**Parameters**
782
783| Name| Type             | Mandatory| Description           |
784| ------ | ----------------- | ---- | --------------- |
785| events | [Event](#event)[] | Yes  | Array of **Event** objects.|
786
787**Return value**
788
789| Type          | Description                     |
790| -------------- | ------------------------- |
791| Promise\<void> | Promise that returns no value.|
792
793**Example**
794
795```typescript
796import { BusinessError } from '@kit.BasicServicesKit';
797import { calendarMgr } from '../entryability/EntryAbility';
798
799let calendar : calendarManager.Calendar | undefined = undefined;
800const date = new Date();
801const events: calendarManager.Event[] = [
802  {
803    type: calendarManager.EventType.NORMAL,
804    startTime: date.getTime(),
805    endTime: date.getTime() + 60 * 60 * 1000
806  },
807  {
808    type: calendarManager.EventType.NORMAL,
809    startTime: date.getTime(),
810    endTime: date.getTime() + 60 * 60 * 1000
811  }
812];
813calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
814  if (err) {
815    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
816  } else {
817    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
818    calendar = data;
819    calendar.addEvents(events).then(() => {
820      console.info("Succeeded in adding events");
821    }).catch((err: BusinessError) => {
822      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
823    });
824  }
825});
826```
827
828### deleteEvent
829
830deleteEvent(id: number, callback: AsyncCallback\<void>): void
831
832Deletes an event with the specified ID. This API uses an asynchronous callback to return the result.
833
834**System capability**: SystemCapability.Applications.CalendarData
835
836**Parameters**
837
838| Name  | Type                | Mandatory| Description      |
839| -------- | -------------------- | ---- | ---------- |
840| id       | number               | Yes  | Event ID.  |
841| callback | AsyncCallback\<void> | Yes  | Callback used to return the result.|
842
843**Example**
844
845```typescript
846import { BusinessError } from '@kit.BasicServicesKit';
847import { calendarMgr } from '../entryability/EntryAbility';
848
849let calendar : calendarManager.Calendar | undefined = undefined;
850let id: number = 0;
851const date = new Date();
852const event: calendarManager.Event = {
853  type: calendarManager.EventType.NORMAL,
854  startTime: date.getTime(),
855  endTime: date.getTime() + 60 * 60 * 1000
856};
857calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
858  if (err) {
859    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
860  } else {
861    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
862    calendar = data;
863    await calendar.addEvent(event).then((data: number) => {
864      console.info(`Succeeded in adding event, id -> ${data}`);
865      id = data;
866    }).catch((err: BusinessError) => {
867      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
868    });
869    calendar.deleteEvent(id, (err: BusinessError) => {
870      if (err) {
871        console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`);
872      } else {
873        console.info(`Succeeded in deleting event, err -> ${JSON.stringify(err)}`);
874      }
875    });
876  }
877});
878```
879
880### deleteEvent
881
882deleteEvent(id: number): Promise\<void>
883
884Deletes an event with the specified ID. This API uses a promise to return the result.
885
886**System capability**: SystemCapability.Applications.CalendarData
887
888**Parameters**
889
890| Name| Type  | Mandatory| Description    |
891| ------ | ------ | ---- | -------- |
892| id     | number | Yes  | Event ID.|
893
894**Return value**
895
896| Type          | Description                     |
897| -------------- | ------------------------- |
898| Promise\<void> | Promise that returns no value.|
899
900**Example**
901
902```typescript
903import { BusinessError } from '@kit.BasicServicesKit';
904import { calendarMgr } from '../entryability/EntryAbility';
905
906let calendar : calendarManager.Calendar | undefined = undefined;
907let id: number = 0;
908const date = new Date();
909const event: calendarManager.Event = {
910  type: calendarManager.EventType.NORMAL,
911  startTime: date.getTime(),
912  endTime: date.getTime() + 60 * 60 * 1000
913};
914calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
915  if (err) {
916    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
917  } else {
918    console.info(`Succeeded in getting calendar data->${JSON.stringify(data)}`);
919    calendar = data;
920    await calendar.addEvent(event).then((data: number) => {
921      console.info(`Succeeded in adding event, id -> ${data}`);
922      id = data;
923    }).catch((err: BusinessError) => {
924      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
925    });
926    calendar.deleteEvent(id).then(() => {
927      console.info("Succeeded in deleting event");
928    }).catch((err: BusinessError) => {
929      console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`);
930    });
931  }
932});
933```
934
935### deleteEvents
936
937deleteEvents(ids: number[], callback: AsyncCallback\<void>): void
938
939Deletes a batch of events with the specified IDs. This API uses an asynchronous callback to return the result.
940
941**System capability**: SystemCapability.Applications.CalendarData
942
943**Parameters**
944
945| Name  | Type                | Mandatory| Description        |
946| -------- | -------------------- | ---- | ------------ |
947| ids      | number[]             | Yes  | Array of event IDs.|
948| callback | AsyncCallback\<void> | Yes  | Callback used to return the result.  |
949
950**Example**
951
952```typescript
953import { BusinessError } from '@kit.BasicServicesKit';
954import { calendarMgr } from '../entryability/EntryAbility';
955
956let calendar : calendarManager.Calendar | undefined = undefined;
957let id1: number = 0;
958let id2: number = 0;
959const date = new Date();
960const event1: calendarManager.Event = {
961  type: calendarManager.EventType.NORMAL,
962  startTime: date.getTime(),
963  endTime: date.getTime() + 60 * 60 * 1000
964};
965const event2: calendarManager.Event = {
966  type: calendarManager.EventType.IMPORTANT,
967  startTime: date.getTime(),
968  endTime: date.getTime() + 60 * 60 * 1000
969};
970calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
971  if (err) {
972    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
973  } else {
974    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
975    calendar = data;
976    await calendar.addEvent(event1).then((data: number) => {
977      console.info(`Succeeded in adding event, id -> ${data}`);
978      id1 = data;
979    }).catch((err: BusinessError) => {
980      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
981    });
982    await calendar.addEvent(event2).then((data: number) => {
983      console.info(`Succeeded in adding event, id -> ${data}`);
984      id2 = data;
985    }).catch((err: BusinessError) => {
986      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
987    });
988    calendar.deleteEvents([id1, id2], (err: BusinessError) => {
989      if (err) {
990        console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`);
991      } else {
992        console.info("Succeeded in deleting events");
993      }
994    });
995  }
996});
997```
998
999### deleteEvents
1000
1001deleteEvents(ids: number[]): Promise\<void>
1002
1003Deletes a batch of events with the specified IDs. This API uses a promise to return the result.
1004
1005**System capability**: SystemCapability.Applications.CalendarData
1006
1007**Parameters**
1008
1009| Name| Type    | Mandatory| Description        |
1010| ------ | -------- | ---- | ------------ |
1011| ids    | number[] | Yes  | Array of event IDs.|
1012
1013**Return value**
1014
1015| Type          | Description                     |
1016| -------------- | ------------------------- |
1017| Promise\<void> | Promise that returns no value.|
1018
1019**Example**
1020
1021```typescript
1022import { BusinessError } from '@kit.BasicServicesKit';
1023import { calendarMgr } from '../entryability/EntryAbility';
1024
1025let calendar : calendarManager.Calendar | undefined = undefined;
1026let id1: number = 0;
1027let id2: number = 0;
1028const date = new Date();
1029const event1: calendarManager.Event = {
1030  type: calendarManager.EventType.NORMAL,
1031  startTime: date.getTime(),
1032  endTime: date.getTime() + 60 * 60 * 1000
1033};
1034const event2: calendarManager.Event = {
1035  type: calendarManager.EventType.IMPORTANT,
1036  startTime: date.getTime(),
1037  endTime: date.getTime() + 60 * 60 * 1000
1038};
1039calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1040  if (err) {
1041    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1042  } else {
1043    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1044    calendar = data;
1045    await calendar.addEvent(event1).then((data: number) => {
1046      console.info(`Succeeded in adding event, id -> ${data}`);
1047      id1 = data;
1048    }).catch((err: BusinessError) => {
1049      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1050    });
1051    await calendar.addEvent(event2).then((data: number) => {
1052      console.info(`Succeeded in adding event, id -> ${data}`);
1053      id2 = data;
1054    }).catch((err: BusinessError) => {
1055      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1056    });
1057    calendar.deleteEvents([id1, id2]).then(() => {
1058      console.info("Succeeded in deleting events");
1059    }).catch((err: BusinessError) => {
1060      console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`);
1061    });
1062  }
1063});
1064```
1065
1066### updateEvent
1067
1068updateEvent(event: Event, callback: AsyncCallback\<void>): void
1069
1070Updates an event. This API uses an asynchronous callback to return the result.
1071
1072**System capability**: SystemCapability.Applications.CalendarData
1073
1074**Parameters**
1075
1076| Name  | Type                | Mandatory| Description       |
1077| -------- | -------------------- | ---- | ----------- |
1078| event    | [Event](#event)      | Yes  | **Event** object.|
1079| callback | AsyncCallback\<void> | Yes  | Callback used to return the result. |
1080
1081**Example**
1082
1083```typescript
1084import { BusinessError } from '@kit.BasicServicesKit';
1085import { calendarMgr } from '../entryability/EntryAbility';
1086
1087let calendar : calendarManager.Calendar | undefined = undefined;
1088const date = new Date();
1089const oriEvent: calendarManager.Event = {
1090  title: 'update',
1091  type: calendarManager.EventType.NORMAL,
1092  description: 'updateEventTest',
1093  startTime: date.getTime(),
1094  endTime: date.getTime() + 60 * 60 * 1000
1095};
1096calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1097  if (err) {
1098    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1099  } else {
1100    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1101    calendar = data;
1102    await calendar.addEvent(oriEvent).then((data: number) => {
1103      console.info(`Succeeded in adding event, id -> ${data}`);
1104      oriEvent.id = data;
1105      oriEvent.title = 'newUpdate';
1106    }).catch((err: BusinessError) => {
1107      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1108    });
1109    calendar.updateEvent(oriEvent, (err: BusinessError) => {
1110      if (err) {
1111        console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`);
1112      } else {
1113        console.info("Succeeded in updating event");
1114      }
1115    });
1116  }
1117});
1118```
1119
1120### updateEvent
1121
1122updateEvent(event: Event): Promise\<void>
1123
1124Updates an event. This API uses a promise to return the result.
1125
1126**System capability**: SystemCapability.Applications.CalendarData
1127
1128**Parameters**
1129
1130| Name| Type           | Mandatory| Description       |
1131| ------ | --------------- | ---- | ----------- |
1132| event  | [Event](#event) | Yes  | **Event** object.|
1133
1134**Return value**
1135
1136| Type          | Description                     |
1137| -------------- | ------------------------- |
1138| Promise\<void> | Promise that returns no value.|
1139
1140**Example**
1141
1142```typescript
1143import { BusinessError } from '@kit.BasicServicesKit';
1144import { calendarMgr } from '../entryability/EntryAbility';
1145
1146let calendar : calendarManager.Calendar | undefined = undefined;
1147const date = new Date();
1148const oriEvent: calendarManager.Event = {
1149  title: 'update',
1150  type: calendarManager.EventType.NORMAL,
1151  description: 'updateEventTest',
1152  startTime: date.getTime(),
1153  endTime: date.getTime() + 60 * 60 * 1000
1154};
1155calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1156  if (err) {
1157    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1158  } else {
1159    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1160    calendar = data;
1161    await calendar.addEvent(oriEvent).then((data: number) => {
1162      console.info(`Succeeded in adding event, id -> ${data}`);
1163      oriEvent.id = data;
1164      oriEvent.title = 'newUpdate';
1165    }).catch((err: BusinessError) => {
1166      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1167    });
1168    calendar.updateEvent(oriEvent).then(() => {
1169      console.info(`Succeeded in updating event`);
1170    }).catch((err: BusinessError) => {
1171      console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`);
1172    });
1173  }
1174});
1175```
1176
1177### getEvents
1178
1179getEvents(callback: AsyncCallback\<Event[]>): void
1180
1181Obtains all events in a calendar. This API uses an asynchronous callback to return the result.
1182
1183**System capability**: SystemCapability.Applications.CalendarData
1184
1185**Parameters**
1186
1187| Name  | Type                            | Mandatory| Description                             |
1188| -------- | -------------------------------- | ---- | --------------------------------- |
1189| callback | AsyncCallback<[Event](#event)[]> | Yes  | Callback used to return an array of events.|
1190
1191**Example**
1192
1193```typescript
1194import { BusinessError } from '@kit.BasicServicesKit';
1195import { calendarMgr } from '../entryability/EntryAbility';
1196
1197let calendar : calendarManager.Calendar | undefined = undefined;
1198calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1199  if (err) {
1200    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1201  } else {
1202    console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`);
1203    calendar = data;
1204    calendar.getEvents((err: BusinessError, data: calendarManager.Event[]) => {
1205      if (err) {
1206        console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1207      } else {
1208        console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1209      }
1210    });
1211  }
1212});
1213```
1214
1215### getEvents
1216
1217getEvents(eventFilter: EventFilter, eventKey: (keyof Event)[], callback: AsyncCallback\<Event[]>):void
1218
1219Obtains all events in a calendar that match the filter criteria. This API uses an asynchronous callback to return the result.
1220
1221**System capability**: SystemCapability.Applications.CalendarData
1222
1223**Parameters**
1224
1225| Name     | Type                            | Mandatory| Description                             |
1226| ----------- | -------------------------------- | ---- | --------------------------------- |
1227| eventFilter | [EventFilter](#eventfilter)      | Yes  | Filter criteria.                       |
1228| eventKey    | (keyof [Event](#event))[]        | Yes  | Filter field.                       |
1229| callback    | AsyncCallback<[Event](#event)[]> | Yes  | Callback used to return an array of events.|
1230
1231**Example**
1232
1233```typescript
1234import { BusinessError } from '@kit.BasicServicesKit';
1235import { calendarMgr } from '../entryability/EntryAbility';
1236
1237let calendar : calendarManager.Calendar | undefined = undefined;
1238let id1: number = 0;
1239let id2: number = 0;
1240const date = new Date();
1241const event1: calendarManager.Event = {
1242  type: calendarManager.EventType.NORMAL,
1243  startTime: date.getTime(),
1244  endTime: date.getTime() + 60 * 60 * 1000
1245};
1246const event2: calendarManager.Event = {
1247  type: calendarManager.EventType.IMPORTANT,
1248  startTime: date.getTime(),
1249  endTime: date.getTime() + 60 * 60 * 1000
1250};
1251calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1252  if (err) {
1253    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1254  } else {
1255    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1256    calendar = data;
1257    await calendar.addEvent(event1).then((data: number) => {
1258      console.info(`Succeeded in adding event, id -> ${data}`);
1259    }).catch((err: BusinessError) => {
1260      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1261    });
1262    await calendar.addEvent(event2).then((data: number) => {
1263      console.info(`Succeeded in adding event, id -> ${data}`);
1264    }).catch((err: BusinessError) => {
1265      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1266    });
1267    const filter = calendarManager.EventFilter.filterById([id1, id2]);
1268    calendar.getEvents(filter, ['title', 'type', 'startTime', 'endTime'], (err: BusinessError, data: calendarManager.Event[]) => {
1269      if (err) {
1270        console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1271      } else {
1272        console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1273      }
1274    });
1275  }
1276});
1277```
1278
1279### getEvents
1280
1281getEvents(eventFilter?: EventFilter, eventKey?: (keyof Event)[]): Promise\<Event[]>
1282
1283Obtains all events in a calendar that match the filter criteria. This API uses a promise to return the result.
1284
1285**System capability**: SystemCapability.Applications.CalendarData
1286
1287**Parameters**
1288
1289| Name     | Type                       | Mandatory| Description      |
1290| ----------- | --------------------------- | ---- | ---------- |
1291| eventFilter | [EventFilter](#eventfilter) | No  | Filter criteria.|
1292| eventKey    | (keyof [Event](#event))[]   | No  | Filter field.|
1293
1294**Return value**
1295
1296| Type                      | Description                               |
1297| -------------------------- | ----------------------------------- |
1298| Promise<[Event](#event)[]> | Promise used to return the result, which is an array of **Event** objects.|
1299
1300**Example**
1301
1302```typescript
1303import { BusinessError } from '@kit.BasicServicesKit';
1304import { calendarMgr } from '../entryability/EntryAbility';
1305
1306let calendar : calendarManager.Calendar | undefined = undefined;
1307const date = new Date();
1308const event: calendarManager.Event = {
1309  title: 'MyEvent',
1310  type: calendarManager.EventType.IMPORTANT,
1311  startTime: date.getTime(),
1312  endTime: date.getTime() + 60 * 60 * 1000
1313};
1314calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1315  if (err) {
1316    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1317  } else {
1318    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1319    calendar = data;
1320    await calendar.addEvent(event).then((data: number) => {
1321      console.info(`Succeeded in adding event, id -> ${data}`);
1322    }).catch((err: BusinessError) => {
1323      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1324    });
1325    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
1326    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1327      console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1328    }).catch((err: BusinessError) => {
1329      console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1330    });
1331  }
1332});
1333```
1334
1335### getConfig
1336
1337getConfig(): CalendarConfig
1338
1339Obtains the calendar configuration information.
1340
1341**System capability**: SystemCapability.Applications.CalendarData
1342
1343**Return value**
1344
1345| Type                             | Description          |
1346| --------------------------------- | -------------- |
1347| [CalendarConfig](#calendarconfig) | Calendar configuration information.|
1348
1349**Example**
1350
1351```typescript
1352import { calendarMgr } from '../entryability/EntryAbility';
1353import { BusinessError } from '@kit.BasicServicesKit';
1354
1355let calendar : calendarManager.Calendar | undefined = undefined;
1356calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1357  if (err) {
1358    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1359  } else {
1360    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1361    calendar = data;
1362    const config = calendar.getConfig();
1363    console.info("Succeeded in getting config");
1364  }
1365});
1366```
1367
1368### setConfig
1369
1370setConfig(config: CalendarConfig, callback: AsyncCallback\<void>): void
1371
1372Sets the calendar configuration information. This API uses an asynchronous callback to return the result.
1373
1374**System capability**: SystemCapability.Applications.CalendarData
1375
1376**Parameters**
1377
1378| Name  | Type                             | Mandatory| Description          |
1379| -------- | --------------------------------- | ---- | -------------- |
1380| config   | [CalendarConfig](#calendarconfig) | Yes  | Calendar configuration information.|
1381| callback | AsyncCallback\<void>              | Yes  | Callback used to return the result.    |
1382
1383**Example**
1384
1385```typescript
1386import { BusinessError } from '@kit.BasicServicesKit';
1387import { calendarMgr } from '../entryability/EntryAbility';
1388
1389let calendar : calendarManager.Calendar | undefined = undefined;
1390const config: calendarManager.CalendarConfig = {
1391  enableReminder: true,
1392  color: '#aabbcc'
1393};
1394calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1395  if (err) {
1396    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1397  } else {
1398    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1399    calendar = data;
1400    calendar.setConfig(config, (err: BusinessError) => {
1401      if (err) {
1402        console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
1403      } else {
1404        console.info(`Succeeded in setting config, config -> ${JSON.stringify(config)}`);
1405      }
1406    });
1407  }
1408});
1409```
1410
1411### setConfig
1412
1413setConfig(config: CalendarConfig): Promise\<void>
1414
1415Sets the calendar configuration information. This API uses a promise to return the result.
1416
1417**System capability**: SystemCapability.Applications.CalendarData
1418
1419**Parameters**
1420
1421| Name| Type                             | Mandatory| Description          |
1422| ------ | --------------------------------- | ---- | -------------- |
1423| config | [CalendarConfig](#calendarconfig) | Yes  | Calendar configuration information.|
1424
1425**Return value**
1426
1427| Type          | Description                     |
1428| -------------- | ------------------------- |
1429| Promise\<void> | Promise that returns no value.|
1430
1431**Example**
1432
1433```typescript
1434import { BusinessError } from '@kit.BasicServicesKit';
1435import { calendarMgr } from '../entryability/EntryAbility';
1436
1437let calendar : calendarManager.Calendar | undefined = undefined;
1438const config: calendarManager.CalendarConfig = {
1439  enableReminder: true,
1440  color: '#aabbcc'
1441};
1442calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1443  if (err) {
1444    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1445  } else {
1446    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1447    calendar = data;
1448    calendar.setConfig(config).then(() => {
1449      console.info(`Succeeded in setting config, data->${JSON.stringify(config)}`);
1450    }).catch((err: BusinessError) => {
1451      console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
1452    });
1453  }
1454});
1455```
1456
1457### getAccount
1458
1459getAccount(): CalendarAccount
1460
1461Obtains the calendar account information.
1462
1463**System capability**: SystemCapability.Applications.CalendarData
1464
1465**Return value**
1466
1467| Type                               | Description          |
1468| ----------------------------------- | -------------- |
1469| [CalendarAccount](#calendaraccount) | Calendar account information.|
1470
1471**Example**
1472
1473```typescript
1474import { calendarMgr } from '../entryability/EntryAbility';
1475import { BusinessError } from '@kit.BasicServicesKit';
1476
1477let calendar : calendarManager.Calendar | undefined = undefined;
1478calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1479  if (err) {
1480    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1481  } else {
1482    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1483    calendar = data;
1484    const account = calendar.getAccount();
1485    console.info(`succeeded in getting account, account -> ${JSON.stringify(account)}`);
1486  }
1487});
1488```
1489
1490## CalendarAccount
1491
1492Describes the calendar account information.
1493
1494**Atomic service API**: This API can be used in atomic services since API version 11.
1495
1496**System capability**: SystemCapability.Applications.CalendarData
1497
1498| Name       | Type                         | Read-only| Optional| Description                                  |
1499| ----------- | ----------------------------- | ---- |----| -------------------------------------- |
1500| name        | string                        | Yes  | No | Account name.                            |
1501| type        | [CalendarType](#calendartype) | No  | No | Account type.                            |
1502| displayName | string                        | No  | Yes | Display name of the account. If this parameter is not set, an empty string is used.|
1503
1504## CalendarConfig
1505
1506Describes the calendar configuration information.
1507
1508**System capability**: SystemCapability.Applications.CalendarData
1509
1510| Name          | Type    | Read-only   | Optional| Description                                                        |
1511| -------------- |--------|-------|----| ------------------------------------------------------------ |
1512| enableReminder | boolean | No    | Yes | Whether to enable the reminder for events in the calendar. The value **true** means to enable the reminder for events in the calendar, and **false** means the opposite. The default value is **true**.|
1513| color          | number \| string | No  | Yes | Calendar color. If this parameter is not set, the default value **'#0A59F7'** is used.               |
1514
1515## Event
1516
1517Describes an **Event** object, including the event title, start time, and end time.
1518
1519**System capability**: SystemCapability.Applications.CalendarData
1520
1521| Name          | Type                             | Read-only| Optional| Description                                                                                                                                                                                                     |
1522| -------------- | --------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1523| id             | number                            | No  | Yes | Event ID. This parameter does not need to be set in the [addEvent()](#addevent) or [addEvents()](#addevents) API.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                           |
1524| type           | [EventType](#eventtype)           | No  | No | Event type.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                           |
1525| title          | string                            | No  | Yes | Event title. If this parameter is not set, an empty string is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                               |
1526| location       | [Location](#location)             | No  | Yes | Event location. If this parameter is not set, the default null value is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                               |
1527| startTime      | number                            | No  | No | Start time of the event. The value is a 13-digit timestamp.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                  |
1528| endTime        | number                            | No  | No | End time of the event. The value is a 13-digit timestamp.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                 |
1529| isAllDay       | boolean                           | No  | Yes | Whether the event is an all-day event. The value **true** means that the event is an all-day event, and **false** means the opposite. The default value is **false**.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                          |
1530| attendee       | [Attendee](#attendee)[]           | No  | Yes | Event attendee. If this parameter is not set, the default null value is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                               |
1531| timeZone       | string                            | No  | Yes | Time zone of the event. If this parameter is not set, the current system time zone is used. You can call the [getTimeZone()](../apis-basic-services-kit/js-apis-date-time.md#systemdatetimegettimezone) API to obtain the current system time zone.<br>**Atomic service API**: This API can be used in atomic services since API version 11.|
1532| reminderTime   | number[]                          | No  | Yes | Amount of time that the reminder occurs before the start of the event, in minutes. For example, if the value is 5, the reminder occurs 5 minutes before the event starts. If this parameter is not set, no reminder is set. The value can be negative.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                 |
1533| recurrenceRule | [RecurrenceRule](#recurrencerule) | No  | Yes | Recurrence rule of the event. If this parameter is not set, the value does not recur.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                              |
1534| description    | string                            | No  | Yes | Event description. If this parameter is not set, an empty string is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                |
1535| service        | [EventService](#eventservice)     | No  | Yes | Event service. If this parameter is not set, no service is available.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                              |
1536| identifier<sup>12+</sup>     | string                            | No  | Yes | A unique ID of an event can be specified. If this parameter is not set, the default null value is used.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                        |
1537| isLunar<sup>12+</sup>     | boolean                            | No  | Yes | Whether it is a lunar calendar event. The value **true** means that the event is a lunar calendar event, and **false** means the opposite. The default value is **false**.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                          |
1538
1539## CalendarType
1540
1541Enumerates the account types.
1542
1543**Atomic service API**: This API can be used in atomic services since API version 11.
1544
1545**System capability**: SystemCapability.Applications.CalendarData
1546
1547| Name      | Value          | Description                |
1548| ---------- | ------------ | -------------------- |
1549| LOCAL      | 'local'      | Local account.          |
1550| EMAIL      | 'email'      | Email account.          |
1551| BIRTHDAY   | 'birthday'   | Birthday account.          |
1552| CALDAV     | 'caldav'     | CalDAV account.|
1553| SUBSCRIBED | 'subscribed' | Subscription account.          |
1554
1555## Location
1556
1557Describes the event location.
1558
1559**Atomic service API**: This API can be used in atomic services since API version 11.
1560
1561**System capability**: SystemCapability.Applications.CalendarData
1562
1563| Name     | Type  | Read-only| Optional| Description                    |
1564| --------- | ------ | ---- |----| ------------------------ |
1565| location  | string | No  | Yes | Location. The default value is an empty string.|
1566| longitude | number | No  | Yes | Longitude of the location. The default value is **0**.       |
1567| latitude  | number | No  | Yes | Latitude of the location. The default value is **0**.       |
1568
1569## EventFilter
1570
1571Implements an event filter.
1572
1573You can use [filterById()](#filterbyid), [filterByTime()](#filterbytime), or [filterByTitle()](#filterbytitle) to obtain an event filter, and then pass the filter in [getEvents()](#getevents) for filtering.
1574
1575### filterById
1576
1577static filterById(ids: number[]): EventFilter
1578
1579Defines an event ID based filter.
1580
1581**System capability**: SystemCapability.Applications.CalendarData
1582
1583**Parameters**
1584
1585| Name| Type    | Mandatory| Description        |
1586| ------ | -------- | ---- | ------------ |
1587| ids    | number[] | Yes  | Array of event IDs.|
1588
1589**Return value**
1590
1591| Type                       | Description                |
1592| --------------------------- | -------------------- |
1593| [EventFilter](#eventfilter) | **EventFilter** object.|
1594
1595**Example**
1596
1597```typescript
1598import { BusinessError } from '@kit.BasicServicesKit';
1599import { calendarMgr } from '../entryability/EntryAbility';
1600
1601let calendar : calendarManager.Calendar | undefined = undefined;
1602let id1: number = 0;
1603let id2: number = 0;
1604const date = new Date();
1605const event1: calendarManager.Event = {
1606  type: calendarManager.EventType.NORMAL,
1607  startTime: date.getTime(),
1608  endTime: date.getTime() + 60 * 60 * 1000
1609};
1610const event2: calendarManager.Event = {
1611  type: calendarManager.EventType.IMPORTANT,
1612  startTime: date.getTime(),
1613  endTime: date.getTime() + 60 * 60 * 1000
1614};
1615calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1616  if (err) {
1617    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1618  } else {
1619    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1620    calendar = data;
1621    await calendar.addEvent(event1).then((data: number) => {
1622      console.info(`Succeeded in adding event, id -> ${data}`);
1623      id1 = data;
1624    }).catch((err: BusinessError) => {
1625      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1626    });
1627    await calendar.addEvent(event2).then((data: number) => {
1628      console.info(`Succeeded in adding event, id -> ${data}`);
1629      id2 = data;
1630    }).catch((err: BusinessError) => {
1631      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1632    });
1633    const filter = calendarManager.EventFilter.filterById([id1, id2]);
1634    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1635      console.info(`Succeeded in getting events filter by id, data -> ${JSON.stringify(data)}`);
1636    }).catch((err: BusinessError) => {
1637      console.error(`Failed to filter by id. Code: ${err.code}, message: ${err.message}`);
1638    });
1639  }
1640});
1641```
1642
1643### filterByTime
1644
1645static filterByTime(start: number, end: number): EventFilter
1646
1647Defines an event time based filter.
1648
1649**System capability**: SystemCapability.Applications.CalendarData
1650
1651**Parameters**
1652
1653| Name| Type  | Mandatory| Description      |
1654| ------ | ------ | ---- | ---------- |
1655| start  | number | Yes  | Start time.|
1656| end    | number | Yes  | End time.|
1657
1658**Return value**
1659
1660| Type                       | Description                |
1661| --------------------------- | -------------------- |
1662| [EventFilter](#eventfilter) | **EventFilter** object.|
1663
1664**Example**
1665
1666```typescript
1667import { BusinessError } from '@kit.BasicServicesKit';
1668import { calendarMgr } from '../entryability/EntryAbility';
1669
1670let calendar : calendarManager.Calendar | undefined = undefined;
1671const event1: calendarManager.Event = {
1672  type: calendarManager.EventType.NORMAL,
1673  startTime: 1686931200000,
1674  endTime: 1687017600000
1675};
1676const event2: calendarManager.Event = {
1677  type: calendarManager.EventType.IMPORTANT,
1678  startTime: 1686931200000,
1679  endTime: 1687017600000
1680};
1681calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1682  if (err) {
1683    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1684  } else {
1685    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1686    calendar = data;
1687    await calendar.addEvent(event1).then((data: number) => {
1688      console.info(`Succeeded in adding event, id -> ${data}`);
1689    }).catch((err: BusinessError) => {
1690      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1691    });
1692    await calendar.addEvent(event2).then((data: number) => {
1693      console.info(`Succeeded in adding event, id -> ${data}`);
1694    }).catch((err: BusinessError) => {
1695      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1696    });
1697    const filter = calendarManager.EventFilter.filterByTime(1686931200000, 1687017600000);
1698    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1699      console.info(`Succeeded in getting events filter by time, data -> ${JSON.stringify(data)}`);
1700    }).catch((err: BusinessError) => {
1701      console.error(`Failed to filter by time. Code: ${err.code}, message: ${err.message}`);
1702    });
1703  }
1704});
1705```
1706
1707### filterByTitle
1708
1709static filterByTitle(title: string): EventFilter
1710
1711Defines an event title based filter.
1712
1713**System capability**: SystemCapability.Applications.CalendarData
1714
1715**Parameters**
1716
1717| Name| Type  | Mandatory| Description      |
1718| ------ | ------ | ---- | ---------- |
1719| title  | string | Yes  | Event title.|
1720
1721**Return value**
1722
1723| Type                       | Description                |
1724| --------------------------- | -------------------- |
1725| [EventFilter](#eventfilter) | **EventFilter** object.|
1726
1727**Example**
1728
1729```typescript
1730import { BusinessError } from '@kit.BasicServicesKit';
1731import { calendarMgr } from '../entryability/EntryAbility';
1732
1733let calendar : calendarManager.Calendar | undefined = undefined;
1734const event: calendarManager.Event = {
1735  title: 'MyEvent',
1736  type: calendarManager.EventType.NORMAL,
1737  startTime: 1686931200000,
1738  endTime: 1687017600000
1739};
1740calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1741  if (err) {
1742    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1743  } else {
1744    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1745    calendar = data;
1746    await calendar.addEvent(event).then((data: number) => {
1747      console.info(`Succeeded in adding event, id -> ${data}`);
1748    }).catch((err: BusinessError) => {
1749      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1750    });
1751    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
1752    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1753      console.info(`Succeeded in getting events filter by title, data -> ${JSON.stringify(data)}`);
1754    }).catch((err: BusinessError) => {
1755      console.error(`Failed to filter by title. Code: ${err.code}, message: ${err.message}`);
1756    });
1757  }
1758});
1759```
1760
1761## EventType
1762
1763Enumerates event types.
1764
1765**Atomic service API**: This API can be used in atomic services since API version 11.
1766
1767**System capability**: SystemCapability.Applications.CalendarData
1768
1769| Name     | Value  | Description                |
1770| --------- | ---- | -------------------- |
1771| NORMAL    | 0    | Normal event.          |
1772| IMPORTANT | 1    | Important event. This type of event supports countdown.|
1773
1774## RecurrenceRule
1775
1776Describes the recurrence rule of the event.
1777
1778**System capability**: SystemCapability.Applications.CalendarData
1779
1780| Name               | Type                                       | Read-only| Optional| Description                                                                       |
1781| ------------------- | ------------------------------------------- | ---- |----|---------------------------------------------------------------------------|
1782| recurrenceFrequency | [RecurrenceFrequency](#recurrencefrequency) | No  | No | Type of the event recurrence rule.<br>**Atomic service API**: This API can be used in atomic services since API version 11.          |
1783| expire              | number                                      | No  | Yes | End date of the recurrence period. If this parameter is not set, the default value **0** is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11. |
1784| count<sup>12+</sup>               | number                                      | No  | Yes | Number of times that an event recurs. If this parameter is not set, the default value **0** is used.<br>**Atomic service API**: This API can be used in atomic services since API version 12. |
1785| interval<sup>12+</sup>            | number                                      | No  | Yes | Interval for event recurrence. If this parameter is not set, the default value **0** is used.<br>**Atomic service API**: This API can be used in atomic services since API version 12.|
1786| excludedDates<sup>12+</sup>       | number[]                                    | No  | Yes | Excluded dates of event recurrence.<br>**Atomic service API**: This API can be used in atomic services since API version 12.          |
1787## RecurrenceFrequency
1788
1789Enumerates the types of the event recurrence rule.
1790
1791**Atomic service API**: This API can be used in atomic services since API version 11.
1792
1793**System capability**: SystemCapability.Applications.CalendarData
1794
1795| Name   | Value  | Description      |
1796| ------- | ---- | ---------- |
1797| YEARLY  | 0    | Yearly.|
1798| MONTHLY | 1    | Monthly.|
1799| WEEKLY  | 2    | Weekly.|
1800| DAILY   | 3    | Daily.|
1801
1802## Attendee
1803
1804Describes the attendee of the event.
1805
1806**System capability**: SystemCapability.Applications.CalendarData
1807
1808| Name | Type  | Read-only| Optional| Description                                                                   |
1809| ----- | ------ | ---- |----|-----------------------------------------------------------------------|
1810| name  | string | No  | No | Name of the attendee.<br>**Atomic service API**: This API can be used in atomic services since API version 11.        |
1811| email | string | No  | No | Email address of the attendee.<br>**Atomic service API**: This API can be used in atomic services since API version 11.       |
1812| role<sup>12+</sup>  | [AttendeeRole](#attendeerole12) | No  | Yes | Participant role.<br>**Atomic service API**: This API can be used in atomic services since API version 12.|
1813
1814## EventService
1815
1816Describes the event service.
1817
1818**Atomic service API**: This API can be used in atomic services since API version 11.
1819
1820**System capability**: SystemCapability.Applications.CalendarData
1821
1822| Name       | Type                       | Read-only| Optional| Description                                 |
1823| ----------- | --------------------------- | ---- |----| ------------------------------------- |
1824| type        | [ServiceType](#servicetype) | No  | No | Service type.                           |
1825| uri         | string                      | No  | No | URI of the service. It can be used to redirect the user to a page of another application.|
1826| description | string                      | No  | Yes | Description of the service. If this parameter is not set, an empty string is used. |
1827
1828## ServiceType
1829
1830Enumerates the event service types.
1831
1832**Atomic service API**: This API can be used in atomic services since API version 11.
1833
1834**System capability**: SystemCapability.Applications.CalendarData
1835
1836| Name           | Value              | Description        |
1837| --------------- | ---------------- | ------------ |
1838| MEETING         | 'Meeting'        | Join a meeting.  |
1839| WATCHING        | 'Watching'       | Watch a video.  |
1840| REPAYMENT       | 'Repayment'      | Make a payment.  |
1841| LIVE            | 'Live'           | Watch live TV.  |
1842| SHOPPING        | 'Shopping'       | Go shopping.  |
1843| TRIP            | 'Trip'           | View the trip.  |
1844| CLASS           | 'Class'          | Join class.  |
1845| SPORTS_EVENTS   | 'SportsEvents'   | Watch a sports event.|
1846| SPORTS_EXERCISE | 'SportsExercise' | Start exercising.  |
1847
1848## AttendeeRole<sup>12+</sup>
1849
1850Enumerates the participant role types.
1851
1852**Atomic service API**: This API can be used in atomic services since API version 12.
1853
1854**System capability**: SystemCapability.Applications.CalendarData
1855
1856| Name          | Value            | Description    |
1857|--------------|---------------|--------|
1858| ORGANIZER<sup>12+</sup>    | 'organizer'   | Conference organizer.|
1859| PARTICIPANT<sup>12+</sup>  | 'participant' | Conference participant.|
1860