@epilot/sdk 2.18.13 → 2.18.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/definitions/calendar.json +25 -25
  2. package/definitions/validation-rules-runtime.json +1 -1
  3. package/definitions/validation-rules.json +840 -37
  4. package/dist/apis/access-token.cjs +6 -6
  5. package/dist/apis/access-token.js +1 -1
  6. package/dist/apis/address-suggestions.cjs +6 -6
  7. package/dist/apis/address-suggestions.js +1 -1
  8. package/dist/apis/address.cjs +6 -6
  9. package/dist/apis/address.js +1 -1
  10. package/dist/apis/ai-agents.cjs +6 -6
  11. package/dist/apis/ai-agents.js +1 -1
  12. package/dist/apis/app.cjs +6 -6
  13. package/dist/apis/app.js +1 -1
  14. package/dist/apis/audit-logs.cjs +6 -6
  15. package/dist/apis/audit-logs.js +1 -1
  16. package/dist/apis/automation.cjs +6 -6
  17. package/dist/apis/automation.js +1 -1
  18. package/dist/apis/billing.cjs +6 -6
  19. package/dist/apis/billing.js +1 -1
  20. package/dist/apis/blueprint-manifest.cjs +6 -6
  21. package/dist/apis/blueprint-manifest.js +1 -1
  22. package/dist/apis/calendar.cjs +6 -6
  23. package/dist/apis/calendar.d.cts +2 -2
  24. package/dist/apis/calendar.d.ts +2 -2
  25. package/dist/apis/calendar.js +1 -1
  26. package/dist/apis/configuration-hub.cjs +6 -6
  27. package/dist/apis/configuration-hub.js +1 -1
  28. package/dist/apis/consent.cjs +6 -6
  29. package/dist/apis/consent.js +1 -1
  30. package/dist/apis/customer-portal.cjs +6 -6
  31. package/dist/apis/customer-portal.js +1 -1
  32. package/dist/apis/dashboard.cjs +6 -6
  33. package/dist/apis/dashboard.js +1 -1
  34. package/dist/apis/data-governance.cjs +6 -6
  35. package/dist/apis/data-governance.js +1 -1
  36. package/dist/apis/deduplication.cjs +6 -6
  37. package/dist/apis/deduplication.js +1 -1
  38. package/dist/apis/design.cjs +6 -6
  39. package/dist/apis/design.js +1 -1
  40. package/dist/apis/document.cjs +6 -6
  41. package/dist/apis/document.js +1 -1
  42. package/dist/apis/email-settings.cjs +6 -6
  43. package/dist/apis/email-settings.js +1 -1
  44. package/dist/apis/email-template.cjs +6 -6
  45. package/dist/apis/email-template.js +1 -1
  46. package/dist/apis/entity-mapping.cjs +6 -6
  47. package/dist/apis/entity-mapping.js +1 -1
  48. package/dist/apis/entity.cjs +6 -6
  49. package/dist/apis/entity.js +1 -1
  50. package/dist/apis/environments.cjs +6 -6
  51. package/dist/apis/environments.js +1 -1
  52. package/dist/apis/event-catalog.cjs +6 -6
  53. package/dist/apis/event-catalog.js +1 -1
  54. package/dist/apis/file.cjs +6 -6
  55. package/dist/apis/file.js +1 -1
  56. package/dist/apis/iban.cjs +6 -6
  57. package/dist/apis/iban.js +1 -1
  58. package/dist/apis/integration-toolkit.cjs +6 -6
  59. package/dist/apis/integration-toolkit.js +1 -1
  60. package/dist/apis/journey.cjs +6 -6
  61. package/dist/apis/journey.js +1 -1
  62. package/dist/apis/kanban.cjs +6 -6
  63. package/dist/apis/kanban.js +1 -1
  64. package/dist/apis/message.cjs +6 -6
  65. package/dist/apis/message.js +1 -1
  66. package/dist/apis/metering.cjs +6 -6
  67. package/dist/apis/metering.js +1 -1
  68. package/dist/apis/notes.cjs +6 -6
  69. package/dist/apis/notes.js +1 -1
  70. package/dist/apis/notification.cjs +6 -6
  71. package/dist/apis/notification.js +1 -1
  72. package/dist/apis/organization.cjs +6 -6
  73. package/dist/apis/organization.js +1 -1
  74. package/dist/apis/partner-directory.cjs +6 -6
  75. package/dist/apis/partner-directory.js +1 -1
  76. package/dist/apis/permissions.cjs +6 -6
  77. package/dist/apis/permissions.js +1 -1
  78. package/dist/apis/pricing-tier.cjs +6 -6
  79. package/dist/apis/pricing-tier.js +1 -1
  80. package/dist/apis/pricing.cjs +6 -6
  81. package/dist/apis/pricing.js +1 -1
  82. package/dist/apis/purpose.cjs +6 -6
  83. package/dist/apis/purpose.js +1 -1
  84. package/dist/apis/query.cjs +6 -6
  85. package/dist/apis/query.js +1 -1
  86. package/dist/apis/sandbox.cjs +6 -6
  87. package/dist/apis/sandbox.js +1 -1
  88. package/dist/apis/sharing.cjs +6 -6
  89. package/dist/apis/sharing.js +1 -1
  90. package/dist/apis/snapshot.cjs +6 -6
  91. package/dist/apis/snapshot.js +1 -1
  92. package/dist/apis/submission.cjs +6 -6
  93. package/dist/apis/submission.js +1 -1
  94. package/dist/apis/target.cjs +6 -6
  95. package/dist/apis/target.js +1 -1
  96. package/dist/apis/targeting.cjs +6 -6
  97. package/dist/apis/targeting.js +1 -1
  98. package/dist/apis/template-variables.cjs +6 -6
  99. package/dist/apis/template-variables.js +1 -1
  100. package/dist/apis/user.cjs +6 -6
  101. package/dist/apis/user.js +1 -1
  102. package/dist/apis/validation-rules.cjs +8 -8
  103. package/dist/apis/validation-rules.d.cts +2 -2
  104. package/dist/apis/validation-rules.d.ts +2 -2
  105. package/dist/apis/validation-rules.js +2 -2
  106. package/dist/apis/webhooks.cjs +6 -6
  107. package/dist/apis/webhooks.js +1 -1
  108. package/dist/apis/workflow-definition.cjs +6 -6
  109. package/dist/apis/workflow-definition.js +1 -1
  110. package/dist/apis/workflow.cjs +6 -6
  111. package/dist/apis/workflow.js +1 -1
  112. package/dist/{calendar-GJ7UX6PX.cjs → calendar-EMNHW6ME.cjs} +1 -1
  113. package/dist/{calendar-W42TSLFV.js → calendar-PZFEAXYE.js} +1 -1
  114. package/dist/{calendar.d-Cinz1Vzo.d.cts → calendar.d-Cz8R-GJ5.d.cts} +22 -7
  115. package/dist/{calendar.d-Cinz1Vzo.d.ts → calendar.d-Cz8R-GJ5.d.ts} +22 -7
  116. package/dist/{chunk-O2ELDNPK.cjs → chunk-22LE7Q52.cjs} +3 -3
  117. package/dist/{chunk-2UWWI6AM.js → chunk-GSQI3C2W.js} +3 -3
  118. package/dist/chunk-HRSCAD3W.cjs +14 -0
  119. package/dist/chunk-PPX45U34.js +14 -0
  120. package/dist/index.cjs +10 -10
  121. package/dist/index.d.cts +2 -2
  122. package/dist/index.d.ts +2 -2
  123. package/dist/index.js +2 -2
  124. package/dist/validation-rules-CU5JJKDV.cjs +7 -0
  125. package/dist/validation-rules-M2JVIR7U.js +7 -0
  126. package/dist/{validation-rules-runtime-X7M3QE5I.cjs → validation-rules-runtime-DENVKYLF.cjs} +2 -2
  127. package/dist/{validation-rules-runtime-6MRCS5X2.js → validation-rules-runtime-VGLVHV36.js} +1 -1
  128. package/dist/{validation-rules.d-Db5c5zTf.d.cts → validation-rules.d-BBy6Cw2O.d.cts} +519 -46
  129. package/dist/{validation-rules.d-Db5c5zTf.d.ts → validation-rules.d-BBy6Cw2O.d.ts} +519 -46
  130. package/docs/calendar.md +16 -2
  131. package/docs/validation-rules.md +417 -31
  132. package/package.json +1 -1
  133. package/dist/chunk-7IKQIVUS.js +0 -14
  134. package/dist/chunk-JIUTCNTB.cjs +0 -14
  135. package/dist/validation-rules-P6F5P73P.js +0 -7
  136. package/dist/validation-rules-VDU3CIZV.cjs +0 -7
