@epilot/sdk 2.4.3 → 2.4.4

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/README.md +1 -0
  2. package/definitions/app-runtime.json +1 -1
  3. package/definitions/app.json +346 -10
  4. package/definitions/calendar-runtime.json +1 -0
  5. package/definitions/calendar.json +675 -0
  6. package/definitions/customer-portal.json +29 -0
  7. package/definitions/notes.json +175 -130
  8. package/definitions/pricing.json +5 -1
  9. package/dist/README-46VYEGGW.js +7 -0
  10. package/dist/README-IVBISSWB.cjs +7 -0
  11. package/dist/{_index-HE4B6FOA.js → _index-5FB6F5YY.js} +3 -0
  12. package/dist/{_index-55HAH24D.cjs → _index-DB2VV4PQ.cjs} +4 -1
  13. package/dist/apis/access-token.cjs +6 -6
  14. package/dist/apis/access-token.js +1 -1
  15. package/dist/apis/address-suggestions.cjs +6 -6
  16. package/dist/apis/address-suggestions.js +1 -1
  17. package/dist/apis/address.cjs +6 -6
  18. package/dist/apis/address.js +1 -1
  19. package/dist/apis/ai-agents.cjs +6 -6
  20. package/dist/apis/ai-agents.js +1 -1
  21. package/dist/apis/app.cjs +6 -6
  22. package/dist/apis/app.js +1 -1
  23. package/dist/apis/audit-logs.cjs +6 -6
  24. package/dist/apis/audit-logs.js +1 -1
  25. package/dist/apis/automation.cjs +6 -6
  26. package/dist/apis/automation.js +1 -1
  27. package/dist/apis/billing.cjs +6 -6
  28. package/dist/apis/billing.js +1 -1
  29. package/dist/apis/blueprint-manifest.cjs +6 -6
  30. package/dist/apis/blueprint-manifest.js +1 -1
  31. package/dist/apis/calendar.cjs +38 -0
  32. package/dist/apis/calendar.d.cts +18 -0
  33. package/dist/apis/calendar.d.ts +18 -0
  34. package/dist/apis/calendar.js +38 -0
  35. package/dist/apis/configuration-hub.cjs +6 -6
  36. package/dist/apis/configuration-hub.js +1 -1
  37. package/dist/apis/consent.cjs +6 -6
  38. package/dist/apis/consent.js +1 -1
  39. package/dist/apis/customer-portal.cjs +6 -6
  40. package/dist/apis/customer-portal.js +1 -1
  41. package/dist/apis/dashboard.cjs +6 -6
  42. package/dist/apis/dashboard.js +1 -1
  43. package/dist/apis/data-governance.cjs +6 -6
  44. package/dist/apis/data-governance.js +1 -1
  45. package/dist/apis/deduplication.cjs +6 -6
  46. package/dist/apis/deduplication.js +1 -1
  47. package/dist/apis/design.cjs +6 -6
  48. package/dist/apis/design.js +1 -1
  49. package/dist/apis/document.cjs +6 -6
  50. package/dist/apis/document.js +1 -1
  51. package/dist/apis/email-settings.cjs +6 -6
  52. package/dist/apis/email-settings.js +1 -1
  53. package/dist/apis/email-template.cjs +6 -6
  54. package/dist/apis/email-template.js +1 -1
  55. package/dist/apis/entity-mapping.cjs +6 -6
  56. package/dist/apis/entity-mapping.js +1 -1
  57. package/dist/apis/entity.cjs +6 -6
  58. package/dist/apis/entity.js +1 -1
  59. package/dist/apis/environments.cjs +6 -6
  60. package/dist/apis/environments.js +1 -1
  61. package/dist/apis/event-catalog.cjs +6 -6
  62. package/dist/apis/event-catalog.js +1 -1
  63. package/dist/apis/file.cjs +6 -6
  64. package/dist/apis/file.js +1 -1
  65. package/dist/apis/iban.cjs +6 -6
  66. package/dist/apis/iban.js +1 -1
  67. package/dist/apis/integration-toolkit.cjs +6 -6
  68. package/dist/apis/integration-toolkit.js +1 -1
  69. package/dist/apis/journey.cjs +6 -6
  70. package/dist/apis/journey.js +1 -1
  71. package/dist/apis/kanban.cjs +6 -6
  72. package/dist/apis/kanban.js +1 -1
  73. package/dist/apis/message.cjs +6 -6
  74. package/dist/apis/message.js +1 -1
  75. package/dist/apis/metering.cjs +6 -6
  76. package/dist/apis/metering.js +1 -1
  77. package/dist/apis/notes.cjs +6 -6
  78. package/dist/apis/notes.js +1 -1
  79. package/dist/apis/notification.cjs +6 -6
  80. package/dist/apis/notification.js +1 -1
  81. package/dist/apis/organization.cjs +6 -6
  82. package/dist/apis/organization.js +1 -1
  83. package/dist/apis/partner-directory.cjs +6 -6
  84. package/dist/apis/partner-directory.js +1 -1
  85. package/dist/apis/permissions.cjs +6 -6
  86. package/dist/apis/permissions.js +1 -1
  87. package/dist/apis/pricing-tier.cjs +6 -6
  88. package/dist/apis/pricing-tier.js +1 -1
  89. package/dist/apis/pricing.cjs +6 -6
  90. package/dist/apis/pricing.js +1 -1
  91. package/dist/apis/purpose.cjs +6 -6
  92. package/dist/apis/purpose.js +1 -1
  93. package/dist/apis/query.cjs +6 -6
  94. package/dist/apis/query.js +1 -1
  95. package/dist/apis/sandbox.cjs +6 -6
  96. package/dist/apis/sandbox.js +1 -1
  97. package/dist/apis/sharing.cjs +6 -6
  98. package/dist/apis/sharing.js +1 -1
  99. package/dist/apis/submission.cjs +6 -6
  100. package/dist/apis/submission.js +1 -1
  101. package/dist/apis/target.cjs +6 -6
  102. package/dist/apis/target.js +1 -1
  103. package/dist/apis/targeting.cjs +6 -6
  104. package/dist/apis/targeting.js +1 -1
  105. package/dist/apis/template-variables.cjs +6 -6
  106. package/dist/apis/template-variables.js +1 -1
  107. package/dist/apis/user.cjs +6 -6
  108. package/dist/apis/user.js +1 -1
  109. package/dist/apis/validation-rules.cjs +6 -6
  110. package/dist/apis/validation-rules.js +1 -1
  111. package/dist/apis/webhooks.cjs +6 -6
  112. package/dist/apis/webhooks.js +1 -1
  113. package/dist/apis/workflow-definition.cjs +6 -6
  114. package/dist/apis/workflow-definition.js +1 -1
  115. package/dist/apis/workflow.cjs +6 -6
  116. package/dist/apis/workflow.js +1 -1
  117. package/dist/bin/cli.js +1 -1
  118. package/dist/calendar-2YDAYG7S.cjs +7 -0
  119. package/dist/calendar-ACFIHQ2N.js +7 -0
  120. package/dist/calendar-runtime-6CMMEQMG.js +5 -0
  121. package/dist/calendar-runtime-G4SN5PDY.cjs +5 -0
  122. package/dist/calendar.d-BEjLDagH.d.cts +353 -0
  123. package/dist/calendar.d-BEjLDagH.d.ts +353 -0
  124. package/dist/{chunk-AM5TSEMU.cjs → chunk-CD4OX2U6.cjs} +4 -2
  125. package/dist/chunk-CKLEBO4K.cjs +14 -0
  126. package/dist/chunk-JNH37UUH.js +14 -0
  127. package/dist/{chunk-M25MI6ZX.js → chunk-TSV242UN.js} +4 -2
  128. package/dist/index.cjs +25 -17
  129. package/dist/index.d.cts +82 -80
  130. package/dist/index.d.ts +82 -80
  131. package/dist/index.js +21 -13
  132. package/dist/{js-yaml-DLCVPJ7G.js → js-yaml-UPZKYVRY.js} +15 -17
  133. package/docs/calendar.md +441 -0
  134. package/package.json +10 -1
  135. package/dist/README-6MG272KM.cjs +0 -7
  136. package/dist/README-7N542PBL.js +0 -7
