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). An **Event** object is subordinate to a **Calendar** object. To create an **Event** object, you need to create a **Calendar** object first. A **Calendar** contains multiple **Event** objects, but an **Event** belongs to only one **Calendar**. **CalendarManager** is used to manage calendars, and **EventFilter** is used to manage events.
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 the 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. Events created using this API cannot be queried or modified by third-party applications, but only by the system calendar.
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&lt;number&gt; | Promise used to return the event ID. The event ID is the unique identifier of the event and is the auto-increment primary key of the database. If the value is less than **0**, the event creation fails; if the value is greater than **0**, the event creation succeeds.|
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, which is the unique identifier of a calendar account and is the auto-increment primary key of the database. If the value is less than **0**, the account creation fails; if the value is greater than **0**, the account creation succeeds.|
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. The event ID is the unique identifier of the event and is the auto-increment primary key of the database. If the value is less than **0**, the event creation fails; if the value is greater than **0**, the event creation succeeds.|
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, which is the unique identifier of an event. If the input event ID is a positive integer, the event is created.|
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    calendar.addEvent(event).then((data: number) => {
864      console.info(`Succeeded in adding event, id -> ${data}`);
865      id = data;
866      calendar?.deleteEvent(id, (err: BusinessError) => {
867        if (err) {
868          console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`);
869        } else {
870          console.info(`Succeeded in deleting event, err -> ${JSON.stringify(err)}`);
871        }
872      });
873    }).catch((err: BusinessError) => {
874      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
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 the current calendar. This API uses an asynchronous callback to return the result.
1182
1183If there is only one input parameter, the filter criteria, corresponding to the type **EventFilter**, must be set as the parameter.
1184
1185**System capability**: SystemCapability.Applications.CalendarData
1186
1187**Parameters**
1188
1189| Name  | Type                            | Mandatory| Description                             |
1190| -------- | -------------------------------- | ---- | --------------------------------- |
1191| callback | AsyncCallback<[Event](#event)[]> | Yes  | Callback used to return an array of events.|
1192
1193**Example**
1194
1195```typescript
1196import { BusinessError } from '@kit.BasicServicesKit';
1197import { calendarMgr } from '../entryability/EntryAbility';
1198
1199let calendar : calendarManager.Calendar | undefined = undefined;
1200calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1201  if (err) {
1202    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1203  } else {
1204    console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`);
1205    calendar = data;
1206    calendar.getEvents((err: BusinessError, data: calendarManager.Event[]) => {
1207      if (err) {
1208        console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1209      } else {
1210        console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1211      }
1212    });
1213  }
1214});
1215```
1216
1217### getEvents
1218
1219getEvents(eventFilter: EventFilter, eventKey: (keyof Event)[], callback: AsyncCallback\<Event[]>):void
1220
1221Obtains all events in a calendar that match the filter criteria. This API uses an asynchronous callback to return the result.
1222
1223**System capability**: SystemCapability.Applications.CalendarData
1224
1225**Parameters**
1226
1227| Name     | Type                            | Mandatory| Description                             |
1228| ----------- | -------------------------------- | ---- | --------------------------------- |
1229| eventFilter | [EventFilter](#eventfilter)      | Yes  | Filter criteria.                       |
1230| eventKey    | (keyof [Event](#event))[]        | Yes  | Filter field.                       |
1231| callback    | AsyncCallback<[Event](#event)[]> | Yes  | Callback used to return an array of events.|
1232
1233**Example**
1234
1235```typescript
1236import { BusinessError } from '@kit.BasicServicesKit';
1237import { calendarMgr } from '../entryability/EntryAbility';
1238
1239let calendar : calendarManager.Calendar | undefined = undefined;
1240let id1: number = 0;
1241let id2: number = 0;
1242const date = new Date();
1243const event1: calendarManager.Event = {
1244  type: calendarManager.EventType.NORMAL,
1245  startTime: date.getTime(),
1246  endTime: date.getTime() + 60 * 60 * 1000
1247};
1248const event2: calendarManager.Event = {
1249  type: calendarManager.EventType.IMPORTANT,
1250  startTime: date.getTime(),
1251  endTime: date.getTime() + 60 * 60 * 1000
1252};
1253calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1254  if (err) {
1255    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1256  } else {
1257    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1258    calendar = data;
1259    await calendar.addEvent(event1).then((data: number) => {
1260      console.info(`Succeeded in adding event, id -> ${data}`);
1261    }).catch((err: BusinessError) => {
1262      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1263    });
1264    await calendar.addEvent(event2).then((data: number) => {
1265      console.info(`Succeeded in adding event, id -> ${data}`);
1266    }).catch((err: BusinessError) => {
1267      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1268    });
1269    const filter = calendarManager.EventFilter.filterById([id1, id2]);
1270    calendar.getEvents(filter, ['title', 'type', 'startTime', 'endTime'], (err: BusinessError, data: calendarManager.Event[]) => {
1271      if (err) {
1272        console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1273      } else {
1274        console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1275      }
1276    });
1277  }
1278});
1279```
1280
1281### getEvents
1282
1283getEvents(eventFilter?: EventFilter, eventKey?: (keyof Event)[]): Promise\<Event[]>
1284
1285Obtains all events in a calendar that match the filter criteria. This API uses a promise to return the result.
1286
1287If there is only one input parameter, the filter criteria, corresponding to the type **EventFilter**, must be set as the parameter.
1288
1289**System capability**: SystemCapability.Applications.CalendarData
1290
1291**Parameters**
1292
1293| Name     | Type                       | Mandatory| Description      |
1294| ----------- | --------------------------- | ---- | ---------- |
1295| eventFilter | [EventFilter](#eventfilter) | No  | Filter criteria.|
1296| eventKey    | (keyof [Event](#event))[]   | No  | Filter field.|
1297
1298**Return value**
1299
1300| Type                      | Description                               |
1301| -------------------------- | ----------------------------------- |
1302| Promise<[Event](#event)[]> | Promise used to return the result, which is an array of **Event** objects.|
1303
1304**Example**
1305
1306```typescript
1307import { BusinessError } from '@kit.BasicServicesKit';
1308import { calendarMgr } from '../entryability/EntryAbility';
1309
1310let calendar : calendarManager.Calendar | undefined = undefined;
1311const date = new Date();
1312const event: calendarManager.Event = {
1313  title: 'MyEvent',
1314  type: calendarManager.EventType.IMPORTANT,
1315  startTime: date.getTime(),
1316  endTime: date.getTime() + 60 * 60 * 1000
1317};
1318calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1319  if (err) {
1320    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1321  } else {
1322    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1323    calendar = data;
1324    await calendar.addEvent(event).then((data: number) => {
1325      console.info(`Succeeded in adding event, id -> ${data}`);
1326    }).catch((err: BusinessError) => {
1327      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1328    });
1329    // Perform fuzzy query based on MyEvent. If an event of the MyEvent1 type exists, the event can also be queried.
1330    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
1331    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1332      console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`);
1333    }).catch((err: BusinessError) => {
1334      console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
1335    });
1336  }
1337});
1338```
1339
1340### getConfig
1341
1342getConfig(): CalendarConfig
1343
1344Obtains the calendar configuration information.
1345
1346**System capability**: SystemCapability.Applications.CalendarData
1347
1348**Return value**
1349
1350| Type                             | Description          |
1351| --------------------------------- | -------------- |
1352| [CalendarConfig](#calendarconfig) | Calendar configuration information.|
1353
1354**Example**
1355
1356```typescript
1357import { calendarMgr } from '../entryability/EntryAbility';
1358import { BusinessError } from '@kit.BasicServicesKit';
1359
1360let calendar : calendarManager.Calendar | undefined = undefined;
1361calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1362  if (err) {
1363    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1364  } else {
1365    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1366    calendar = data;
1367    const config = calendar.getConfig();
1368    console.info("Succeeded in getting config");
1369  }
1370});
1371```
1372
1373### setConfig
1374
1375setConfig(config: CalendarConfig, callback: AsyncCallback\<void>): void
1376
1377Sets the calendar configuration information. This API uses an asynchronous callback to return the result.
1378
1379**System capability**: SystemCapability.Applications.CalendarData
1380
1381**Parameters**
1382
1383| Name  | Type                             | Mandatory| Description          |
1384| -------- | --------------------------------- | ---- | -------------- |
1385| config   | [CalendarConfig](#calendarconfig) | Yes  | Calendar configuration information.|
1386| callback | AsyncCallback\<void>              | Yes  | Callback used to return the result.    |
1387
1388**Example**
1389
1390```typescript
1391import { BusinessError } from '@kit.BasicServicesKit';
1392import { calendarMgr } from '../entryability/EntryAbility';
1393
1394let calendar : calendarManager.Calendar | undefined = undefined;
1395const config: calendarManager.CalendarConfig = {
1396  enableReminder: true,
1397  color: '#aabbcc'
1398};
1399calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1400  if (err) {
1401    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1402  } else {
1403    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1404    calendar = data;
1405    calendar.setConfig(config, (err: BusinessError) => {
1406      if (err) {
1407        console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
1408      } else {
1409        console.info(`Succeeded in setting config, config -> ${JSON.stringify(config)}`);
1410      }
1411    });
1412  }
1413});
1414```
1415
1416### setConfig
1417
1418setConfig(config: CalendarConfig): Promise\<void>
1419
1420Sets the calendar configuration information. This API uses a promise to return the result.
1421
1422**System capability**: SystemCapability.Applications.CalendarData
1423
1424**Parameters**
1425
1426| Name| Type                             | Mandatory| Description          |
1427| ------ | --------------------------------- | ---- | -------------- |
1428| config | [CalendarConfig](#calendarconfig) | Yes  | Calendar configuration information.|
1429
1430**Return value**
1431
1432| Type          | Description                     |
1433| -------------- | ------------------------- |
1434| Promise\<void> | Promise that returns no value.|
1435
1436**Example**
1437
1438```typescript
1439import { BusinessError } from '@kit.BasicServicesKit';
1440import { calendarMgr } from '../entryability/EntryAbility';
1441
1442let calendar : calendarManager.Calendar | undefined = undefined;
1443const config: calendarManager.CalendarConfig = {
1444  enableReminder: true,
1445  color: '#aabbcc'
1446};
1447calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1448  if (err) {
1449    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1450  } else {
1451    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1452    calendar = data;
1453    calendar.setConfig(config).then(() => {
1454      console.info(`Succeeded in setting config, data->${JSON.stringify(config)}`);
1455    }).catch((err: BusinessError) => {
1456      console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`);
1457    });
1458  }
1459});
1460```
1461
1462### getAccount
1463
1464getAccount(): CalendarAccount
1465
1466Obtains the calendar account information.
1467
1468**System capability**: SystemCapability.Applications.CalendarData
1469
1470**Return value**
1471
1472| Type                               | Description          |
1473| ----------------------------------- | -------------- |
1474| [CalendarAccount](#calendaraccount) | Calendar account information.|
1475
1476**Example**
1477
1478```typescript
1479import { calendarMgr } from '../entryability/EntryAbility';
1480import { BusinessError } from '@kit.BasicServicesKit';
1481
1482let calendar : calendarManager.Calendar | undefined = undefined;
1483calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => {
1484  if (err) {
1485    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1486  } else {
1487    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1488    calendar = data;
1489    const account = calendar.getAccount();
1490    console.info(`succeeded in getting account, account -> ${JSON.stringify(account)}`);
1491  }
1492});
1493```
1494
1495## CalendarAccount
1496
1497Describes the calendar account information.
1498
1499**Atomic service API**: This API can be used in atomic services since API version 11.
1500
1501**System capability**: SystemCapability.Applications.CalendarData
1502
1503| Name       | Type                         | Read Only| Optional| Description                              |
1504| ----------- | ----------------------------- | ---- |----|----------------------------------|
1505| name        | string                        | Yes  | No | Account name (for developers).                    |
1506| type        | [CalendarType](#calendartype) | No  | No | Account type.                           |
1507| displayName | string                        | No  | Yes | Account name displayed on the calendar application (for users). If this parameter is not set, an empty string is used.|
1508
1509## CalendarConfig
1510
1511Describes the calendar configuration information.
1512
1513**System capability**: SystemCapability.Applications.CalendarData
1514
1515| Name          | Type    | Read Only   | Optional| Description                                                        |
1516| -------------- |--------|-------|----| ------------------------------------------------------------ |
1517| 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**.|
1518| color          | number \| string | No  | Yes | Calendar color. If this parameter is not set, the default value **'#0A59F7'** is used.               |
1519
1520## Event
1521
1522Describes an **Event** object, including the event title, start time, and end time.
1523
1524**System capability**: SystemCapability.Applications.CalendarData
1525
1526| Name          | Type                             | Read Only| Optional| Description                                                                                                                                                                                                     |
1527| -------------- | --------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1528| 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.                                                                           |
1529| type           | [EventType](#eventtype)           | No  | No | Event type.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                                                                           |
1530| 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.                                                                                                                               |
1531| 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.                                                                                                                               |
1532| 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.                                                                                                                                  |
1533| 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.                                                                                                                                 |
1534| 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.                                                                                          |
1535| attendee       | [Attendee](#attendee)[]           | No  | Yes | Attendee of the conference event. 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.                                                                                                                             |
1536| 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.|
1537| 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. A negative value indicates the delay time for sending a notification.<br>**Atomic service API**: This API can be used in atomic services since API version 11.                                                                                       |
1538| recurrenceRule | [RecurrenceRule](#recurrencerule) | No  | Yes | Recurrence rule of an 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.                                                                                                                              |
1539| 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.                                                                                                                                |
1540| 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.                                                                                                                              |
1541| 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.                                                                                                                        |
1542| 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.                                                                                          |
1543
1544## CalendarType
1545
1546Enumerates the account types.
1547
1548**Atomic service API**: This API can be used in atomic services since API version 11.
1549
1550**System capability**: SystemCapability.Applications.CalendarData
1551
1552| Name      | Value          | Description                |
1553| ---------- | ------------ | -------------------- |
1554| LOCAL      | 'local'      | Local account.          |
1555| EMAIL      | 'email'      | Email account.          |
1556| BIRTHDAY   | 'birthday'   | Birthday account.          |
1557| CALDAV     | 'caldav'     | CalDAV account.|
1558| SUBSCRIBED | 'subscribed' | Subscription account.          |
1559
1560## Location
1561
1562Describes the event location.
1563
1564**Atomic service API**: This API can be used in atomic services since API version 11.
1565
1566**System capability**: SystemCapability.Applications.CalendarData
1567
1568| Name     | Type  | Read Only| Optional| Description                    |
1569| --------- | ------ | ---- |----| ------------------------ |
1570| location  | string | No  | Yes | Location. The default value is an empty string.|
1571| longitude | number | No  | Yes | Longitude of the location. The default value is **0**.       |
1572| latitude  | number | No  | Yes | Latitude of the location. The default value is **0**.       |
1573
1574## EventFilter
1575
1576Implements an event filter.
1577
1578You can use [filterById()](#filterbyid), [filterByTime()](#filterbytime), or [filterByTitle()](#filterbytitle) to obtain an event filter, and then pass the filter in [getEvents()](#getevents) for filtering.
1579
1580### filterById
1581
1582static filterById(ids: number[]): EventFilter
1583
1584Defines an event ID based filter.
1585
1586**System capability**: SystemCapability.Applications.CalendarData
1587
1588**Parameters**
1589
1590| Name| Type    | Mandatory| Description        |
1591| ------ | -------- | ---- | ------------ |
1592| ids    | number[] | Yes  | Array of event IDs.|
1593
1594**Return value**
1595
1596| Type                       | Description                |
1597| --------------------------- | -------------------- |
1598| [EventFilter](#eventfilter) | **EventFilter** object.|
1599
1600**Example**
1601
1602```typescript
1603import { BusinessError } from '@kit.BasicServicesKit';
1604import { calendarMgr } from '../entryability/EntryAbility';
1605
1606let calendar : calendarManager.Calendar | undefined = undefined;
1607let id1: number = 0;
1608let id2: number = 0;
1609const date = new Date();
1610const event1: calendarManager.Event = {
1611  type: calendarManager.EventType.NORMAL,
1612  startTime: date.getTime(),
1613  endTime: date.getTime() + 60 * 60 * 1000
1614};
1615const event2: calendarManager.Event = {
1616  type: calendarManager.EventType.IMPORTANT,
1617  startTime: date.getTime(),
1618  endTime: date.getTime() + 60 * 60 * 1000
1619};
1620calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1621  if (err) {
1622    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1623  } else {
1624    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1625    calendar = data;
1626    await calendar.addEvent(event1).then((data: number) => {
1627      console.info(`Succeeded in adding event, id -> ${data}`);
1628      id1 = data;
1629    }).catch((err: BusinessError) => {
1630      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1631    });
1632    await calendar.addEvent(event2).then((data: number) => {
1633      console.info(`Succeeded in adding event, id -> ${data}`);
1634      id2 = data;
1635    }).catch((err: BusinessError) => {
1636      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1637    });
1638    const filter = calendarManager.EventFilter.filterById([id1, id2]);
1639    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1640      console.info(`Succeeded in getting events filter by id, data -> ${JSON.stringify(data)}`);
1641    }).catch((err: BusinessError) => {
1642      console.error(`Failed to filter by id. Code: ${err.code}, message: ${err.message}`);
1643    });
1644  }
1645});
1646```
1647
1648### filterByTime
1649
1650static filterByTime(start: number, end: number): EventFilter
1651
1652Defines an event time based filter.
1653
1654**System capability**: SystemCapability.Applications.CalendarData
1655
1656**Parameters**
1657
1658| Name| Type  | Mandatory| Description      |
1659| ------ | ------ | ---- | ---------- |
1660| start  | number | Yes  | Start time.|
1661| end    | number | Yes  | End time.|
1662
1663**Return value**
1664
1665| Type                       | Description                |
1666| --------------------------- | -------------------- |
1667| [EventFilter](#eventfilter) | **EventFilter** object.|
1668
1669**Example**
1670
1671```typescript
1672import { BusinessError } from '@kit.BasicServicesKit';
1673import { calendarMgr } from '../entryability/EntryAbility';
1674
1675let calendar : calendarManager.Calendar | undefined = undefined;
1676const event1: calendarManager.Event = {
1677  type: calendarManager.EventType.NORMAL,
1678  startTime: 1686931200000,
1679  endTime: 1687017600000
1680};
1681const event2: calendarManager.Event = {
1682  type: calendarManager.EventType.IMPORTANT,
1683  startTime: 1686931200000,
1684  endTime: 1687017600000
1685};
1686calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1687  if (err) {
1688    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1689  } else {
1690    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1691    calendar = data;
1692    await calendar.addEvent(event1).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    await calendar.addEvent(event2).then((data: number) => {
1698      console.info(`Succeeded in adding event, id -> ${data}`);
1699    }).catch((err: BusinessError) => {
1700      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1701    });
1702    const filter = calendarManager.EventFilter.filterByTime(1686931200000, 1687017600000);
1703    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1704      console.info(`Succeeded in getting events filter by time, data -> ${JSON.stringify(data)}`);
1705    }).catch((err: BusinessError) => {
1706      console.error(`Failed to filter by time. Code: ${err.code}, message: ${err.message}`);
1707    });
1708  }
1709});
1710```
1711
1712### filterByTitle
1713
1714static filterByTitle(title: string): EventFilter
1715
1716Filters events by event title. This API supports fuzzy match.
1717
1718**System capability**: SystemCapability.Applications.CalendarData
1719
1720**Parameters**
1721
1722| Name| Type  | Mandatory| Description      |
1723| ------ | ------ | ---- | ---------- |
1724| title  | string | Yes  | Event title.|
1725
1726**Return value**
1727
1728| Type                       | Description                |
1729| --------------------------- | -------------------- |
1730| [EventFilter](#eventfilter) | **EventFilter** object.|
1731
1732**Example**
1733
1734```typescript
1735import { BusinessError } from '@kit.BasicServicesKit';
1736import { calendarMgr } from '../entryability/EntryAbility';
1737
1738let calendar : calendarManager.Calendar | undefined = undefined;
1739const event: calendarManager.Event = {
1740  title: 'MyEvent',
1741  type: calendarManager.EventType.NORMAL,
1742  startTime: 1686931200000,
1743  endTime: 1687017600000
1744};
1745calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => {
1746  if (err) {
1747    console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`);
1748  } else {
1749    console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`);
1750    calendar = data;
1751    await calendar.addEvent(event).then((data: number) => {
1752      console.info(`Succeeded in adding event, id -> ${data}`);
1753    }).catch((err: BusinessError) => {
1754      console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`);
1755    });
1756    const filter = calendarManager.EventFilter.filterByTitle('MyEvent');
1757    calendar.getEvents(filter).then((data: calendarManager.Event[]) => {
1758      console.info(`Succeeded in getting events filter by title, data -> ${JSON.stringify(data)}`);
1759    }).catch((err: BusinessError) => {
1760      console.error(`Failed to filter by title. Code: ${err.code}, message: ${err.message}`);
1761    });
1762  }
1763});
1764```
1765
1766## EventType
1767
1768Enumerates event types.
1769
1770**Atomic service API**: This API can be used in atomic services since API version 11.
1771
1772**System capability**: SystemCapability.Applications.CalendarData
1773
1774| Name     | Value  | Description                     |
1775| --------- | ---- |-------------------------|
1776| NORMAL    | 0    | Normal event, such as conference or an alarm clock.  |
1777| IMPORTANT | 1    | Important event, such as wedding anniversary, are not recommended for third-party developers. Important events do not support one-click service redirection and custom reminder time.|
1778
1779## RecurrenceRule
1780
1781Describes the recurrence rule of an event.
1782
1783**System capability**: SystemCapability.Applications.CalendarData
1784
1785| Name               | Type                                       | Read Only| Optional| Description                                                                                                                                                                                                                                                                                                                             |
1786| ------------------- | ------------------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1787| 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.                                                                                                                                                                                                                                                                |
1788| 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.                                                                                                                                                                                                                                                       |
1789| count<sup>12+</sup>               | number                                      | No  | Yes | Number of the recurrent event. The value is a non-negative integer. If this parameter is not set, the default value **0** is used, indicating that the number of recurrent events is infinite; if the value is negative, the effect is the same as that of **0**. If both **count** and **expire** exist, **count** is used.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                    |
1790| interval<sup>12+</sup>            | number                                      | No  | Yes | Interval for a recurrent event. The value is a non-negative integer. If this parameter is not set, the default value **0** is used, indicating that the event is repeated based on the recurrence rule without intervals; if the value is negative, the effect is the same as that of **0**. If both **interval** and **expire** exist, **expire** is used.<br>This attribute is related to the **recurrenceFrequency** rule. The recurrence interval varies according to the recurrence rule. For example, if the **interval** value is **2**, the following situations occur:<br>Daily recurrence: The event repeats every two days.<br>Weekly recurrence: The event repeats every two weeks.<br>Monthly recurrence: The event repeats every two months.<br>Yearly recurrence: The event repeats every two years.<br>**Atomic service API**: This API can be used in atomic services since API version 12.|
1791| excludedDates<sup>12+</sup>       | number[]                                    | No  | Yes | Excluded date of a recurrent event. The value is in the timestamp format. If this parameter is not set, the default value is empty, indicating that no date is excluded; if the value is **0** or a negative number, the effect is the same as that of the empty value.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                                                |
1792| daysOfWeek<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats by day of a week. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 7, corresponding to Monday to Sunday. Other values are invalid and have the same effect as the empty value.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                                        |
1793| daysOfMonth<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats by day of a month. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 31, corresponding to the first to the last days of each month. Other values are invalid and have the same effect as the empty value. If this month only has 30 days, the value **31** is invalid.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                 |
1794| daysOfYear<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats by day of a year. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 366, corresponding to the first to the last days of each year. Other values are invalid and have the same effect as the empty value. If this year only has 365 days, the value **366** is invalid.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                           |
1795| weeksOfMonth<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats by week of a month. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 5, corresponding to the first to the last weeks of each month. Other values are invalid and have the same effect as the empty value. If this month only has four weeks, the value **5** is invalid.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                 |
1796| weeksOfYear<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats by week of a year. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 53, corresponding to the first to the last weeks of each year. Other values are invalid and have the same effect as the empty value.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                               |
1797| monthsOfYear<sup>12+</sup>       | number[]                                    | No  | Yes | Repeats by month of a year. If this parameter is not set, the default value is empty, indicating that there is no recurrence rule. The value ranges from 1 to 12, corresponding to the first to the last months of each year. Other values are invalid and have the same effect as the empty value.<br>**Atomic service API**: This API can be used in atomic services since API version 12.                                                                                                                                                                                               |
1798## RecurrenceFrequency
1799
1800Enumerates the types of the event recurrence rule.
1801
1802**Atomic service API**: This API can be used in atomic services since API version 11.
1803
1804**System capability**: SystemCapability.Applications.CalendarData
1805
1806| Name   | Value  | Description      |
1807| ------- | ---- | ---------- |
1808| YEARLY  | 0    | Yearly.|
1809| MONTHLY | 1    | Monthly.|
1810| WEEKLY  | 2    | Weekly.|
1811| DAILY   | 3    | Daily.|
1812
1813## Attendee
1814
1815Describes the attendee information of a conference event.
1816
1817**System capability**: SystemCapability.Applications.CalendarData
1818
1819| Name | Type  | Read Only| Optional| Description                                                                |
1820| ----- | ------ | ---- |----|--------------------------------------------------------------------|
1821| name  | string | No  | No | Name of the attendee.<br>**Atomic service API**: This API can be used in atomic services since API version 11. |
1822| 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.|
1823| role<sup>12+</sup>  | [AttendeeRole](#attendeerole12) | No  | Yes | Role of the attendee.<br>**Atomic service API**: This API can be used in atomic services since API version 12. |
1824
1825## EventService
1826
1827Describes the event service.
1828
1829**Atomic service API**: This API can be used in atomic services since API version 11.
1830
1831**System capability**: SystemCapability.Applications.CalendarData
1832
1833| Name       | Type                       | Read Only| Optional| Description                                 |
1834| ----------- | --------------------------- | ---- |----|-------------------------------------|
1835| type        | [ServiceType](#servicetype) | No  | No | Service type.                              |
1836| uri         | string                      | No  | No | Service URI, in the DeepLink format. It can be used to redirect the user to a page of another application.|
1837| description | string                      | No  | Yes | Description of the service. If this parameter is not set, an empty string is used.                |
1838
1839## ServiceType
1840
1841Enumerates the event service types.
1842
1843**Atomic service API**: This API can be used in atomic services since API version 11.
1844
1845**System capability**: SystemCapability.Applications.CalendarData
1846
1847| Name           | Value              | Description        |
1848| --------------- | ---------------- | ------------ |
1849| MEETING         | 'Meeting'        | Join a meeting.  |
1850| WATCHING        | 'Watching'       | Watch a video.  |
1851| REPAYMENT       | 'Repayment'      | Make a payment.  |
1852| LIVE            | 'Live'           | Watch live TV.  |
1853| SHOPPING        | 'Shopping'       | Go shopping.  |
1854| TRIP            | 'Trip'           | View the trip.  |
1855| CLASS           | 'Class'          | Join class.  |
1856| SPORTS_EVENTS   | 'SportsEvents'   | Watch a sports event.|
1857| SPORTS_EXERCISE | 'SportsExercise' | Start exercising.  |
1858
1859## AttendeeRole<sup>12+</sup>
1860
1861Enumerates the attendee role types in the conference event.
1862
1863**Atomic service API**: This API can be used in atomic services since API version 12.
1864
1865**System capability**: SystemCapability.Applications.CalendarData
1866
1867| Name          | Value            | Description    |
1868|--------------|---------------|--------|
1869| ORGANIZER<sup>12+</sup>    | 'organizer'   | Conference organizer.|
1870| PARTICIPANT<sup>12+</sup>  | 'participant' | Conference participant.|
1871