@@ -6,25 +6,25 @@ var _chunkPM25LLETcjs = require('../chunk-PM25LLET.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunkO2ELDNPKcjs = require('../chunk-O2ELDNPK.cjs');
9
+ var _chunk22LE7Q52cjs = require('../chunk-22LE7Q52.cjs');
10
10
  require('../chunk-NJK5F5TF.cjs');
11
11
 
12
12
  // src/apis/workflow.ts
13
13
  var loadDefinition = () => {
14
14
  const mod = _chunkPM25LLETcjs.require_workflow_runtime.call(void 0, );
15
- return _chunkO2ELDNPKcjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
15
+ return _chunk22LE7Q52cjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
16
16
  };
17
17
  var _instance = null;
18
18
  var resolve = () => {
19
19
  if (!_instance) {
20
20
  const def = loadDefinition();
21
- _instance = _chunkO2ELDNPKcjs.createApiClient.call(void 0, { definition: def, apiName: "workflow" });
21
+ _instance = _chunk22LE7Q52cjs.createApiClient.call(void 0, { definition: def, apiName: "workflow" });
22
22
  }
23
23
  return _instance;
24
24
  };
25
- var _handle = _chunkO2ELDNPKcjs.createApiHandle.call(void 0, {
25
+ var _handle = _chunk22LE7Q52cjs.createApiHandle.call(void 0, {
26
26
  resolveClient: resolve,
27
- createClient: () => _chunkO2ELDNPKcjs.createApiClient.call(void 0, { definition: loadDefinition(), apiName: "workflow" }),
27
+ createClient: () => _chunk22LE7Q52cjs.createApiClient.call(void 0, { definition: loadDefinition(), apiName: "workflow" }),
28
28
  apiName: "workflow"
29
29
  });
30
30
  var getClient = _handle.getClient;
@@ -35,4 +35,4 @@ var workflow = _handle;
35
35
 
36
36
 
37
37
 
38
- exports.authorize = _chunkO2ELDNPKcjs.authorize; exports.createClient = createClient; exports.getClient = getClient; exports.workflow = workflow;
38
+ exports.authorize = _chunk22LE7Q52cjs.authorize; exports.createClient = createClient; exports.getClient = getClient; exports.workflow = workflow;
@@ -6,7 +6,7 @@ import {
6
6
  createApiClient,
7
7
  createApiHandle,
8
8
  expand
9
- } from "../chunk-2UWWI6AM.js";
9
+ } from "../chunk-GSQI3C2W.js";
10
10
  import "../chunk-YPSWSI3M.js";
11
11
 
12
12
  // src/apis/workflow.ts
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-NJK5F5TF.cjs');
2
2
 
3
3
  // src/docs/calendar.json
4
- var calendar_default = '# Calendar API\n\n- **Base URL:** `https://calendar.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/calendar](https://docs.epilot.io/api/calendar)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.calendar.listUsersAbsence(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/calendar\'\n\nconst calendarClient = getClient()\nauthorize(calendarClient, () => \'<token>\')\nconst { data } = await calendarClient.listUsersAbsence(...)\n```\n\n## Operations\n\n**Absence**\n- [`listUsersAbsence`](#listusersabsence)\n- [`searchAbsence`](#searchabsence)\n- [`searchNowAbsence`](#searchnowabsence)\n- [`listAbsenceAdjustments`](#listabsenceadjustments)\n- [`createAbsenceAdjustment`](#createabsenceadjustment)\n- [`getAbsenceAdjustment`](#getabsenceadjustment)\n- [`patchAbsenceAdjustment`](#patchabsenceadjustment)\n- [`deleteAbsenceAdjustment`](#deleteabsenceadjustment)\n- [`getUserAbsence`](#getuserabsence)\n\n**Working Hours**\n- [`getWorkingHours`](#getworkinghours)\n- [`putWorkingHours`](#putworkinghours)\n- [`deleteWorkingHours`](#deleteworkinghours)\n\n**Calendars**\n- [`listCalendars`](#listcalendars)\n- [`createCalendar`](#createcalendar)\n- [`addOutlookCalendar`](#addoutlookcalendar)\n- [`listOutlookCalendars`](#listoutlookcalendars)\n- [`deleteOutlookCalendar`](#deleteoutlookcalendar)\n- [`outlookWebhook`](#outlookwebhook)\n- [`getCalendar`](#getcalendar)\n- [`updateCalendar`](#updatecalendar)\n- [`deleteCalendar`](#deletecalendar)\n\n**Calendar Events**\n- [`listEvents`](#listevents)\n- [`createEvent`](#createevent)\n- [`getEvent`](#getevent)\n- [`updateEvent`](#updateevent)\n- [`deleteEvent`](#deleteevent)\n- [`shareEvent`](#shareevent)\n- [`unshareEvent`](#unshareevent)\n\n**Schemas**\n- [`AbsenceInterval`](#absenceinterval)\n- [`AbsenceIntervalSource`](#absenceintervalsource)\n- [`Error`](#error)\n- [`SearchAbsenceBody`](#searchabsencebody)\n- [`SearchNowAbsenceBody`](#searchnowabsencebody)\n- [`AbsenceAdjustment`](#absenceadjustment)\n- [`AbsenceStatus`](#absencestatus)\n- [`AbsenceType`](#absencetype)\n- [`CreateAbsenceAdjustmentBody`](#createabsenceadjustmentbody)\n- [`PatchAbsenceAdjustmentBody`](#patchabsenceadjustmentbody)\n- [`ExternalCalendar`](#externalcalendar)\n- [`WorkingHours`](#workinghours)\n- [`UpsertWorkingHoursBody`](#upsertworkinghoursbody)\n- [`TimeWindow`](#timewindow)\n- [`Calendar`](#calendar)\n- [`CalendarSource`](#calendarsource)\n- [`Provider`](#provider)\n- [`CalendarCreateBody`](#calendarcreatebody)\n- [`AddOutlookCalendarRequest`](#addoutlookcalendarrequest)\n- [`AvailableOutlookCalendar`](#availableoutlookcalendar)\n- [`CalendarPatchBody`](#calendarpatchbody)\n- [`CalendarEvent`](#calendarevent)\n- [`EventType`](#eventtype)\n- [`EventStatus`](#eventstatus)\n- [`Sensitivity`](#sensitivity)\n- [`Importance`](#importance)\n- [`ResponseStatus`](#responsestatus)\n- [`Attendee`](#attendee)\n- [`EventSource`](#eventsource)\n- [`CalendarEventCreateBody`](#calendareventcreatebody)\n- [`CalendarEventPatchBody`](#calendareventpatchbody)\n- [`ShareEventBody`](#shareeventbody)\n\n### `listUsersAbsence`\n\nList organization users with known absence metadata in the requested time window.\n\n`GET /v1/calendar/absence/users`\n\n```ts\nconst { data } = await client.listUsersAbsence({\n from: \'example\',\n to: \'example\',\n include_busy: true,\n working_hours_granularity: \'example\',\n query: \'example\',\n limit: 1,\n offset: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "hits": 0,\n "results": [\n {\n "absent": true,\n "absence_intervals": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "original_from": "1970-01-01T00:00:00.000Z",\n "original_to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "source": "calendar_event",\n "calendar_event_id": "string",\n "absence_adjustment_id": "string",\n "reason": "string"\n }\n ],\n "user_id": "string",\n "display_name": "string",\n "email": "user@example.com",\n "status": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `searchAbsence`\n\nSearch known absence for candidate users in the requested time window.\n\n`POST /v1/calendar/absence:search`\n\n```ts\nconst { data } = await client.searchAbsence(\n null,\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n user_ids: [\'string\'],\n include_busy: false,\n working_hours_granularity: \'time\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "users": {}\n}\n```\n\n</details>\n\n---\n\n### `searchNowAbsence`\n\nSearch known absence for candidate users at the current server time.\n\n`POST /v1/calendar/absence:search-now`\n\n```ts\nconst { data } = await client.searchNowAbsence(\n null,\n {\n user_ids: [\'string\'],\n include_busy: false,\n working_hours_granularity: \'time\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "users": {}\n}\n```\n\n</details>\n\n---\n\n### `listAbsenceAdjustments`\n\nList absence adjustments for a user in a time window.\n\n`GET /v1/calendar/absence/users/{user_id}/adjustments`\n\n```ts\nconst { data } = await client.listAbsenceAdjustments({\n user_id: \'example\',\n from: \'example\',\n to: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "results": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createAbsenceAdjustment`\n\nCreate a time-bound absence adjustment for a user in the caller organization.\n\n`POST /v1/calendar/absence/users/{user_id}/adjustments`\n\n```ts\nconst { data } = await client.createAbsenceAdjustment(\n {\n user_id: \'example\',\n },\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n absent: true,\n status: \'oof\',\n type: \'string\',\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `getAbsenceAdjustment`\n\nGet an absence adjustment by ID.\n\n`GET /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.getAbsenceAdjustment({\n user_id: \'example\',\n adjustment_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `patchAbsenceAdjustment`\n\nUpdate an absence adjustment in the caller organization.\n\n`PATCH /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.patchAbsenceAdjustment(\n {\n user_id: \'example\',\n adjustment_id: \'example\',\n },\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n absent: true,\n status: \'oof\',\n type: \'string\',\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteAbsenceAdjustment`\n\nDelete an absence adjustment.\n\n`DELETE /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.deleteAbsenceAdjustment({\n user_id: \'example\',\n adjustment_id: \'example\',\n})\n```\n\n---\n\n### `getUserAbsence`\n\nGet known absence for a user in a time window. absent=false means no known absence, not guaranteed availability.\n\n`GET /v1/calendar/absence/users/{user_id}`\n\n```ts\nconst { data } = await client.getUserAbsence({\n user_id: \'example\',\n from: \'example\',\n to: \'example\',\n include_busy: true,\n working_hours_granularity: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "absent": true,\n "absence_intervals": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "original_from": "1970-01-01T00:00:00.000Z",\n "original_to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "source": "calendar_event",\n "calendar_event_id": "string",\n "absence_adjustment_id": "string",\n "reason": "string"\n }\n ],\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "user_id": "string",\n "external_calendars": [\n {\n "provider": "outlook",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getWorkingHours`\n\nGet the recurring weekly working hours of a user. 404 means no record exists and the user is treated as always available.\n\n`GET /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.getWorkingHours({\n user_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "monday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "tuesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "wednesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "thursday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "friday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "saturday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "sunday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "timezone": "string",\n "user_id": "string",\n "updated_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `putWorkingHours`\n\nCreate or fully replace the working hours of a user in the caller organization. This is a full replace, not a merge.\n\n`PUT /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.putWorkingHours(\n {\n user_id: \'example\',\n },\n {\n monday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n tuesday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n wednesday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n thursday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n friday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n saturday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n sunday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n timezone: \'Europe/Berlin\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "monday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "tuesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "wednesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "thursday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "friday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "saturday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "sunday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "timezone": "string",\n "user_id": "string",\n "updated_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteWorkingHours`\n\nDelete the working hours of a user. The user is then treated as always available again.\n\n`DELETE /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.deleteWorkingHours({\n user_id: \'example\',\n})\n```\n\n---\n\n### `listCalendars`\n\nList calendars visible to the caller.\n\n`GET /v1/calendar`\n\n```ts\nconst { data } = await client.listCalendars({\n size: 1,\n cursor: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `createCalendar`\n\nCreate a native epilot calendar.\n\n`POST /v1/calendar`\n\n```ts\nconst { data } = await client.createCalendar(\n null,\n {\n name: \'string\',\n description: \'string\',\n color: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `addOutlookCalendar`\n\nRegisters one of the caller\'s Outlook calendars as an epilot calendar.\n\n`POST /v1/calendar/sources/outlook`\n\n```ts\nconst { data } = await client.addOutlookCalendar(\n null,\n {\n provider_calendar_id: \'string\',\n name: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `listOutlookCalendars`\n\nLists the calling user\'s Outlook calendars available to import as epilot calendars.\n\n`GET /v1/calendar/sources/outlook/available`\n\n```ts\nconst { data } = await client.listOutlookCalendars()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "calendars": [\n {\n "provider_calendar_id": "string",\n "name": "string",\n "color": "string",\n "is_default": true,\n "can_edit": true,\n "owner": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `deleteOutlookCalendar`\n\nDisconnects a previously registered Outlook calendar.\n\n`DELETE /v1/calendar/sources/outlook/{calendar_id}`\n\n```ts\nconst { data } = await client.deleteOutlookCalendar({\n calendar_id: \'example\',\n})\n```\n\n---\n\n### `outlookWebhook`\n\nPublic Microsoft Graph webhook receiver for per-user Outlook calendar\nsubscriptions. Unauthenticated by design (API Gateway `Authorizer: NONE`):\nGraph calls it with no epilot token.\n\n`POST /v1/calendar/outlook/webhook`\n\n```ts\nconst { data } = await client.outlookWebhook({\n validationToken: \'example\',\n})\n```\n\n---\n\n### `getCalendar`\n\nGet a single calendar by its epilot ID.\n\n`GET /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.getCalendar({\n calendar_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateCalendar`\n\nUpdate fields on a calendar.\n\n`PATCH /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.updateCalendar(\n {\n calendar_id: \'example\',\n },\n {\n name: \'string\',\n description: \'string\',\n color: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteCalendar`\n\nDelete a native epilot calendar and its events.\n\n`DELETE /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.deleteCalendar({\n calendar_id: \'example\',\n})\n```\n\n---\n\n### `listEvents`\n\nList events in a time window. Recurring events are returned as expanded occurrences \u2013 each instance appears as its own event.\n\n`GET /v1/calendar/events`\n\n```ts\nconst { data } = await client.listEvents({\n from: \'example\',\n to: \'example\',\n calendar_id: \'example\',\n size: 1,\n cursor: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `createEvent`\n\nCreate a native epilot calendar event.\n\n`POST /v1/calendar/events`\n\n```ts\nconst { data } = await client.createEvent(\n null,\n {\n calendar_id: \'string\',\n description: \'string\',\n start_time: \'1970-01-01T00:00:00.000Z\',\n end_time: \'1970-01-01T00:00:00.000Z\',\n timezone: \'string\',\n is_all_day: true,\n location: \'string\',\n status: \'free\',\n sensitivity: \'normal\',\n _title: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `getEvent`\n\nGet a single event by its epilot ID.\n\n`GET /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.getEvent({\n event_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateEvent`\n\nUpdate a native epilot calendar event.\n\n`PATCH /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.updateEvent(\n {\n event_id: \'example\',\n },\n {\n description: \'string\',\n start_time: \'1970-01-01T00:00:00.000Z\',\n end_time: \'1970-01-01T00:00:00.000Z\',\n timezone: \'string\',\n is_all_day: true,\n location: \'string\',\n status: \'free\',\n sensitivity: \'normal\',\n _title: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteEvent`\n\nDelete a native epilot calendar event.\n\n`DELETE /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.deleteEvent({\n event_id: \'example\',\n})\n```\n\n---\n\n### `shareEvent`\n\nShare a calendar event with another user of the same organization, view-only. Owner-only: recipients of a share cannot re-share. Sharing an already-shared event is a no-op.\n\n`POST /v1/calendar/events/{event_id}/share`\n\n```ts\nconst { data } = await client.shareEvent(\n {\n event_id: \'example\',\n },\n {\n user_id: \'string\'\n },\n)\n```\n\n---\n\n### `unshareEvent`\n\nRevoke a per-event share. The recipient loses access immediately. Owner-only.\n\n`DELETE /v1/calendar/events/{event_id}/share/{user_id}`\n\n```ts\nconst { data } = await client.unshareEvent({\n event_id: \'example\',\n user_id: \'example\',\n})\n```\n\n---\n\n## Schemas\n\n### `AbsenceInterval`\n\n```ts\ntype AbsenceInterval = {\n from: string // date-time\n to: string // date-time\n original_from: string // date-time\n original_to: string // date-time\n absent: boolean\n source: "calendar_event" | "absence_adjustment" | "working_hours"\n calendar_event_id?: string\n absence_adjustment_id?: string\n reason?: string\n}\n```\n\n### `AbsenceIntervalSource`\n\n```ts\ntype AbsenceIntervalSource = "calendar_event" | "absence_adjustment" | "working_hours"\n```\n\n### `Error`\n\n```ts\ntype Error = {\n status: number\n error: string | unknown[]\n}\n```\n\n### `SearchAbsenceBody`\n\n```ts\ntype SearchAbsenceBody = {\n from: string // date-time\n to: string // date-time\n user_ids: string[]\n include_busy?: boolean\n working_hours_granularity?: "time" | "day"\n}\n```\n\n### `SearchNowAbsenceBody`\n\n```ts\ntype SearchNowAbsenceBody = {\n user_ids: string[]\n include_busy?: boolean\n working_hours_granularity?: "time" | "day"\n}\n```\n\n### `AbsenceAdjustment`\n\n```ts\ntype AbsenceAdjustment = {\n from: string // date-time\n to: string // date-time\n absent: boolean\n status: "oof" | "busy"\n type?: string\n reason?: string\n adjustment_id: string\n user_id: string\n created_by: string\n created_at: string // date-time\n updated_at: string // date-time\n}\n```\n\n### `AbsenceStatus`\n\nCalendar status targeted by the absence adjustment.\n\n```ts\ntype AbsenceStatus = "oof" | "busy"\n```\n\n### `AbsenceType`\n\nOptional producer-defined reference stored with an absence adjustment.\n\n```ts\ntype AbsenceType = string\n```\n\n### `CreateAbsenceAdjustmentBody`\n\n```ts\ntype CreateAbsenceAdjustmentBody = {\n from: string // date-time\n to: string // date-time\n absent: boolean\n status: "oof" | "busy"\n type?: string\n reason?: string\n}\n```\n\n### `PatchAbsenceAdjustmentBody`\n\n```ts\ntype PatchAbsenceAdjustmentBody = {\n from?: string // date-time\n to?: string // date-time\n absent?: boolean\n status?: "oof" | "busy"\n type?: string\n reason?: string\n}\n```\n\n### `ExternalCalendar`\n\n```ts\ntype ExternalCalendar = {\n provider: "outlook" | "google"\n last_synced_at: string // date-time\n}\n```\n\n### `WorkingHours`\n\nRecurring weekly working hours of a user. The absence of a record means the user is treated as always available.\n\n```ts\ntype WorkingHours = {\n monday: Array<{\n start: string\n end: string\n }>\n tuesday: Array<{\n start: string\n end: string\n }>\n wednesday: Array<{\n start: string\n end: string\n }>\n thursday: Array<{\n start: string\n end: string\n }>\n friday: Array<{\n start: string\n end: string\n }>\n saturday: Array<{\n start: string\n end: string\n }>\n sunday: Array<{\n start: string\n end: string\n }>\n timezone: string\n user_id: string\n updated_by: string\n created_at: string // date-time\n updated_at: string // date-time\n}\n```\n\n### `UpsertWorkingHoursBody`\n\nFull replacement of the working-hours record. All weekdays are required; an empty array means a day off. Users without a working-hours record are treated as always available.\n\n```ts\ntype UpsertWorkingHoursBody = {\n monday: Array<{\n start: string\n end: string\n }>\n tuesday: Array<{\n start: string\n end: string\n }>\n wednesday: Array<{\n start: string\n end: string\n }>\n thursday: Array<{\n start: string\n end: string\n }>\n friday: Array<{\n start: string\n end: string\n }>\n saturday: Array<{\n start: string\n end: string\n }>\n sunday: Array<{\n start: string\n end: string\n }>\n timezone?: string\n}\n```\n\n### `TimeWindow`\n\nA wall-clock working window within a single day.\n\n```ts\ntype TimeWindow = {\n start: string\n end: string\n}\n```\n\n### `Calendar`\n\n```ts\ntype Calendar = {\n _id: string\n _schema: "calendar"\n _org: string\n _title?: string\n name: string\n description?: string\n color?: string\n is_default: boolean\n read_only: boolean\n owner_email?: string // email\n source: {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_calendar_id?: string\n last_synced_at?: string // date-time\n }\n _created_at?: string // date-time\n _updated_at?: string // date-time\n}\n```\n\n### `CalendarSource`\n\n```ts\ntype CalendarSource = {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_calendar_id?: string\n last_synced_at?: string // date-time\n}\n```\n\n### `Provider`\n\nNull for native epilot calendars\n\n```ts\ntype Provider = "outlook" | "google" | null\n```\n\n### `CalendarCreateBody`\n\n```ts\ntype CalendarCreateBody = {\n name: string\n description?: string\n color?: string\n}\n```\n\n### `AddOutlookCalendarRequest`\n\n```ts\ntype AddOutlookCalendarRequest = {\n provider_calendar_id: string\n name?: string\n}\n```\n\n### `AvailableOutlookCalendar`\n\n```ts\ntype AvailableOutlookCalendar = {\n provider_calendar_id: string\n name: string\n color?: string\n is_default?: boolean\n can_edit?: boolean\n owner?: string\n}\n```\n\n### `CalendarPatchBody`\n\n```ts\ntype CalendarPatchBody = {\n name?: string\n description?: string\n color?: string\n}\n```\n\n### `CalendarEvent`\n\n```ts\ntype CalendarEvent = {\n _id: string\n _schema: "calendar_event"\n _org: string\n _title?: string\n _tags?: string[]\n calendar_id: string\n event_type: "singleInstance" | "occurrence" | "exception" | "seriesMaster"\n description?: string\n start_time: string // date-time\n end_time: string // date-time\n timezone: string\n is_all_day: boolean\n location?: string\n status: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n busy: boolean\n is_cancelled: boolean\n sensitivity: "normal" | "personal" | "private" | "confidential"\n importance: "low" | "normal" | "high"\n is_online_meeting: boolean\n online_meeting_url?: string // uri\n web_link?: string // uri\n response_status: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n organizer_email?: string // email\n attendees?: Array<{\n email: string // email\n name?: string\n response: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n type: "required" | "optional" | "resource"\n }>\n is_recurring: boolean\n series_master_id?: string\n source: {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_event_id?: string\n provider_event_url?: string // uri\n last_synced_at?: string // date-time\n etag?: string\n }\n _created_at?: string // date-time\n _updated_at?: string // date-time\n}\n```\n\n### `EventType`\n\n```ts\ntype EventType = "singleInstance" | "occurrence" | "exception" | "seriesMaster"\n```\n\n### `EventStatus`\n\nFree/busy state derived from provider `showAs`\n\n```ts\ntype EventStatus = "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n```\n\n### `Sensitivity`\n\n```ts\ntype Sensitivity = "normal" | "personal" | "private" | "confidential"\n```\n\n### `Importance`\n\n```ts\ntype Importance = "low" | "normal" | "high"\n```\n\n### `ResponseStatus`\n\nCaller\'s response to the invite\n\n```ts\ntype ResponseStatus = "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n```\n\n### `Attendee`\n\n```ts\ntype Attendee = {\n email: string // email\n name?: string\n response: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n type: "required" | "optional" | "resource"\n}\n```\n\n### `EventSource`\n\n```ts\ntype EventSource = {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_event_id?: string\n provider_event_url?: string // uri\n last_synced_at?: string // date-time\n etag?: string\n}\n```\n\n### `CalendarEventCreateBody`\n\n```ts\ntype CalendarEventCreateBody = {\n calendar_id: string\n description?: string\n start_time: string // date-time\n end_time: string // date-time\n timezone: string\n is_all_day: boolean\n location?: string\n status: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n sensitivity: "normal" | "personal" | "private" | "confidential"\n _title: string\n}\n```\n\n### `CalendarEventPatchBody`\n\n```ts\ntype CalendarEventPatchBody = {\n description?: string\n start_time?: string // date-time\n end_time?: string // date-time\n timezone?: string\n is_all_day?: boolean\n location?: string\n status?: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n sensitivity?: "normal" | "personal" | "private" | "confidential"\n _title?: string\n}\n```\n\n### `ShareEventBody`\n\n```ts\ntype ShareEventBody = {\n user_id: string\n}\n```\n';
4
+ var calendar_default = '# Calendar API\n\n- **Base URL:** `https://calendar.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/calendar](https://docs.epilot.io/api/calendar)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.calendar.listUsersAbsence(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/calendar\'\n\nconst calendarClient = getClient()\nauthorize(calendarClient, () => \'<token>\')\nconst { data } = await calendarClient.listUsersAbsence(...)\n```\n\n## Operations\n\n**Absence**\n- [`listUsersAbsence`](#listusersabsence)\n- [`searchAbsence`](#searchabsence)\n- [`searchNowAbsence`](#searchnowabsence)\n- [`listAbsenceAdjustments`](#listabsenceadjustments)\n- [`createAbsenceAdjustment`](#createabsenceadjustment)\n- [`getAbsenceAdjustment`](#getabsenceadjustment)\n- [`patchAbsenceAdjustment`](#patchabsenceadjustment)\n- [`deleteAbsenceAdjustment`](#deleteabsenceadjustment)\n- [`getUserAbsence`](#getuserabsence)\n\n**Working Hours**\n- [`getWorkingHours`](#getworkinghours)\n- [`putWorkingHours`](#putworkinghours)\n- [`deleteWorkingHours`](#deleteworkinghours)\n\n**Calendars**\n- [`listCalendars`](#listcalendars)\n- [`createCalendar`](#createcalendar)\n- [`addOutlookCalendar`](#addoutlookcalendar)\n- [`listOutlookCalendars`](#listoutlookcalendars)\n- [`deleteOutlookCalendar`](#deleteoutlookcalendar)\n- [`outlookWebhook`](#outlookwebhook)\n- [`getCalendar`](#getcalendar)\n- [`updateCalendar`](#updatecalendar)\n- [`deleteCalendar`](#deletecalendar)\n\n**Calendar Events**\n- [`listEvents`](#listevents)\n- [`createEvent`](#createevent)\n- [`getEvent`](#getevent)\n- [`updateEvent`](#updateevent)\n- [`deleteEvent`](#deleteevent)\n- [`shareEvent`](#shareevent)\n- [`unshareEvent`](#unshareevent)\n\n**Schemas**\n- [`AbsenceInterval`](#absenceinterval)\n- [`AbsenceIntervalSource`](#absenceintervalsource)\n- [`Error`](#error)\n- [`SearchAbsenceBody`](#searchabsencebody)\n- [`SearchNowAbsenceBody`](#searchnowabsencebody)\n- [`AbsenceAdjustment`](#absenceadjustment)\n- [`AbsenceStatus`](#absencestatus)\n- [`AbsenceType`](#absencetype)\n- [`CreateAbsenceAdjustmentBody`](#createabsenceadjustmentbody)\n- [`PatchAbsenceAdjustmentBody`](#patchabsenceadjustmentbody)\n- [`ExternalCalendar`](#externalcalendar)\n- [`WorkingHours`](#workinghours)\n- [`UpsertWorkingHoursBody`](#upsertworkinghoursbody)\n- [`TimeWindow`](#timewindow)\n- [`Calendar`](#calendar)\n- [`CalendarSource`](#calendarsource)\n- [`Provider`](#provider)\n- [`CalendarCreateBody`](#calendarcreatebody)\n- [`AddOutlookCalendarRequest`](#addoutlookcalendarrequest)\n- [`AvailableOutlookCalendar`](#availableoutlookcalendar)\n- [`CalendarPatchBody`](#calendarpatchbody)\n- [`CalendarEvent`](#calendarevent)\n- [`EventType`](#eventtype)\n- [`EventStatus`](#eventstatus)\n- [`Sensitivity`](#sensitivity)\n- [`Importance`](#importance)\n- [`ResponseStatus`](#responsestatus)\n- [`Attendee`](#attendee)\n- [`EventSource`](#eventsource)\n- [`CalendarEventCreateBody`](#calendareventcreatebody)\n- [`CalendarEventPatchBody`](#calendareventpatchbody)\n- [`ShareEventBody`](#shareeventbody)\n\n### `listUsersAbsence`\n\nList organization users with known absence metadata in the requested time window.\n\n`GET /v1/calendar/absence/users`\n\n```ts\nconst { data } = await client.listUsersAbsence({\n from: \'example\',\n to: \'example\',\n include_busy: true,\n working_hours_granularity: \'example\',\n query: \'example\',\n limit: 1,\n offset: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "hits": 0,\n "results": [\n {\n "absent": true,\n "absence_intervals": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "original_from": "1970-01-01T00:00:00.000Z",\n "original_to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "source": "calendar_event",\n "calendar_event_id": "string",\n "absence_adjustment_id": "string",\n "reason": "string"\n }\n ],\n "user_id": "string",\n "display_name": "string",\n "email": "user@example.com",\n "status": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `searchAbsence`\n\nSearch known absence for candidate users in the requested time window.\n\n`POST /v1/calendar/absence:search`\n\n```ts\nconst { data } = await client.searchAbsence(\n null,\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n user_ids: [\'string\'],\n include_busy: false,\n working_hours_granularity: \'time\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "users": {}\n}\n```\n\n</details>\n\n---\n\n### `searchNowAbsence`\n\nSearch known absence for candidate users at the current server time.\n\n`POST /v1/calendar/absence:search-now`\n\n```ts\nconst { data } = await client.searchNowAbsence(\n null,\n {\n user_ids: [\'string\'],\n include_busy: false,\n working_hours_granularity: \'time\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "users": {}\n}\n```\n\n</details>\n\n---\n\n### `listAbsenceAdjustments`\n\nList absence adjustments for a user in a time window.\n\n`GET /v1/calendar/absence/users/{user_id}/adjustments`\n\n```ts\nconst { data } = await client.listAbsenceAdjustments({\n user_id: \'example\',\n from: \'example\',\n to: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "results": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createAbsenceAdjustment`\n\nCreate a time-bound absence adjustment for a user in the caller organization.\n\n`POST /v1/calendar/absence/users/{user_id}/adjustments`\n\n```ts\nconst { data } = await client.createAbsenceAdjustment(\n {\n user_id: \'example\',\n },\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n absent: true,\n status: \'oof\',\n type: \'string\',\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `getAbsenceAdjustment`\n\nGet an absence adjustment by ID.\n\n`GET /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.getAbsenceAdjustment({\n user_id: \'example\',\n adjustment_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `patchAbsenceAdjustment`\n\nUpdate an absence adjustment in the caller organization.\n\n`PATCH /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.patchAbsenceAdjustment(\n {\n user_id: \'example\',\n adjustment_id: \'example\',\n },\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n absent: true,\n status: \'oof\',\n type: \'string\',\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteAbsenceAdjustment`\n\nDelete an absence adjustment.\n\n`DELETE /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.deleteAbsenceAdjustment({\n user_id: \'example\',\n adjustment_id: \'example\',\n})\n```\n\n---\n\n### `getUserAbsence`\n\nGet known absence for a user in a time window. absent=false means no known absence, not guaranteed availability.\n\n`GET /v1/calendar/absence/users/{user_id}`\n\n```ts\nconst { data } = await client.getUserAbsence({\n user_id: \'example\',\n from: \'example\',\n to: \'example\',\n include_busy: true,\n working_hours_granularity: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "absent": true,\n "absence_intervals": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "original_from": "1970-01-01T00:00:00.000Z",\n "original_to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "source": "calendar_event",\n "calendar_event_id": "string",\n "absence_adjustment_id": "string",\n "reason": "string"\n }\n ],\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "user_id": "string",\n "external_calendars": [\n {\n "provider": "outlook",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getWorkingHours`\n\nGet the recurring weekly working hours of a user. 404 means no record exists and the user is treated as always available.\n\n`GET /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.getWorkingHours({\n user_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "monday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "tuesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "wednesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "thursday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "friday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "saturday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "sunday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "timezone": "string",\n "user_id": "string",\n "updated_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `putWorkingHours`\n\nCreate or fully replace the working hours of a user in the caller organization. This is a full replace, not a merge.\n\n`PUT /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.putWorkingHours(\n {\n user_id: \'example\',\n },\n {\n monday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n tuesday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n wednesday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n thursday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n friday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n saturday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n sunday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n timezone: \'Europe/Berlin\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "monday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "tuesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "wednesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "thursday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "friday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "saturday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "sunday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "timezone": "string",\n "user_id": "string",\n "updated_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteWorkingHours`\n\nDelete the working hours of a user. The user is then treated as always available again.\n\n`DELETE /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.deleteWorkingHours({\n user_id: \'example\',\n})\n```\n\n---\n\n### `listCalendars`\n\nList calendars visible to the caller.\n\n`GET /v1/calendar`\n\n```ts\nconst { data } = await client.listCalendars({\n size: 1,\n cursor: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `createCalendar`\n\nCreate a native epilot calendar.\n\n`POST /v1/calendar`\n\n```ts\nconst { data } = await client.createCalendar(\n null,\n {\n name: \'string\',\n description: \'string\',\n color: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `addOutlookCalendar`\n\nRegisters one of the caller\'s Outlook calendars as an epilot calendar.\n\n`POST /v1/calendar/sources/outlook`\n\n```ts\nconst { data } = await client.addOutlookCalendar(\n null,\n {\n provider_calendar_id: \'string\',\n name: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `listOutlookCalendars`\n\nLists the calling user\'s Outlook calendars available to import as epilot calendars.\n\n`GET /v1/calendar/sources/outlook/available`\n\n```ts\nconst { data } = await client.listOutlookCalendars()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "calendars": [\n {\n "provider_calendar_id": "string",\n "name": "string",\n "color": "string",\n "is_default": true,\n "can_edit": true,\n "owner": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `deleteOutlookCalendar`\n\nDisconnects a previously registered Outlook calendar.\n\n`DELETE /v1/calendar/sources/outlook/{calendar_id}`\n\n```ts\nconst { data } = await client.deleteOutlookCalendar({\n calendar_id: \'example\',\n})\n```\n\n---\n\n### `outlookWebhook`\n\nPublic Microsoft Graph webhook receiver for per-user Outlook calendar\nsubscriptions. Unauthenticated by design (API Gateway `Authorizer: NONE`):\nGraph calls it with no epilot token.\n\n`POST /v1/calendar/outlook/webhook`\n\n```ts\nconst { data } = await client.outlookWebhook({\n validationToken: \'example\',\n})\n```\n\n---\n\n### `getCalendar`\n\nGet a single calendar by its epilot ID.\n\n`GET /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.getCalendar({\n calendar_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateCalendar`\n\nUpdate local calendar details. Changes to synced calendars do not modify the provider calendar.\n\n`PATCH /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.updateCalendar(\n {\n calendar_id: \'example\',\n },\n {\n name: \'string\',\n description: \'string\',\n color: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteCalendar`\n\nDelete a native epilot calendar or disconnect a synced calendar, including its locally stored events.\n\n`DELETE /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.deleteCalendar({\n calendar_id: \'example\',\n})\n```\n\n---\n\n### `listEvents`\n\nList events in a time window. Recurring events are returned as expanded occurrences \u2013 each instance appears as its own event.\n\n`GET /v1/calendar/events`\n\n```ts\nconst { data } = await client.listEvents({\n from: \'example\',\n to: \'example\',\n calendar_id: \'example\',\n size: 1,\n cursor: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "is_draft": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "metadata": {},\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `createEvent`\n\nCreate a native epilot calendar event.\n\n`POST /v1/calendar/events`\n\n```ts\nconst { data } = await client.createEvent(\n null,\n {\n calendar_id: \'string\',\n description: \'string\',\n start_time: \'1970-01-01T00:00:00.000Z\',\n end_time: \'1970-01-01T00:00:00.000Z\',\n timezone: \'string\',\n is_all_day: true,\n location: \'string\',\n status: \'free\',\n sensitivity: \'normal\',\n metadata: {},\n _title: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "is_draft": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "metadata": {},\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `getEvent`\n\nGet a single event by its epilot ID.\n\n`GET /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.getEvent({\n event_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "is_draft": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "metadata": {},\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateEvent`\n\nUpdate a native epilot calendar event.\n\n`PATCH /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.updateEvent(\n {\n event_id: \'example\',\n },\n {\n description: \'string\',\n start_time: \'1970-01-01T00:00:00.000Z\',\n end_time: \'1970-01-01T00:00:00.000Z\',\n timezone: \'string\',\n is_all_day: true,\n location: \'string\',\n status: \'free\',\n is_cancelled: true,\n sensitivity: \'normal\',\n _title: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "is_draft": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "metadata": {},\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteEvent`\n\nDelete a native epilot calendar event.\n\n`DELETE /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.deleteEvent({\n event_id: \'example\',\n})\n```\n\n---\n\n### `shareEvent`\n\nShare a calendar event with another user of the same organization, view-only. Owner-only: recipients of a share cannot re-share. Sharing an already-shared event is a no-op.\n\n`POST /v1/calendar/events/{event_id}/share`\n\n```ts\nconst { data } = await client.shareEvent(\n {\n event_id: \'example\',\n },\n {\n user_id: \'string\'\n },\n)\n```\n\n---\n\n### `unshareEvent`\n\nRevoke a per-event share. The recipient loses access immediately. Owner-only.\n\n`DELETE /v1/calendar/events/{event_id}/share/{user_id}`\n\n```ts\nconst { data } = await client.unshareEvent({\n event_id: \'example\',\n user_id: \'example\',\n})\n```\n\n---\n\n## Schemas\n\n### `AbsenceInterval`\n\n```ts\ntype AbsenceInterval = {\n from: string // date-time\n to: string // date-time\n original_from: string // date-time\n original_to: string // date-time\n absent: boolean\n source: "calendar_event" | "absence_adjustment" | "working_hours"\n calendar_event_id?: string\n absence_adjustment_id?: string\n reason?: string\n}\n```\n\n### `AbsenceIntervalSource`\n\n```ts\ntype AbsenceIntervalSource = "calendar_event" | "absence_adjustment" | "working_hours"\n```\n\n### `Error`\n\n```ts\ntype Error = {\n status: number\n error: string | unknown[]\n}\n```\n\n### `SearchAbsenceBody`\n\n```ts\ntype SearchAbsenceBody = {\n from: string // date-time\n to: string // date-time\n user_ids: string[]\n include_busy?: boolean\n working_hours_granularity?: "time" | "day"\n}\n```\n\n### `SearchNowAbsenceBody`\n\n```ts\ntype SearchNowAbsenceBody = {\n user_ids: string[]\n include_busy?: boolean\n working_hours_granularity?: "time" | "day"\n}\n```\n\n### `AbsenceAdjustment`\n\n```ts\ntype AbsenceAdjustment = {\n from: string // date-time\n to: string // date-time\n absent: boolean\n status: "oof" | "busy"\n type?: string\n reason?: string\n adjustment_id: string\n user_id: string\n created_by: string\n created_at: string // date-time\n updated_at: string // date-time\n}\n```\n\n### `AbsenceStatus`\n\nCalendar status targeted by the absence adjustment.\n\n```ts\ntype AbsenceStatus = "oof" | "busy"\n```\n\n### `AbsenceType`\n\nOptional producer-defined reference stored with an absence adjustment.\n\n```ts\ntype AbsenceType = string\n```\n\n### `CreateAbsenceAdjustmentBody`\n\n```ts\ntype CreateAbsenceAdjustmentBody = {\n from: string // date-time\n to: string // date-time\n absent: boolean\n status: "oof" | "busy"\n type?: string\n reason?: string\n}\n```\n\n### `PatchAbsenceAdjustmentBody`\n\n```ts\ntype PatchAbsenceAdjustmentBody = {\n from?: string // date-time\n to?: string // date-time\n absent?: boolean\n status?: "oof" | "busy"\n type?: string\n reason?: string\n}\n```\n\n### `ExternalCalendar`\n\n```ts\ntype ExternalCalendar = {\n provider: "outlook" | "google"\n last_synced_at: string // date-time\n}\n```\n\n### `WorkingHours`\n\nRecurring weekly working hours of a user. The absence of a record means the user is treated as always available.\n\n```ts\ntype WorkingHours = {\n monday: Array<{\n start: string\n end: string\n }>\n tuesday: Array<{\n start: string\n end: string\n }>\n wednesday: Array<{\n start: string\n end: string\n }>\n thursday: Array<{\n start: string\n end: string\n }>\n friday: Array<{\n start: string\n end: string\n }>\n saturday: Array<{\n start: string\n end: string\n }>\n sunday: Array<{\n start: string\n end: string\n }>\n timezone: string\n user_id: string\n updated_by: string\n created_at: string // date-time\n updated_at: string // date-time\n}\n```\n\n### `UpsertWorkingHoursBody`\n\nFull replacement of the working-hours record. All weekdays are required; an empty array means a day off. Users without a working-hours record are treated as always available.\n\n```ts\ntype UpsertWorkingHoursBody = {\n monday: Array<{\n start: string\n end: string\n }>\n tuesday: Array<{\n start: string\n end: string\n }>\n wednesday: Array<{\n start: string\n end: string\n }>\n thursday: Array<{\n start: string\n end: string\n }>\n friday: Array<{\n start: string\n end: string\n }>\n saturday: Array<{\n start: string\n end: string\n }>\n sunday: Array<{\n start: string\n end: string\n }>\n timezone?: string\n}\n```\n\n### `TimeWindow`\n\nA wall-clock working window within a single day.\n\n```ts\ntype TimeWindow = {\n start: string\n end: string\n}\n```\n\n### `Calendar`\n\n```ts\ntype Calendar = {\n _id: string\n _schema: "calendar"\n _org: string\n _title?: string\n name: string\n description?: string\n color?: string\n is_default: boolean\n read_only: boolean\n owner_email?: string // email\n source: {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_calendar_id?: string\n last_synced_at?: string // date-time\n }\n _created_at?: string // date-time\n _updated_at?: string // date-time\n}\n```\n\n### `CalendarSource`\n\n```ts\ntype CalendarSource = {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_calendar_id?: string\n last_synced_at?: string // date-time\n}\n```\n\n### `Provider`\n\nNull for native epilot calendars\n\n```ts\ntype Provider = "outlook" | "google" | null\n```\n\n### `CalendarCreateBody`\n\n```ts\ntype CalendarCreateBody = {\n name: string\n description?: string\n color?: string\n}\n```\n\n### `AddOutlookCalendarRequest`\n\n```ts\ntype AddOutlookCalendarRequest = {\n provider_calendar_id: string\n name?: string\n}\n```\n\n### `AvailableOutlookCalendar`\n\n```ts\ntype AvailableOutlookCalendar = {\n provider_calendar_id: string\n name: string\n color?: string\n is_default?: boolean\n can_edit?: boolean\n owner?: string\n}\n```\n\n### `CalendarPatchBody`\n\n```ts\ntype CalendarPatchBody = {\n name?: string\n description?: string\n color?: string\n}\n```\n\n### `CalendarEvent`\n\n```ts\ntype CalendarEvent = {\n _id: string\n _schema: "calendar_event"\n _org: string\n _title?: string\n _tags?: string[]\n calendar_id: string\n event_type: "singleInstance" | "occurrence" | "exception" | "seriesMaster"\n description?: string\n start_time: string // date-time\n end_time: string // date-time\n timezone: string\n is_all_day: boolean\n location?: string\n status: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n busy: boolean\n is_cancelled: boolean\n is_draft: boolean\n sensitivity: "normal" | "personal" | "private" | "confidential"\n importance: "low" | "normal" | "high"\n is_online_meeting: boolean\n online_meeting_url?: string // uri\n web_link?: string // uri\n response_status: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n organizer_email?: string // email\n attendees?: Array<{\n email: string // email\n name?: string\n response: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n type: "required" | "optional" | "resource"\n }>\n metadata?: Record<string, unknown>\n is_recurring: boolean\n series_master_id?: string\n source: {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_event_id?: string\n provider_event_url?: string // uri\n last_synced_at?: string // date-time\n etag?: string\n }\n _created_at?: string // date-time\n _updated_at?: string // date-time\n}\n```\n\n### `EventType`\n\n```ts\ntype EventType = "singleInstance" | "occurrence" | "exception" | "seriesMaster"\n```\n\n### `EventStatus`\n\nFree/busy state derived from provider `showAs`\n\n```ts\ntype EventStatus = "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n```\n\n### `Sensitivity`\n\n```ts\ntype Sensitivity = "normal" | "personal" | "private" | "confidential"\n```\n\n### `Importance`\n\n```ts\ntype Importance = "low" | "normal" | "high"\n```\n\n### `ResponseStatus`\n\nCaller\'s response to the invite\n\n```ts\ntype ResponseStatus = "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n```\n\n### `Attendee`\n\n```ts\ntype Attendee = {\n email: string // email\n name?: string\n response: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n type: "required" | "optional" | "resource"\n}\n```\n\n### `EventSource`\n\n```ts\ntype EventSource = {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_event_id?: string\n provider_event_url?: string // uri\n last_synced_at?: string // date-time\n etag?: string\n}\n```\n\n### `CalendarEventCreateBody`\n\n```ts\ntype CalendarEventCreateBody = {\n calendar_id: string\n description?: string\n start_time: string // date-time\n end_time: string // date-time\n timezone: string\n is_all_day: boolean\n location?: string\n status: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n sensitivity: "normal" | "personal" | "private" | "confidential"\n metadata?: Record<string, unknown>\n _title: string\n}\n```\n\n### `CalendarEventPatchBody`\n\n```ts\ntype CalendarEventPatchBody = {\n description?: string\n start_time?: string // date-time\n end_time?: string // date-time\n timezone?: string\n is_all_day?: boolean\n location?: string\n status?: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n is_cancelled?: boolean\n sensitivity?: "normal" | "personal" | "private" | "confidential"\n _title?: string\n}\n```\n\n### `ShareEventBody`\n\n```ts\ntype ShareEventBody = {\n user_id: string\n}\n```\n';
5
5
 
6
6
 
7
7
  exports.default = calendar_default;
@@ -1,7 +1,7 @@
1
1
  import "./chunk-YPSWSI3M.js";
2
2
 
3
3
  // src/docs/calendar.json
4
- var calendar_default = '# Calendar API\n\n- **Base URL:** `https://calendar.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/calendar](https://docs.epilot.io/api/calendar)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.calendar.listUsersAbsence(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/calendar\'\n\nconst calendarClient = getClient()\nauthorize(calendarClient, () => \'<token>\')\nconst { data } = await calendarClient.listUsersAbsence(...)\n```\n\n## Operations\n\n**Absence**\n- [`listUsersAbsence`](#listusersabsence)\n- [`searchAbsence`](#searchabsence)\n- [`searchNowAbsence`](#searchnowabsence)\n- [`listAbsenceAdjustments`](#listabsenceadjustments)\n- [`createAbsenceAdjustment`](#createabsenceadjustment)\n- [`getAbsenceAdjustment`](#getabsenceadjustment)\n- [`patchAbsenceAdjustment`](#patchabsenceadjustment)\n- [`deleteAbsenceAdjustment`](#deleteabsenceadjustment)\n- [`getUserAbsence`](#getuserabsence)\n\n**Working Hours**\n- [`getWorkingHours`](#getworkinghours)\n- [`putWorkingHours`](#putworkinghours)\n- [`deleteWorkingHours`](#deleteworkinghours)\n\n**Calendars**\n- [`listCalendars`](#listcalendars)\n- [`createCalendar`](#createcalendar)\n- [`addOutlookCalendar`](#addoutlookcalendar)\n- [`listOutlookCalendars`](#listoutlookcalendars)\n- [`deleteOutlookCalendar`](#deleteoutlookcalendar)\n- [`outlookWebhook`](#outlookwebhook)\n- [`getCalendar`](#getcalendar)\n- [`updateCalendar`](#updatecalendar)\n- [`deleteCalendar`](#deletecalendar)\n\n**Calendar Events**\n- [`listEvents`](#listevents)\n- [`createEvent`](#createevent)\n- [`getEvent`](#getevent)\n- [`updateEvent`](#updateevent)\n- [`deleteEvent`](#deleteevent)\n- [`shareEvent`](#shareevent)\n- [`unshareEvent`](#unshareevent)\n\n**Schemas**\n- [`AbsenceInterval`](#absenceinterval)\n- [`AbsenceIntervalSource`](#absenceintervalsource)\n- [`Error`](#error)\n- [`SearchAbsenceBody`](#searchabsencebody)\n- [`SearchNowAbsenceBody`](#searchnowabsencebody)\n- [`AbsenceAdjustment`](#absenceadjustment)\n- [`AbsenceStatus`](#absencestatus)\n- [`AbsenceType`](#absencetype)\n- [`CreateAbsenceAdjustmentBody`](#createabsenceadjustmentbody)\n- [`PatchAbsenceAdjustmentBody`](#patchabsenceadjustmentbody)\n- [`ExternalCalendar`](#externalcalendar)\n- [`WorkingHours`](#workinghours)\n- [`UpsertWorkingHoursBody`](#upsertworkinghoursbody)\n- [`TimeWindow`](#timewindow)\n- [`Calendar`](#calendar)\n- [`CalendarSource`](#calendarsource)\n- [`Provider`](#provider)\n- [`CalendarCreateBody`](#calendarcreatebody)\n- [`AddOutlookCalendarRequest`](#addoutlookcalendarrequest)\n- [`AvailableOutlookCalendar`](#availableoutlookcalendar)\n- [`CalendarPatchBody`](#calendarpatchbody)\n- [`CalendarEvent`](#calendarevent)\n- [`EventType`](#eventtype)\n- [`EventStatus`](#eventstatus)\n- [`Sensitivity`](#sensitivity)\n- [`Importance`](#importance)\n- [`ResponseStatus`](#responsestatus)\n- [`Attendee`](#attendee)\n- [`EventSource`](#eventsource)\n- [`CalendarEventCreateBody`](#calendareventcreatebody)\n- [`CalendarEventPatchBody`](#calendareventpatchbody)\n- [`ShareEventBody`](#shareeventbody)\n\n### `listUsersAbsence`\n\nList organization users with known absence metadata in the requested time window.\n\n`GET /v1/calendar/absence/users`\n\n```ts\nconst { data } = await client.listUsersAbsence({\n from: \'example\',\n to: \'example\',\n include_busy: true,\n working_hours_granularity: \'example\',\n query: \'example\',\n limit: 1,\n offset: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "hits": 0,\n "results": [\n {\n "absent": true,\n "absence_intervals": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "original_from": "1970-01-01T00:00:00.000Z",\n "original_to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "source": "calendar_event",\n "calendar_event_id": "string",\n "absence_adjustment_id": "string",\n "reason": "string"\n }\n ],\n "user_id": "string",\n "display_name": "string",\n "email": "user@example.com",\n "status": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `searchAbsence`\n\nSearch known absence for candidate users in the requested time window.\n\n`POST /v1/calendar/absence:search`\n\n```ts\nconst { data } = await client.searchAbsence(\n null,\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n user_ids: [\'string\'],\n include_busy: false,\n working_hours_granularity: \'time\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "users": {}\n}\n```\n\n</details>\n\n---\n\n### `searchNowAbsence`\n\nSearch known absence for candidate users at the current server time.\n\n`POST /v1/calendar/absence:search-now`\n\n```ts\nconst { data } = await client.searchNowAbsence(\n null,\n {\n user_ids: [\'string\'],\n include_busy: false,\n working_hours_granularity: \'time\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "users": {}\n}\n```\n\n</details>\n\n---\n\n### `listAbsenceAdjustments`\n\nList absence adjustments for a user in a time window.\n\n`GET /v1/calendar/absence/users/{user_id}/adjustments`\n\n```ts\nconst { data } = await client.listAbsenceAdjustments({\n user_id: \'example\',\n from: \'example\',\n to: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "results": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createAbsenceAdjustment`\n\nCreate a time-bound absence adjustment for a user in the caller organization.\n\n`POST /v1/calendar/absence/users/{user_id}/adjustments`\n\n```ts\nconst { data } = await client.createAbsenceAdjustment(\n {\n user_id: \'example\',\n },\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n absent: true,\n status: \'oof\',\n type: \'string\',\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `getAbsenceAdjustment`\n\nGet an absence adjustment by ID.\n\n`GET /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.getAbsenceAdjustment({\n user_id: \'example\',\n adjustment_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `patchAbsenceAdjustment`\n\nUpdate an absence adjustment in the caller organization.\n\n`PATCH /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.patchAbsenceAdjustment(\n {\n user_id: \'example\',\n adjustment_id: \'example\',\n },\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n absent: true,\n status: \'oof\',\n type: \'string\',\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteAbsenceAdjustment`\n\nDelete an absence adjustment.\n\n`DELETE /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.deleteAbsenceAdjustment({\n user_id: \'example\',\n adjustment_id: \'example\',\n})\n```\n\n---\n\n### `getUserAbsence`\n\nGet known absence for a user in a time window. absent=false means no known absence, not guaranteed availability.\n\n`GET /v1/calendar/absence/users/{user_id}`\n\n```ts\nconst { data } = await client.getUserAbsence({\n user_id: \'example\',\n from: \'example\',\n to: \'example\',\n include_busy: true,\n working_hours_granularity: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "absent": true,\n "absence_intervals": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "original_from": "1970-01-01T00:00:00.000Z",\n "original_to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "source": "calendar_event",\n "calendar_event_id": "string",\n "absence_adjustment_id": "string",\n "reason": "string"\n }\n ],\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "user_id": "string",\n "external_calendars": [\n {\n "provider": "outlook",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getWorkingHours`\n\nGet the recurring weekly working hours of a user. 404 means no record exists and the user is treated as always available.\n\n`GET /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.getWorkingHours({\n user_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "monday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "tuesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "wednesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "thursday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "friday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "saturday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "sunday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "timezone": "string",\n "user_id": "string",\n "updated_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `putWorkingHours`\n\nCreate or fully replace the working hours of a user in the caller organization. This is a full replace, not a merge.\n\n`PUT /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.putWorkingHours(\n {\n user_id: \'example\',\n },\n {\n monday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n tuesday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n wednesday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n thursday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n friday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n saturday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n sunday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n timezone: \'Europe/Berlin\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "monday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "tuesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "wednesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "thursday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "friday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "saturday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "sunday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "timezone": "string",\n "user_id": "string",\n "updated_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteWorkingHours`\n\nDelete the working hours of a user. The user is then treated as always available again.\n\n`DELETE /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.deleteWorkingHours({\n user_id: \'example\',\n})\n```\n\n---\n\n### `listCalendars`\n\nList calendars visible to the caller.\n\n`GET /v1/calendar`\n\n```ts\nconst { data } = await client.listCalendars({\n size: 1,\n cursor: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `createCalendar`\n\nCreate a native epilot calendar.\n\n`POST /v1/calendar`\n\n```ts\nconst { data } = await client.createCalendar(\n null,\n {\n name: \'string\',\n description: \'string\',\n color: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `addOutlookCalendar`\n\nRegisters one of the caller\'s Outlook calendars as an epilot calendar.\n\n`POST /v1/calendar/sources/outlook`\n\n```ts\nconst { data } = await client.addOutlookCalendar(\n null,\n {\n provider_calendar_id: \'string\',\n name: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `listOutlookCalendars`\n\nLists the calling user\'s Outlook calendars available to import as epilot calendars.\n\n`GET /v1/calendar/sources/outlook/available`\n\n```ts\nconst { data } = await client.listOutlookCalendars()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "calendars": [\n {\n "provider_calendar_id": "string",\n "name": "string",\n "color": "string",\n "is_default": true,\n "can_edit": true,\n "owner": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `deleteOutlookCalendar`\n\nDisconnects a previously registered Outlook calendar.\n\n`DELETE /v1/calendar/sources/outlook/{calendar_id}`\n\n```ts\nconst { data } = await client.deleteOutlookCalendar({\n calendar_id: \'example\',\n})\n```\n\n---\n\n### `outlookWebhook`\n\nPublic Microsoft Graph webhook receiver for per-user Outlook calendar\nsubscriptions. Unauthenticated by design (API Gateway `Authorizer: NONE`):\nGraph calls it with no epilot token.\n\n`POST /v1/calendar/outlook/webhook`\n\n```ts\nconst { data } = await client.outlookWebhook({\n validationToken: \'example\',\n})\n```\n\n---\n\n### `getCalendar`\n\nGet a single calendar by its epilot ID.\n\n`GET /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.getCalendar({\n calendar_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateCalendar`\n\nUpdate fields on a calendar.\n\n`PATCH /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.updateCalendar(\n {\n calendar_id: \'example\',\n },\n {\n name: \'string\',\n description: \'string\',\n color: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteCalendar`\n\nDelete a native epilot calendar and its events.\n\n`DELETE /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.deleteCalendar({\n calendar_id: \'example\',\n})\n```\n\n---\n\n### `listEvents`\n\nList events in a time window. Recurring events are returned as expanded occurrences \u2013 each instance appears as its own event.\n\n`GET /v1/calendar/events`\n\n```ts\nconst { data } = await client.listEvents({\n from: \'example\',\n to: \'example\',\n calendar_id: \'example\',\n size: 1,\n cursor: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `createEvent`\n\nCreate a native epilot calendar event.\n\n`POST /v1/calendar/events`\n\n```ts\nconst { data } = await client.createEvent(\n null,\n {\n calendar_id: \'string\',\n description: \'string\',\n start_time: \'1970-01-01T00:00:00.000Z\',\n end_time: \'1970-01-01T00:00:00.000Z\',\n timezone: \'string\',\n is_all_day: true,\n location: \'string\',\n status: \'free\',\n sensitivity: \'normal\',\n _title: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `getEvent`\n\nGet a single event by its epilot ID.\n\n`GET /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.getEvent({\n event_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateEvent`\n\nUpdate a native epilot calendar event.\n\n`PATCH /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.updateEvent(\n {\n event_id: \'example\',\n },\n {\n description: \'string\',\n start_time: \'1970-01-01T00:00:00.000Z\',\n end_time: \'1970-01-01T00:00:00.000Z\',\n timezone: \'string\',\n is_all_day: true,\n location: \'string\',\n status: \'free\',\n sensitivity: \'normal\',\n _title: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteEvent`\n\nDelete a native epilot calendar event.\n\n`DELETE /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.deleteEvent({\n event_id: \'example\',\n})\n```\n\n---\n\n### `shareEvent`\n\nShare a calendar event with another user of the same organization, view-only. Owner-only: recipients of a share cannot re-share. Sharing an already-shared event is a no-op.\n\n`POST /v1/calendar/events/{event_id}/share`\n\n```ts\nconst { data } = await client.shareEvent(\n {\n event_id: \'example\',\n },\n {\n user_id: \'string\'\n },\n)\n```\n\n---\n\n### `unshareEvent`\n\nRevoke a per-event share. The recipient loses access immediately. Owner-only.\n\n`DELETE /v1/calendar/events/{event_id}/share/{user_id}`\n\n```ts\nconst { data } = await client.unshareEvent({\n event_id: \'example\',\n user_id: \'example\',\n})\n```\n\n---\n\n## Schemas\n\n### `AbsenceInterval`\n\n```ts\ntype AbsenceInterval = {\n from: string // date-time\n to: string // date-time\n original_from: string // date-time\n original_to: string // date-time\n absent: boolean\n source: "calendar_event" | "absence_adjustment" | "working_hours"\n calendar_event_id?: string\n absence_adjustment_id?: string\n reason?: string\n}\n```\n\n### `AbsenceIntervalSource`\n\n```ts\ntype AbsenceIntervalSource = "calendar_event" | "absence_adjustment" | "working_hours"\n```\n\n### `Error`\n\n```ts\ntype Error = {\n status: number\n error: string | unknown[]\n}\n```\n\n### `SearchAbsenceBody`\n\n```ts\ntype SearchAbsenceBody = {\n from: string // date-time\n to: string // date-time\n user_ids: string[]\n include_busy?: boolean\n working_hours_granularity?: "time" | "day"\n}\n```\n\n### `SearchNowAbsenceBody`\n\n```ts\ntype SearchNowAbsenceBody = {\n user_ids: string[]\n include_busy?: boolean\n working_hours_granularity?: "time" | "day"\n}\n```\n\n### `AbsenceAdjustment`\n\n```ts\ntype AbsenceAdjustment = {\n from: string // date-time\n to: string // date-time\n absent: boolean\n status: "oof" | "busy"\n type?: string\n reason?: string\n adjustment_id: string\n user_id: string\n created_by: string\n created_at: string // date-time\n updated_at: string // date-time\n}\n```\n\n### `AbsenceStatus`\n\nCalendar status targeted by the absence adjustment.\n\n```ts\ntype AbsenceStatus = "oof" | "busy"\n```\n\n### `AbsenceType`\n\nOptional producer-defined reference stored with an absence adjustment.\n\n```ts\ntype AbsenceType = string\n```\n\n### `CreateAbsenceAdjustmentBody`\n\n```ts\ntype CreateAbsenceAdjustmentBody = {\n from: string // date-time\n to: string // date-time\n absent: boolean\n status: "oof" | "busy"\n type?: string\n reason?: string\n}\n```\n\n### `PatchAbsenceAdjustmentBody`\n\n```ts\ntype PatchAbsenceAdjustmentBody = {\n from?: string // date-time\n to?: string // date-time\n absent?: boolean\n status?: "oof" | "busy"\n type?: string\n reason?: string\n}\n```\n\n### `ExternalCalendar`\n\n```ts\ntype ExternalCalendar = {\n provider: "outlook" | "google"\n last_synced_at: string // date-time\n}\n```\n\n### `WorkingHours`\n\nRecurring weekly working hours of a user. The absence of a record means the user is treated as always available.\n\n```ts\ntype WorkingHours = {\n monday: Array<{\n start: string\n end: string\n }>\n tuesday: Array<{\n start: string\n end: string\n }>\n wednesday: Array<{\n start: string\n end: string\n }>\n thursday: Array<{\n start: string\n end: string\n }>\n friday: Array<{\n start: string\n end: string\n }>\n saturday: Array<{\n start: string\n end: string\n }>\n sunday: Array<{\n start: string\n end: string\n }>\n timezone: string\n user_id: string\n updated_by: string\n created_at: string // date-time\n updated_at: string // date-time\n}\n```\n\n### `UpsertWorkingHoursBody`\n\nFull replacement of the working-hours record. All weekdays are required; an empty array means a day off. Users without a working-hours record are treated as always available.\n\n```ts\ntype UpsertWorkingHoursBody = {\n monday: Array<{\n start: string\n end: string\n }>\n tuesday: Array<{\n start: string\n end: string\n }>\n wednesday: Array<{\n start: string\n end: string\n }>\n thursday: Array<{\n start: string\n end: string\n }>\n friday: Array<{\n start: string\n end: string\n }>\n saturday: Array<{\n start: string\n end: string\n }>\n sunday: Array<{\n start: string\n end: string\n }>\n timezone?: string\n}\n```\n\n### `TimeWindow`\n\nA wall-clock working window within a single day.\n\n```ts\ntype TimeWindow = {\n start: string\n end: string\n}\n```\n\n### `Calendar`\n\n```ts\ntype Calendar = {\n _id: string\n _schema: "calendar"\n _org: string\n _title?: string\n name: string\n description?: string\n color?: string\n is_default: boolean\n read_only: boolean\n owner_email?: string // email\n source: {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_calendar_id?: string\n last_synced_at?: string // date-time\n }\n _created_at?: string // date-time\n _updated_at?: string // date-time\n}\n```\n\n### `CalendarSource`\n\n```ts\ntype CalendarSource = {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_calendar_id?: string\n last_synced_at?: string // date-time\n}\n```\n\n### `Provider`\n\nNull for native epilot calendars\n\n```ts\ntype Provider = "outlook" | "google" | null\n```\n\n### `CalendarCreateBody`\n\n```ts\ntype CalendarCreateBody = {\n name: string\n description?: string\n color?: string\n}\n```\n\n### `AddOutlookCalendarRequest`\n\n```ts\ntype AddOutlookCalendarRequest = {\n provider_calendar_id: string\n name?: string\n}\n```\n\n### `AvailableOutlookCalendar`\n\n```ts\ntype AvailableOutlookCalendar = {\n provider_calendar_id: string\n name: string\n color?: string\n is_default?: boolean\n can_edit?: boolean\n owner?: string\n}\n```\n\n### `CalendarPatchBody`\n\n```ts\ntype CalendarPatchBody = {\n name?: string\n description?: string\n color?: string\n}\n```\n\n### `CalendarEvent`\n\n```ts\ntype CalendarEvent = {\n _id: string\n _schema: "calendar_event"\n _org: string\n _title?: string\n _tags?: string[]\n calendar_id: string\n event_type: "singleInstance" | "occurrence" | "exception" | "seriesMaster"\n description?: string\n start_time: string // date-time\n end_time: string // date-time\n timezone: string\n is_all_day: boolean\n location?: string\n status: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n busy: boolean\n is_cancelled: boolean\n sensitivity: "normal" | "personal" | "private" | "confidential"\n importance: "low" | "normal" | "high"\n is_online_meeting: boolean\n online_meeting_url?: string // uri\n web_link?: string // uri\n response_status: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n organizer_email?: string // email\n attendees?: Array<{\n email: string // email\n name?: string\n response: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n type: "required" | "optional" | "resource"\n }>\n is_recurring: boolean\n series_master_id?: string\n source: {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_event_id?: string\n provider_event_url?: string // uri\n last_synced_at?: string // date-time\n etag?: string\n }\n _created_at?: string // date-time\n _updated_at?: string // date-time\n}\n```\n\n### `EventType`\n\n```ts\ntype EventType = "singleInstance" | "occurrence" | "exception" | "seriesMaster"\n```\n\n### `EventStatus`\n\nFree/busy state derived from provider `showAs`\n\n```ts\ntype EventStatus = "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n```\n\n### `Sensitivity`\n\n```ts\ntype Sensitivity = "normal" | "personal" | "private" | "confidential"\n```\n\n### `Importance`\n\n```ts\ntype Importance = "low" | "normal" | "high"\n```\n\n### `ResponseStatus`\n\nCaller\'s response to the invite\n\n```ts\ntype ResponseStatus = "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n```\n\n### `Attendee`\n\n```ts\ntype Attendee = {\n email: string // email\n name?: string\n response: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n type: "required" | "optional" | "resource"\n}\n```\n\n### `EventSource`\n\n```ts\ntype EventSource = {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_event_id?: string\n provider_event_url?: string // uri\n last_synced_at?: string // date-time\n etag?: string\n}\n```\n\n### `CalendarEventCreateBody`\n\n```ts\ntype CalendarEventCreateBody = {\n calendar_id: string\n description?: string\n start_time: string // date-time\n end_time: string // date-time\n timezone: string\n is_all_day: boolean\n location?: string\n status: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n sensitivity: "normal" | "personal" | "private" | "confidential"\n _title: string\n}\n```\n\n### `CalendarEventPatchBody`\n\n```ts\ntype CalendarEventPatchBody = {\n description?: string\n start_time?: string // date-time\n end_time?: string // date-time\n timezone?: string\n is_all_day?: boolean\n location?: string\n status?: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n sensitivity?: "normal" | "personal" | "private" | "confidential"\n _title?: string\n}\n```\n\n### `ShareEventBody`\n\n```ts\ntype ShareEventBody = {\n user_id: string\n}\n```\n';
4
+ var calendar_default = '# Calendar API\n\n- **Base URL:** `https://calendar.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/calendar](https://docs.epilot.io/api/calendar)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.calendar.listUsersAbsence(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/calendar\'\n\nconst calendarClient = getClient()\nauthorize(calendarClient, () => \'<token>\')\nconst { data } = await calendarClient.listUsersAbsence(...)\n```\n\n## Operations\n\n**Absence**\n- [`listUsersAbsence`](#listusersabsence)\n- [`searchAbsence`](#searchabsence)\n- [`searchNowAbsence`](#searchnowabsence)\n- [`listAbsenceAdjustments`](#listabsenceadjustments)\n- [`createAbsenceAdjustment`](#createabsenceadjustment)\n- [`getAbsenceAdjustment`](#getabsenceadjustment)\n- [`patchAbsenceAdjustment`](#patchabsenceadjustment)\n- [`deleteAbsenceAdjustment`](#deleteabsenceadjustment)\n- [`getUserAbsence`](#getuserabsence)\n\n**Working Hours**\n- [`getWorkingHours`](#getworkinghours)\n- [`putWorkingHours`](#putworkinghours)\n- [`deleteWorkingHours`](#deleteworkinghours)\n\n**Calendars**\n- [`listCalendars`](#listcalendars)\n- [`createCalendar`](#createcalendar)\n- [`addOutlookCalendar`](#addoutlookcalendar)\n- [`listOutlookCalendars`](#listoutlookcalendars)\n- [`deleteOutlookCalendar`](#deleteoutlookcalendar)\n- [`outlookWebhook`](#outlookwebhook)\n- [`getCalendar`](#getcalendar)\n- [`updateCalendar`](#updatecalendar)\n- [`deleteCalendar`](#deletecalendar)\n\n**Calendar Events**\n- [`listEvents`](#listevents)\n- [`createEvent`](#createevent)\n- [`getEvent`](#getevent)\n- [`updateEvent`](#updateevent)\n- [`deleteEvent`](#deleteevent)\n- [`shareEvent`](#shareevent)\n- [`unshareEvent`](#unshareevent)\n\n**Schemas**\n- [`AbsenceInterval`](#absenceinterval)\n- [`AbsenceIntervalSource`](#absenceintervalsource)\n- [`Error`](#error)\n- [`SearchAbsenceBody`](#searchabsencebody)\n- [`SearchNowAbsenceBody`](#searchnowabsencebody)\n- [`AbsenceAdjustment`](#absenceadjustment)\n- [`AbsenceStatus`](#absencestatus)\n- [`AbsenceType`](#absencetype)\n- [`CreateAbsenceAdjustmentBody`](#createabsenceadjustmentbody)\n- [`PatchAbsenceAdjustmentBody`](#patchabsenceadjustmentbody)\n- [`ExternalCalendar`](#externalcalendar)\n- [`WorkingHours`](#workinghours)\n- [`UpsertWorkingHoursBody`](#upsertworkinghoursbody)\n- [`TimeWindow`](#timewindow)\n- [`Calendar`](#calendar)\n- [`CalendarSource`](#calendarsource)\n- [`Provider`](#provider)\n- [`CalendarCreateBody`](#calendarcreatebody)\n- [`AddOutlookCalendarRequest`](#addoutlookcalendarrequest)\n- [`AvailableOutlookCalendar`](#availableoutlookcalendar)\n- [`CalendarPatchBody`](#calendarpatchbody)\n- [`CalendarEvent`](#calendarevent)\n- [`EventType`](#eventtype)\n- [`EventStatus`](#eventstatus)\n- [`Sensitivity`](#sensitivity)\n- [`Importance`](#importance)\n- [`ResponseStatus`](#responsestatus)\n- [`Attendee`](#attendee)\n- [`EventSource`](#eventsource)\n- [`CalendarEventCreateBody`](#calendareventcreatebody)\n- [`CalendarEventPatchBody`](#calendareventpatchbody)\n- [`ShareEventBody`](#shareeventbody)\n\n### `listUsersAbsence`\n\nList organization users with known absence metadata in the requested time window.\n\n`GET /v1/calendar/absence/users`\n\n```ts\nconst { data } = await client.listUsersAbsence({\n from: \'example\',\n to: \'example\',\n include_busy: true,\n working_hours_granularity: \'example\',\n query: \'example\',\n limit: 1,\n offset: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "hits": 0,\n "results": [\n {\n "absent": true,\n "absence_intervals": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "original_from": "1970-01-01T00:00:00.000Z",\n "original_to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "source": "calendar_event",\n "calendar_event_id": "string",\n "absence_adjustment_id": "string",\n "reason": "string"\n }\n ],\n "user_id": "string",\n "display_name": "string",\n "email": "user@example.com",\n "status": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `searchAbsence`\n\nSearch known absence for candidate users in the requested time window.\n\n`POST /v1/calendar/absence:search`\n\n```ts\nconst { data } = await client.searchAbsence(\n null,\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n user_ids: [\'string\'],\n include_busy: false,\n working_hours_granularity: \'time\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "users": {}\n}\n```\n\n</details>\n\n---\n\n### `searchNowAbsence`\n\nSearch known absence for candidate users at the current server time.\n\n`POST /v1/calendar/absence:search-now`\n\n```ts\nconst { data } = await client.searchNowAbsence(\n null,\n {\n user_ids: [\'string\'],\n include_busy: false,\n working_hours_granularity: \'time\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "users": {}\n}\n```\n\n</details>\n\n---\n\n### `listAbsenceAdjustments`\n\nList absence adjustments for a user in a time window.\n\n`GET /v1/calendar/absence/users/{user_id}/adjustments`\n\n```ts\nconst { data } = await client.listAbsenceAdjustments({\n user_id: \'example\',\n from: \'example\',\n to: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "results": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createAbsenceAdjustment`\n\nCreate a time-bound absence adjustment for a user in the caller organization.\n\n`POST /v1/calendar/absence/users/{user_id}/adjustments`\n\n```ts\nconst { data } = await client.createAbsenceAdjustment(\n {\n user_id: \'example\',\n },\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n absent: true,\n status: \'oof\',\n type: \'string\',\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `getAbsenceAdjustment`\n\nGet an absence adjustment by ID.\n\n`GET /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.getAbsenceAdjustment({\n user_id: \'example\',\n adjustment_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `patchAbsenceAdjustment`\n\nUpdate an absence adjustment in the caller organization.\n\n`PATCH /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.patchAbsenceAdjustment(\n {\n user_id: \'example\',\n adjustment_id: \'example\',\n },\n {\n from: \'1970-01-01T00:00:00.000Z\',\n to: \'1970-01-01T00:00:00.000Z\',\n absent: true,\n status: \'oof\',\n type: \'string\',\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "status": "oof",\n "type": "string",\n "reason": "string",\n "adjustment_id": "string",\n "user_id": "string",\n "created_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteAbsenceAdjustment`\n\nDelete an absence adjustment.\n\n`DELETE /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}`\n\n```ts\nconst { data } = await client.deleteAbsenceAdjustment({\n user_id: \'example\',\n adjustment_id: \'example\',\n})\n```\n\n---\n\n### `getUserAbsence`\n\nGet known absence for a user in a time window. absent=false means no known absence, not guaranteed availability.\n\n`GET /v1/calendar/absence/users/{user_id}`\n\n```ts\nconst { data } = await client.getUserAbsence({\n user_id: \'example\',\n from: \'example\',\n to: \'example\',\n include_busy: true,\n working_hours_granularity: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "absent": true,\n "absence_intervals": [\n {\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "original_from": "1970-01-01T00:00:00.000Z",\n "original_to": "1970-01-01T00:00:00.000Z",\n "absent": true,\n "source": "calendar_event",\n "calendar_event_id": "string",\n "absence_adjustment_id": "string",\n "reason": "string"\n }\n ],\n "from": "1970-01-01T00:00:00.000Z",\n "to": "1970-01-01T00:00:00.000Z",\n "user_id": "string",\n "external_calendars": [\n {\n "provider": "outlook",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getWorkingHours`\n\nGet the recurring weekly working hours of a user. 404 means no record exists and the user is treated as always available.\n\n`GET /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.getWorkingHours({\n user_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "monday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "tuesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "wednesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "thursday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "friday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "saturday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "sunday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "timezone": "string",\n "user_id": "string",\n "updated_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `putWorkingHours`\n\nCreate or fully replace the working hours of a user in the caller organization. This is a full replace, not a merge.\n\n`PUT /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.putWorkingHours(\n {\n user_id: \'example\',\n },\n {\n monday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n tuesday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n wednesday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n thursday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n friday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n saturday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n sunday: [\n {\n start: \'string\',\n end: \'string\'\n }\n ],\n timezone: \'Europe/Berlin\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "monday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "tuesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "wednesday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "thursday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "friday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "saturday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "sunday": [\n {\n "start": "string",\n "end": "string"\n }\n ],\n "timezone": "string",\n "user_id": "string",\n "updated_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteWorkingHours`\n\nDelete the working hours of a user. The user is then treated as always available again.\n\n`DELETE /v1/calendar/working-hours/users/{user_id}`\n\n```ts\nconst { data } = await client.deleteWorkingHours({\n user_id: \'example\',\n})\n```\n\n---\n\n### `listCalendars`\n\nList calendars visible to the caller.\n\n`GET /v1/calendar`\n\n```ts\nconst { data } = await client.listCalendars({\n size: 1,\n cursor: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `createCalendar`\n\nCreate a native epilot calendar.\n\n`POST /v1/calendar`\n\n```ts\nconst { data } = await client.createCalendar(\n null,\n {\n name: \'string\',\n description: \'string\',\n color: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `addOutlookCalendar`\n\nRegisters one of the caller\'s Outlook calendars as an epilot calendar.\n\n`POST /v1/calendar/sources/outlook`\n\n```ts\nconst { data } = await client.addOutlookCalendar(\n null,\n {\n provider_calendar_id: \'string\',\n name: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `listOutlookCalendars`\n\nLists the calling user\'s Outlook calendars available to import as epilot calendars.\n\n`GET /v1/calendar/sources/outlook/available`\n\n```ts\nconst { data } = await client.listOutlookCalendars()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "calendars": [\n {\n "provider_calendar_id": "string",\n "name": "string",\n "color": "string",\n "is_default": true,\n "can_edit": true,\n "owner": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `deleteOutlookCalendar`\n\nDisconnects a previously registered Outlook calendar.\n\n`DELETE /v1/calendar/sources/outlook/{calendar_id}`\n\n```ts\nconst { data } = await client.deleteOutlookCalendar({\n calendar_id: \'example\',\n})\n```\n\n---\n\n### `outlookWebhook`\n\nPublic Microsoft Graph webhook receiver for per-user Outlook calendar\nsubscriptions. Unauthenticated by design (API Gateway `Authorizer: NONE`):\nGraph calls it with no epilot token.\n\n`POST /v1/calendar/outlook/webhook`\n\n```ts\nconst { data } = await client.outlookWebhook({\n validationToken: \'example\',\n})\n```\n\n---\n\n### `getCalendar`\n\nGet a single calendar by its epilot ID.\n\n`GET /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.getCalendar({\n calendar_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateCalendar`\n\nUpdate local calendar details. Changes to synced calendars do not modify the provider calendar.\n\n`PATCH /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.updateCalendar(\n {\n calendar_id: \'example\',\n },\n {\n name: \'string\',\n description: \'string\',\n color: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar",\n "_org": "string",\n "_title": "string",\n "name": "string",\n "description": "string",\n "color": "string",\n "is_default": true,\n "read_only": true,\n "owner_email": "user@example.com",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_calendar_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteCalendar`\n\nDelete a native epilot calendar or disconnect a synced calendar, including its locally stored events.\n\n`DELETE /v1/calendar/{calendar_id}`\n\n```ts\nconst { data } = await client.deleteCalendar({\n calendar_id: \'example\',\n})\n```\n\n---\n\n### `listEvents`\n\nList events in a time window. Recurring events are returned as expanded occurrences \u2013 each instance appears as its own event.\n\n`GET /v1/calendar/events`\n\n```ts\nconst { data } = await client.listEvents({\n from: \'example\',\n to: \'example\',\n calendar_id: \'example\',\n size: 1,\n cursor: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "is_draft": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "metadata": {},\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `createEvent`\n\nCreate a native epilot calendar event.\n\n`POST /v1/calendar/events`\n\n```ts\nconst { data } = await client.createEvent(\n null,\n {\n calendar_id: \'string\',\n description: \'string\',\n start_time: \'1970-01-01T00:00:00.000Z\',\n end_time: \'1970-01-01T00:00:00.000Z\',\n timezone: \'string\',\n is_all_day: true,\n location: \'string\',\n status: \'free\',\n sensitivity: \'normal\',\n metadata: {},\n _title: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "is_draft": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "metadata": {},\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `getEvent`\n\nGet a single event by its epilot ID.\n\n`GET /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.getEvent({\n event_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "is_draft": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "metadata": {},\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateEvent`\n\nUpdate a native epilot calendar event.\n\n`PATCH /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.updateEvent(\n {\n event_id: \'example\',\n },\n {\n description: \'string\',\n start_time: \'1970-01-01T00:00:00.000Z\',\n end_time: \'1970-01-01T00:00:00.000Z\',\n timezone: \'string\',\n is_all_day: true,\n location: \'string\',\n status: \'free\',\n is_cancelled: true,\n sensitivity: \'normal\',\n _title: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "string",\n "_schema": "calendar_event",\n "_org": "string",\n "_title": "string",\n "_tags": ["string"],\n "calendar_id": "string",\n "event_type": "singleInstance",\n "description": "string",\n "start_time": "1970-01-01T00:00:00.000Z",\n "end_time": "1970-01-01T00:00:00.000Z",\n "timezone": "string",\n "is_all_day": true,\n "location": "string",\n "status": "free",\n "busy": true,\n "is_cancelled": true,\n "is_draft": true,\n "sensitivity": "normal",\n "importance": "low",\n "is_online_meeting": true,\n "online_meeting_url": "https://example.com/path",\n "web_link": "https://example.com/path",\n "response_status": "none",\n "organizer_email": "user@example.com",\n "attendees": [\n {\n "email": "user@example.com",\n "name": "string",\n "response": "none",\n "type": "required"\n }\n ],\n "metadata": {},\n "is_recurring": true,\n "series_master_id": "string",\n "source": {\n "type": "native",\n "provider": "outlook",\n "provider_event_id": "string",\n "provider_event_url": "https://example.com/path",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "etag": "string"\n },\n "_created_at": "1970-01-01T00:00:00.000Z",\n "_updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteEvent`\n\nDelete a native epilot calendar event.\n\n`DELETE /v1/calendar/events/{event_id}`\n\n```ts\nconst { data } = await client.deleteEvent({\n event_id: \'example\',\n})\n```\n\n---\n\n### `shareEvent`\n\nShare a calendar event with another user of the same organization, view-only. Owner-only: recipients of a share cannot re-share. Sharing an already-shared event is a no-op.\n\n`POST /v1/calendar/events/{event_id}/share`\n\n```ts\nconst { data } = await client.shareEvent(\n {\n event_id: \'example\',\n },\n {\n user_id: \'string\'\n },\n)\n```\n\n---\n\n### `unshareEvent`\n\nRevoke a per-event share. The recipient loses access immediately. Owner-only.\n\n`DELETE /v1/calendar/events/{event_id}/share/{user_id}`\n\n```ts\nconst { data } = await client.unshareEvent({\n event_id: \'example\',\n user_id: \'example\',\n})\n```\n\n---\n\n## Schemas\n\n### `AbsenceInterval`\n\n```ts\ntype AbsenceInterval = {\n from: string // date-time\n to: string // date-time\n original_from: string // date-time\n original_to: string // date-time\n absent: boolean\n source: "calendar_event" | "absence_adjustment" | "working_hours"\n calendar_event_id?: string\n absence_adjustment_id?: string\n reason?: string\n}\n```\n\n### `AbsenceIntervalSource`\n\n```ts\ntype AbsenceIntervalSource = "calendar_event" | "absence_adjustment" | "working_hours"\n```\n\n### `Error`\n\n```ts\ntype Error = {\n status: number\n error: string | unknown[]\n}\n```\n\n### `SearchAbsenceBody`\n\n```ts\ntype SearchAbsenceBody = {\n from: string // date-time\n to: string // date-time\n user_ids: string[]\n include_busy?: boolean\n working_hours_granularity?: "time" | "day"\n}\n```\n\n### `SearchNowAbsenceBody`\n\n```ts\ntype SearchNowAbsenceBody = {\n user_ids: string[]\n include_busy?: boolean\n working_hours_granularity?: "time" | "day"\n}\n```\n\n### `AbsenceAdjustment`\n\n```ts\ntype AbsenceAdjustment = {\n from: string // date-time\n to: string // date-time\n absent: boolean\n status: "oof" | "busy"\n type?: string\n reason?: string\n adjustment_id: string\n user_id: string\n created_by: string\n created_at: string // date-time\n updated_at: string // date-time\n}\n```\n\n### `AbsenceStatus`\n\nCalendar status targeted by the absence adjustment.\n\n```ts\ntype AbsenceStatus = "oof" | "busy"\n```\n\n### `AbsenceType`\n\nOptional producer-defined reference stored with an absence adjustment.\n\n```ts\ntype AbsenceType = string\n```\n\n### `CreateAbsenceAdjustmentBody`\n\n```ts\ntype CreateAbsenceAdjustmentBody = {\n from: string // date-time\n to: string // date-time\n absent: boolean\n status: "oof" | "busy"\n type?: string\n reason?: string\n}\n```\n\n### `PatchAbsenceAdjustmentBody`\n\n```ts\ntype PatchAbsenceAdjustmentBody = {\n from?: string // date-time\n to?: string // date-time\n absent?: boolean\n status?: "oof" | "busy"\n type?: string\n reason?: string\n}\n```\n\n### `ExternalCalendar`\n\n```ts\ntype ExternalCalendar = {\n provider: "outlook" | "google"\n last_synced_at: string // date-time\n}\n```\n\n### `WorkingHours`\n\nRecurring weekly working hours of a user. The absence of a record means the user is treated as always available.\n\n```ts\ntype WorkingHours = {\n monday: Array<{\n start: string\n end: string\n }>\n tuesday: Array<{\n start: string\n end: string\n }>\n wednesday: Array<{\n start: string\n end: string\n }>\n thursday: Array<{\n start: string\n end: string\n }>\n friday: Array<{\n start: string\n end: string\n }>\n saturday: Array<{\n start: string\n end: string\n }>\n sunday: Array<{\n start: string\n end: string\n }>\n timezone: string\n user_id: string\n updated_by: string\n created_at: string // date-time\n updated_at: string // date-time\n}\n```\n\n### `UpsertWorkingHoursBody`\n\nFull replacement of the working-hours record. All weekdays are required; an empty array means a day off. Users without a working-hours record are treated as always available.\n\n```ts\ntype UpsertWorkingHoursBody = {\n monday: Array<{\n start: string\n end: string\n }>\n tuesday: Array<{\n start: string\n end: string\n }>\n wednesday: Array<{\n start: string\n end: string\n }>\n thursday: Array<{\n start: string\n end: string\n }>\n friday: Array<{\n start: string\n end: string\n }>\n saturday: Array<{\n start: string\n end: string\n }>\n sunday: Array<{\n start: string\n end: string\n }>\n timezone?: string\n}\n```\n\n### `TimeWindow`\n\nA wall-clock working window within a single day.\n\n```ts\ntype TimeWindow = {\n start: string\n end: string\n}\n```\n\n### `Calendar`\n\n```ts\ntype Calendar = {\n _id: string\n _schema: "calendar"\n _org: string\n _title?: string\n name: string\n description?: string\n color?: string\n is_default: boolean\n read_only: boolean\n owner_email?: string // email\n source: {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_calendar_id?: string\n last_synced_at?: string // date-time\n }\n _created_at?: string // date-time\n _updated_at?: string // date-time\n}\n```\n\n### `CalendarSource`\n\n```ts\ntype CalendarSource = {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_calendar_id?: string\n last_synced_at?: string // date-time\n}\n```\n\n### `Provider`\n\nNull for native epilot calendars\n\n```ts\ntype Provider = "outlook" | "google" | null\n```\n\n### `CalendarCreateBody`\n\n```ts\ntype CalendarCreateBody = {\n name: string\n description?: string\n color?: string\n}\n```\n\n### `AddOutlookCalendarRequest`\n\n```ts\ntype AddOutlookCalendarRequest = {\n provider_calendar_id: string\n name?: string\n}\n```\n\n### `AvailableOutlookCalendar`\n\n```ts\ntype AvailableOutlookCalendar = {\n provider_calendar_id: string\n name: string\n color?: string\n is_default?: boolean\n can_edit?: boolean\n owner?: string\n}\n```\n\n### `CalendarPatchBody`\n\n```ts\ntype CalendarPatchBody = {\n name?: string\n description?: string\n color?: string\n}\n```\n\n### `CalendarEvent`\n\n```ts\ntype CalendarEvent = {\n _id: string\n _schema: "calendar_event"\n _org: string\n _title?: string\n _tags?: string[]\n calendar_id: string\n event_type: "singleInstance" | "occurrence" | "exception" | "seriesMaster"\n description?: string\n start_time: string // date-time\n end_time: string // date-time\n timezone: string\n is_all_day: boolean\n location?: string\n status: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n busy: boolean\n is_cancelled: boolean\n is_draft: boolean\n sensitivity: "normal" | "personal" | "private" | "confidential"\n importance: "low" | "normal" | "high"\n is_online_meeting: boolean\n online_meeting_url?: string // uri\n web_link?: string // uri\n response_status: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n organizer_email?: string // email\n attendees?: Array<{\n email: string // email\n name?: string\n response: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n type: "required" | "optional" | "resource"\n }>\n metadata?: Record<string, unknown>\n is_recurring: boolean\n series_master_id?: string\n source: {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_event_id?: string\n provider_event_url?: string // uri\n last_synced_at?: string // date-time\n etag?: string\n }\n _created_at?: string // date-time\n _updated_at?: string // date-time\n}\n```\n\n### `EventType`\n\n```ts\ntype EventType = "singleInstance" | "occurrence" | "exception" | "seriesMaster"\n```\n\n### `EventStatus`\n\nFree/busy state derived from provider `showAs`\n\n```ts\ntype EventStatus = "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n```\n\n### `Sensitivity`\n\n```ts\ntype Sensitivity = "normal" | "personal" | "private" | "confidential"\n```\n\n### `Importance`\n\n```ts\ntype Importance = "low" | "normal" | "high"\n```\n\n### `ResponseStatus`\n\nCaller\'s response to the invite\n\n```ts\ntype ResponseStatus = "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n```\n\n### `Attendee`\n\n```ts\ntype Attendee = {\n email: string // email\n name?: string\n response: "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded"\n type: "required" | "optional" | "resource"\n}\n```\n\n### `EventSource`\n\n```ts\ntype EventSource = {\n type: "native" | "synced"\n provider?: "outlook" | "google" | null\n provider_event_id?: string\n provider_event_url?: string // uri\n last_synced_at?: string // date-time\n etag?: string\n}\n```\n\n### `CalendarEventCreateBody`\n\n```ts\ntype CalendarEventCreateBody = {\n calendar_id: string\n description?: string\n start_time: string // date-time\n end_time: string // date-time\n timezone: string\n is_all_day: boolean\n location?: string\n status: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n sensitivity: "normal" | "personal" | "private" | "confidential"\n metadata?: Record<string, unknown>\n _title: string\n}\n```\n\n### `CalendarEventPatchBody`\n\n```ts\ntype CalendarEventPatchBody = {\n description?: string\n start_time?: string // date-time\n end_time?: string // date-time\n timezone?: string\n is_all_day?: boolean\n location?: string\n status?: "free" | "tentative" | "busy" | "oof" | "workingElsewhere" | "unknown"\n is_cancelled?: boolean\n sensitivity?: "normal" | "personal" | "private" | "confidential"\n _title?: string\n}\n```\n\n### `ShareEventBody`\n\n```ts\ntype ShareEventBody = {\n user_id: string\n}\n```\n';
5
5
  export {
6
6
  calendar_default as default
7
7
  };
@@ -120,7 +120,7 @@ declare namespace Components {
120
120
  */
121
121
  is_default: boolean;
122
122
  /**
123
- * True if the caller cannot modify events in this calendar
123
+ * True if the caller cannot create, update, or delete events in this calendar
124
124
  */
125
125
  read_only: boolean;
126
126
  owner_email?: string | null; // email
@@ -179,7 +179,14 @@ declare namespace Components {
179
179
  * Convenience flag, true when status is busy/oof/tentative
180
180
  */
181
181
  busy: boolean;
182
+ /**
183
+ * Whether the event was cancelled but still exists
184
+ */
182
185
  is_cancelled: boolean;
186
+ /**
187
+ * Whether the event is saved as a draft
188
+ */
189
+ is_draft: boolean;
183
190
  sensitivity: Sensitivity;
184
191
  importance: Importance;
185
192
  is_online_meeting: boolean;
@@ -197,6 +204,9 @@ declare namespace Components {
197
204
  * Null when sensitivity is private or confidential
198
205
  */
199
206
  attendees?: Attendee[] | null;
207
+ metadata?: {
208
+ [name: string]: any;
209
+ } | null;
200
210
  is_recurring: boolean;
201
211
  /**
202
212
  * ID of the recurring series this occurrence belongs to
@@ -231,6 +241,9 @@ declare namespace Components {
231
241
  location?: string | null;
232
242
  status: /* Free/busy state derived from provider `showAs` */ EventStatus;
233
243
  sensitivity: Sensitivity;
244
+ metadata?: {
245
+ [name: string]: any;
246
+ } | null;
234
247
  _title: string;
235
248
  }
236
249
  export interface CalendarEventPatchBody {
@@ -253,6 +266,10 @@ declare namespace Components {
253
266
  is_all_day?: boolean;
254
267
  location?: string | null;
255
268
  status?: /* Free/busy state derived from provider `showAs` */ EventStatus;
269
+ /**
270
+ * Whether the event was cancelled but still exists
271
+ */
272
+ is_cancelled?: boolean;
256
273
  sensitivity?: Sensitivity;
257
274
  _title?: string;
258
275
  }
@@ -1251,7 +1268,6 @@ declare namespace Paths {
1251
1268
  namespace Responses {
1252
1269
  export interface $204 {
1253
1270
  }
1254
- export type $403 = Components.Schemas.Error;
1255
1271
  export type $404 = Components.Schemas.Error;
1256
1272
  }
1257
1273
  }
@@ -1658,7 +1674,6 @@ declare namespace Paths {
1658
1674
  namespace Responses {
1659
1675
  export type $200 = Components.Schemas.Calendar;
1660
1676
  export type $400 = Components.Schemas.Error;
1661
- export type $403 = Components.Schemas.Error;
1662
1677
  export type $404 = Components.Schemas.Error;
1663
1678
  }
1664
1679
  }
@@ -1893,7 +1908,7 @@ interface OperationMethods {
1893
1908
  /**
1894
1909
  * updateCalendar - updateCalendar
1895
1910
  *
1896
- * Update fields on a calendar.
1911
+ * Update local calendar details. Changes to synced calendars do not modify the provider calendar.
1897
1912
  */
1898
1913
  'updateCalendar'(
1899
1914
  parameters?: Parameters<Paths.UpdateCalendar.PathParameters> | null,
@@ -1903,7 +1918,7 @@ interface OperationMethods {
1903
1918
  /**
1904
1919
  * deleteCalendar - deleteCalendar
1905
1920
  *
1906
- * Delete a native epilot calendar and its events.
1921
+ * Delete a native epilot calendar or disconnect a synced calendar, including its locally stored events.
1907
1922
  */
1908
1923
  'deleteCalendar'(
1909
1924
  parameters?: Parameters<Paths.DeleteCalendar.PathParameters> | null,
@@ -2220,7 +2235,7 @@ interface PathsDictionary {
2220
2235
  /**
2221
2236
  * updateCalendar - updateCalendar
2222
2237
  *
2223
- * Update fields on a calendar.
2238
+ * Update local calendar details. Changes to synced calendars do not modify the provider calendar.
2224
2239
  */
2225
2240
  'patch'(
2226
2241
  parameters?: Parameters<Paths.UpdateCalendar.PathParameters> | null,
@@ -2230,7 +2245,7 @@ interface PathsDictionary {
2230
2245
  /**
2231
2246
  * deleteCalendar - deleteCalendar
2232
2247
  *
2233
- * Delete a native epilot calendar and its events.
2248
+ * Delete a native epilot calendar or disconnect a synced calendar, including its locally stored events.
2234
2249
  */
2235
2250
  'delete'(
2236
2251
  parameters?: Parameters<Paths.DeleteCalendar.PathParameters> | null,