@@ -0,0 +1,675 @@
1
+ {
2
+ "openapi": "3.0.3",
3
+ "info": {
4
+ "title": "Calendar API",
5
+ "version": "0.1.0",
6
+ "description": "epilot's calendar API.\n\nExposes calendars and events as first-class epilot resources.\nToday, data is sourced from external providers (Microsoft 365, Google Calendar) synced into epilot.\nIn the future, epilot will also host native calendars created directly in the platform.\n\nThe provider is an implementation detail surfaced only through each resource's `source` field.\nConsumers interact with calendars and events through the same API regardless of origin."
7
+ },
8
+ "tags": [
9
+ {
10
+ "name": "Calendars",
11
+ "description": "User and organization calendars"
12
+ },
13
+ {
14
+ "name": "Events",
15
+ "description": "Calendar events"
16
+ }
17
+ ],
18
+ "servers": [
19
+ {
20
+ "url": "https://calendar.sls.epilot.io"
21
+ }
22
+ ],
23
+ "security": [
24
+ {
25
+ "EpilotAuth": []
26
+ },
27
+ {
28
+ "EpilotOrg": []
29
+ }
30
+ ],
31
+ "paths": {
32
+ "/v1/calendar": {
33
+ "get": {
34
+ "operationId": "listCalendars",
35
+ "summary": "listCalendars",
36
+ "description": "List calendars visible to the caller.",
37
+ "tags": [
38
+ "Calendars"
39
+ ],
40
+ "parameters": [
41
+ {
42
+ "in": "query",
43
+ "name": "size",
44
+ "schema": {
45
+ "type": "integer",
46
+ "minimum": 1,
47
+ "maximum": 250
48
+ }
49
+ },
50
+ {
51
+ "in": "query",
52
+ "name": "cursor",
53
+ "description": "Opaque cursor from a previous response",
54
+ "schema": {
55
+ "type": "string",
56
+ "description": "Opaque cursor from a previous response"
57
+ }
58
+ }
59
+ ],
60
+ "responses": {
61
+ "200": {
62
+ "description": "List of calendars",
63
+ "content": {
64
+ "application/json": {
65
+ "schema": {
66
+ "type": "object",
67
+ "properties": {
68
+ "results": {
69
+ "type": "array",
70
+ "items": {
71
+ "$ref": "#/components/schemas/Calendar"
72
+ }
73
+ },
74
+ "next_cursor": {
75
+ "type": "string",
76
+ "nullable": true
77
+ }
78
+ },
79
+ "required": [
80
+ "results"
81
+ ]
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }
88
+ },
89
+ "/v1/calendar/{calendar_id}": {
90
+ "get": {
91
+ "operationId": "getCalendar",
92
+ "summary": "getCalendar",
93
+ "description": "Get a single calendar by its epilot ID.",
94
+ "tags": [
95
+ "Calendars"
96
+ ],
97
+ "parameters": [
98
+ {
99
+ "in": "path",
100
+ "name": "calendar_id",
101
+ "schema": {
102
+ "type": "string"
103
+ },
104
+ "required": true
105
+ }
106
+ ],
107
+ "responses": {
108
+ "200": {
109
+ "description": "Calendar",
110
+ "content": {
111
+ "application/json": {
112
+ "schema": {
113
+ "$ref": "#/components/schemas/Calendar"
114
+ }
115
+ }
116
+ }
117
+ },
118
+ "404": {
119
+ "description": "Resource not found",
120
+ "content": {
121
+ "application/json": {
122
+ "schema": {
123
+ "$ref": "#/components/schemas/Error"
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ },
131
+ "/v1/calendar/events": {
132
+ "get": {
133
+ "operationId": "listEvents",
134
+ "summary": "listEvents",
135
+ "description": "List events in a time window. Recurring events are returned as expanded occurrences – each instance appears as its own event.",
136
+ "tags": [
137
+ "Events"
138
+ ],
139
+ "parameters": [
140
+ {
141
+ "in": "query",
142
+ "name": "from",
143
+ "description": "Start of the time window (inclusive)",
144
+ "schema": {
145
+ "type": "string",
146
+ "format": "date-time",
147
+ "description": "Start of the time window (inclusive)"
148
+ },
149
+ "required": true
150
+ },
151
+ {
152
+ "in": "query",
153
+ "name": "to",
154
+ "description": "End of the time window (exclusive)",
155
+ "schema": {
156
+ "type": "string",
157
+ "format": "date-time",
158
+ "description": "End of the time window (exclusive)"
159
+ },
160
+ "required": true
161
+ },
162
+ {
163
+ "in": "query",
164
+ "name": "calendar_id",
165
+ "description": "Filter to a single calendar. Omit to query across all accessible calendars.",
166
+ "schema": {
167
+ "type": "string",
168
+ "description": "Filter to a single calendar. Omit to query across all accessible calendars."
169
+ }
170
+ },
171
+ {
172
+ "in": "query",
173
+ "name": "size",
174
+ "schema": {
175
+ "type": "integer",
176
+ "minimum": 1,
177
+ "maximum": 250
178
+ }
179
+ },
180
+ {
181
+ "in": "query",
182
+ "name": "cursor",
183
+ "schema": {
184
+ "type": "string"
185
+ }
186
+ }
187
+ ],
188
+ "responses": {
189
+ "200": {
190
+ "description": "List of events",
191
+ "content": {
192
+ "application/json": {
193
+ "schema": {
194
+ "type": "object",
195
+ "properties": {
196
+ "results": {
197
+ "type": "array",
198
+ "items": {
199
+ "$ref": "#/components/schemas/CalendarEvent"
200
+ }
201
+ },
202
+ "next_cursor": {
203
+ "type": "string",
204
+ "nullable": true
205
+ }
206
+ },
207
+ "required": [
208
+ "results"
209
+ ]
210
+ }
211
+ }
212
+ }
213
+ },
214
+ "400": {
215
+ "description": "Invalid request",
216
+ "content": {
217
+ "application/json": {
218
+ "schema": {
219
+ "$ref": "#/components/schemas/Error"
220
+ }
221
+ }
222
+ }
223
+ }
224
+ }
225
+ }
226
+ },
227
+ "/v1/calendar/events/{event_id}": {
228
+ "get": {
229
+ "operationId": "getEvent",
230
+ "summary": "getEvent",
231
+ "description": "Get a single event by its epilot ID.",
232
+ "tags": [
233
+ "Events"
234
+ ],
235
+ "parameters": [
236
+ {
237
+ "in": "path",
238
+ "name": "event_id",
239
+ "schema": {
240
+ "type": "string"
241
+ },
242
+ "required": true
243
+ }
244
+ ],
245
+ "responses": {
246
+ "200": {
247
+ "description": "Event",
248
+ "content": {
249
+ "application/json": {
250
+ "schema": {
251
+ "$ref": "#/components/schemas/CalendarEvent"
252
+ }
253
+ }
254
+ }
255
+ },
256
+ "404": {
257
+ "description": "Resource not found",
258
+ "content": {
259
+ "application/json": {
260
+ "schema": {
261
+ "$ref": "#/components/schemas/Error"
262
+ }
263
+ }
264
+ }
265
+ }
266
+ }
267
+ }
268
+ }
269
+ },
270
+ "components": {
271
+ "securitySchemes": {
272
+ "EpilotAuth": {
273
+ "type": "http",
274
+ "scheme": "bearer",
275
+ "description": "Authorization header with epilot OAuth2 bearer token",
276
+ "bearerFormat": "JWT"
277
+ },
278
+ "EpilotOrg": {
279
+ "type": "apiKey",
280
+ "in": "header",
281
+ "name": "x-epilot-org-id"
282
+ }
283
+ },
284
+ "schemas": {
285
+ "Calendar": {
286
+ "type": "object",
287
+ "properties": {
288
+ "_id": {
289
+ "type": "string",
290
+ "description": "epilot calendar ID"
291
+ },
292
+ "_schema": {
293
+ "type": "string",
294
+ "enum": [
295
+ "calendar"
296
+ ]
297
+ },
298
+ "_org": {
299
+ "type": "string",
300
+ "description": "Organization the calendar belongs to"
301
+ },
302
+ "_title": {
303
+ "type": "string",
304
+ "description": "Computed display title"
305
+ },
306
+ "name": {
307
+ "type": "string"
308
+ },
309
+ "description": {
310
+ "type": "string",
311
+ "nullable": true
312
+ },
313
+ "color": {
314
+ "type": "string",
315
+ "nullable": true,
316
+ "description": "Hex color (e.g. \"#3b82f6\") or provider-defined named color"
317
+ },
318
+ "is_default": {
319
+ "type": "boolean",
320
+ "description": "True if this is the user's primary calendar"
321
+ },
322
+ "read_only": {
323
+ "type": "boolean",
324
+ "description": "True if the caller cannot modify events in this calendar"
325
+ },
326
+ "owner_email": {
327
+ "type": "string",
328
+ "nullable": true,
329
+ "format": "email"
330
+ },
331
+ "source": {
332
+ "$ref": "#/components/schemas/CalendarSource"
333
+ },
334
+ "_created_at": {
335
+ "type": "string",
336
+ "format": "date-time"
337
+ },
338
+ "_updated_at": {
339
+ "type": "string",
340
+ "format": "date-time"
341
+ }
342
+ },
343
+ "required": [
344
+ "_id",
345
+ "_schema",
346
+ "_org",
347
+ "name",
348
+ "is_default",
349
+ "read_only",
350
+ "source"
351
+ ]
352
+ },
353
+ "CalendarSource": {
354
+ "type": "object",
355
+ "properties": {
356
+ "type": {
357
+ "type": "string",
358
+ "enum": [
359
+ "native",
360
+ "synced"
361
+ ],
362
+ "description": "`native` = hosted by epilot. `synced` = mirrored from an external provider."
363
+ },
364
+ "provider": {
365
+ "$ref": "#/components/schemas/Provider"
366
+ },
367
+ "provider_calendar_id": {
368
+ "type": "string",
369
+ "nullable": true
370
+ },
371
+ "last_synced_at": {
372
+ "type": "string",
373
+ "nullable": true,
374
+ "format": "date-time"
375
+ }
376
+ },
377
+ "required": [
378
+ "type"
379
+ ]
380
+ },
381
+ "Provider": {
382
+ "type": "string",
383
+ "nullable": true,
384
+ "enum": [
385
+ "outlook",
386
+ "google",
387
+ null
388
+ ],
389
+ "description": "Null for native epilot calendars"
390
+ },
391
+ "Error": {
392
+ "type": "object",
393
+ "properties": {
394
+ "message": {
395
+ "type": "string"
396
+ },
397
+ "code": {
398
+ "type": "string"
399
+ }
400
+ },
401
+ "required": [
402
+ "message"
403
+ ]
404
+ },
405
+ "CalendarEvent": {
406
+ "type": "object",
407
+ "properties": {
408
+ "_id": {
409
+ "type": "string",
410
+ "description": "epilot event ID"
411
+ },
412
+ "_schema": {
413
+ "type": "string",
414
+ "enum": [
415
+ "calendar_event"
416
+ ]
417
+ },
418
+ "_org": {
419
+ "type": "string"
420
+ },
421
+ "_title": {
422
+ "type": "string",
423
+ "nullable": true,
424
+ "description": "Null when sensitivity is private or confidential"
425
+ },
426
+ "_tags": {
427
+ "type": "array",
428
+ "items": {
429
+ "type": "string"
430
+ },
431
+ "description": "Provider categories (Outlook) or colours (Google) as epilot tags"
432
+ },
433
+ "calendar_id": {
434
+ "type": "string",
435
+ "description": "epilot calendar this event belongs to"
436
+ },
437
+ "event_type": {
438
+ "$ref": "#/components/schemas/EventType"
439
+ },
440
+ "description": {
441
+ "type": "string",
442
+ "nullable": true,
443
+ "description": "Preview of the event body, truncated to 255 chars",
444
+ "maxLength": 255
445
+ },
446
+ "start_time": {
447
+ "type": "string",
448
+ "format": "date-time",
449
+ "description": "Event start in UTC"
450
+ },
451
+ "end_time": {
452
+ "type": "string",
453
+ "format": "date-time",
454
+ "description": "Event end in UTC"
455
+ },
456
+ "timezone": {
457
+ "type": "string",
458
+ "description": "IANA timezone of the original event (for display)"
459
+ },
460
+ "is_all_day": {
461
+ "type": "boolean"
462
+ },
463
+ "location": {
464
+ "type": "string",
465
+ "nullable": true
466
+ },
467
+ "status": {
468
+ "$ref": "#/components/schemas/EventStatus"
469
+ },
470
+ "busy": {
471
+ "type": "boolean",
472
+ "description": "Convenience flag, true when status is busy/oof/tentative"
473
+ },
474
+ "is_cancelled": {
475
+ "type": "boolean"
476
+ },
477
+ "sensitivity": {
478
+ "$ref": "#/components/schemas/Sensitivity"
479
+ },
480
+ "importance": {
481
+ "$ref": "#/components/schemas/Importance"
482
+ },
483
+ "is_online_meeting": {
484
+ "type": "boolean"
485
+ },
486
+ "online_meeting_url": {
487
+ "type": "string",
488
+ "nullable": true,
489
+ "format": "uri",
490
+ "description": "Teams, Meet, Zoom, or similar join URL"
491
+ },
492
+ "web_link": {
493
+ "type": "string",
494
+ "nullable": true,
495
+ "format": "uri",
496
+ "description": "Deep link to open the event in the originating provider"
497
+ },
498
+ "response_status": {
499
+ "$ref": "#/components/schemas/ResponseStatus"
500
+ },
501
+ "organizer_email": {
502
+ "type": "string",
503
+ "nullable": true,
504
+ "format": "email"
505
+ },
506
+ "attendees": {
507
+ "type": "array",
508
+ "nullable": true,
509
+ "items": {
510
+ "$ref": "#/components/schemas/Attendee"
511
+ },
512
+ "description": "Null when sensitivity is private or confidential"
513
+ },
514
+ "is_recurring": {
515
+ "type": "boolean"
516
+ },
517
+ "series_master_id": {
518
+ "type": "string",
519
+ "nullable": true,
520
+ "description": "ID of the recurring series this occurrence belongs to"
521
+ },
522
+ "source": {
523
+ "$ref": "#/components/schemas/EventSource"
524
+ },
525
+ "_created_at": {
526
+ "type": "string",
527
+ "format": "date-time"
528
+ },
529
+ "_updated_at": {
530
+ "type": "string",
531
+ "format": "date-time"
532
+ }
533
+ },
534
+ "required": [
535
+ "_id",
536
+ "_schema",
537
+ "_org",
538
+ "calendar_id",
539
+ "event_type",
540
+ "start_time",
541
+ "end_time",
542
+ "timezone",
543
+ "is_all_day",
544
+ "status",
545
+ "busy",
546
+ "is_cancelled",
547
+ "sensitivity",
548
+ "importance",
549
+ "is_online_meeting",
550
+ "response_status",
551
+ "is_recurring",
552
+ "source"
553
+ ]
554
+ },
555
+ "EventType": {
556
+ "type": "string",
557
+ "enum": [
558
+ "singleInstance",
559
+ "occurrence",
560
+ "exception",
561
+ "seriesMaster"
562
+ ]
563
+ },
564
+ "EventStatus": {
565
+ "type": "string",
566
+ "enum": [
567
+ "free",
568
+ "tentative",
569
+ "busy",
570
+ "oof",
571
+ "workingElsewhere",
572
+ "unknown"
573
+ ],
574
+ "description": "Free/busy state derived from provider `showAs`"
575
+ },
576
+ "Sensitivity": {
577
+ "type": "string",
578
+ "enum": [
579
+ "normal",
580
+ "personal",
581
+ "private",
582
+ "confidential"
583
+ ]
584
+ },
585
+ "Importance": {
586
+ "type": "string",
587
+ "enum": [
588
+ "low",
589
+ "normal",
590
+ "high"
591
+ ]
592
+ },
593
+ "ResponseStatus": {
594
+ "type": "string",
595
+ "enum": [
596
+ "none",
597
+ "organizer",
598
+ "tentativelyAccepted",
599
+ "accepted",
600
+ "declined",
601
+ "notResponded"
602
+ ],
603
+ "description": "Caller's response to the invite"
604
+ },
605
+ "Attendee": {
606
+ "type": "object",
607
+ "properties": {
608
+ "email": {
609
+ "type": "string",
610
+ "format": "email"
611
+ },
612
+ "name": {
613
+ "type": "string",
614
+ "nullable": true
615
+ },
616
+ "response": {
617
+ "$ref": "#/components/schemas/ResponseStatus"
618
+ },
619
+ "type": {
620
+ "type": "string",
621
+ "enum": [
622
+ "required",
623
+ "optional",
624
+ "resource"
625
+ ]
626
+ }
627
+ },
628
+ "required": [
629
+ "email",
630
+ "response",
631
+ "type"
632
+ ]
633
+ },
634
+ "EventSource": {
635
+ "type": "object",
636
+ "properties": {
637
+ "type": {
638
+ "type": "string",
639
+ "enum": [
640
+ "native",
641
+ "synced"
642
+ ],
643
+ "description": "`native` = hosted by epilot. `synced` = mirrored from an external provider."
644
+ },
645
+ "provider": {
646
+ "$ref": "#/components/schemas/Provider"
647
+ },
648
+ "provider_event_id": {
649
+ "type": "string",
650
+ "nullable": true
651
+ },
652
+ "provider_event_url": {
653
+ "type": "string",
654
+ "nullable": true,
655
+ "format": "uri",
656
+ "description": "Deep link to open the event in the originating provider"
657
+ },
658
+ "last_synced_at": {
659
+ "type": "string",
660
+ "nullable": true,
661
+ "format": "date-time"
662
+ },
663
+ "etag": {
664
+ "type": "string",
665
+ "nullable": true,
666
+ "description": "Provider-supplied version tag used for conflict detection"
667
+ }
668
+ },
669
+ "required": [
670
+ "type"
671
+ ]
672
+ }
673
+ }
674
+ }
675
+ }