@beepsdev/sdk 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,612 @@
1
+ type Result<T> = {
2
+ data?: T;
3
+ error?: Error;
4
+ };
5
+ type BeepsClientConfig = {
6
+ apiKey: string;
7
+ baseURL?: string;
8
+ timeoutMs?: number;
9
+ retries?: {
10
+ attempts: number;
11
+ backoffMs: number;
12
+ };
13
+ fetch?: typeof fetch;
14
+ };
15
+ type BeepsRelayConfig = {
16
+ externalKey: string;
17
+ name: string;
18
+ description?: string;
19
+ };
20
+ type BeepsScheduleMemberConfig = {
21
+ userId: string;
22
+ } | {
23
+ email: string;
24
+ };
25
+ type BeepsScheduleConfig = {
26
+ externalKey: string;
27
+ relayExternalKey: string;
28
+ name: string;
29
+ type: "daily" | "weekly";
30
+ startDay: "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday";
31
+ startTime: string;
32
+ members?: BeepsScheduleMemberConfig[];
33
+ };
34
+ type BeepsScheduleNotifyRuleConfig = {
35
+ scheduleExternalKey: string;
36
+ notificationMethod?: "email" | "sms";
37
+ };
38
+ type BeepsWebhookRuleConfig = {
39
+ endpoint: string;
40
+ method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
41
+ headers?: Record<string, string>;
42
+ payload?: Record<string, unknown>;
43
+ timeout?: number;
44
+ };
45
+ type BeepsAgentRuleConfig = {
46
+ agentType: "devin";
47
+ integrationId?: string;
48
+ integrationProvider?: "devin" | "rhythm" | "slack" | "discord";
49
+ endpoint?: string;
50
+ config?: Record<string, unknown>;
51
+ pollInterval?: number;
52
+ maxPollAttempts?: number;
53
+ };
54
+ type BeepsRelayRuleConfig = {
55
+ externalKey: string;
56
+ relayExternalKey: string;
57
+ group?: string;
58
+ order?: number;
59
+ name: string;
60
+ ruleType: RelayRuleType;
61
+ enabled?: boolean;
62
+ config: BeepsScheduleNotifyRuleConfig | BeepsWebhookRuleConfig | BeepsAgentRuleConfig;
63
+ };
64
+ type BeepsIntegrationConfig = {
65
+ provider: "devin" | "rhythm" | "slack" | "discord";
66
+ name: string;
67
+ apiKeyEnv: string;
68
+ metadata?: Record<string, unknown>;
69
+ };
70
+ type BeepsConfig = {
71
+ version: 1;
72
+ relays?: BeepsRelayConfig[];
73
+ schedules?: BeepsScheduleConfig[];
74
+ relayRules?: BeepsRelayRuleConfig[];
75
+ integrations?: BeepsIntegrationConfig[];
76
+ };
77
+ type CreateRelayInput = {
78
+ name: string;
79
+ description?: string;
80
+ externalKey?: string;
81
+ };
82
+ type Relay = {
83
+ id: string;
84
+ organizationId: string;
85
+ name: string;
86
+ description: string;
87
+ externalKey?: string | null;
88
+ createdAt: string;
89
+ updatedAt: string;
90
+ };
91
+ type CreateScheduleInput = {
92
+ name: string;
93
+ relayId: string;
94
+ type: "daily" | "weekly";
95
+ startDay: "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday";
96
+ startTime: string;
97
+ externalKey?: string;
98
+ };
99
+ type Schedule = {
100
+ id: string;
101
+ organizationId: string;
102
+ relayId: string;
103
+ name: string;
104
+ type: "daily" | "weekly";
105
+ startDay: "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday";
106
+ startTime: string;
107
+ externalKey?: string | null;
108
+ createdAt: string;
109
+ updatedAt: string;
110
+ deletedAt?: string | null;
111
+ };
112
+ type AddScheduleMemberInput = {
113
+ userId: string;
114
+ };
115
+ type ScheduleMember = {
116
+ scheduleId: string;
117
+ userId: string;
118
+ createdAt?: string;
119
+ effectiveAt?: string;
120
+ removedAt?: string | null;
121
+ };
122
+ type GetAssignmentsParams = {
123
+ type?: "assignments";
124
+ count?: number;
125
+ } | {
126
+ type: "until";
127
+ date: string | Date;
128
+ } | {
129
+ type: "days";
130
+ count: number;
131
+ };
132
+ type ScheduleAssignment = {
133
+ userId: string;
134
+ startDate: string;
135
+ endDate: string;
136
+ assignmentNumber: number;
137
+ };
138
+ type RelayRuleType = "schedule_notify" | "webhook" | "agent";
139
+ type ScheduleNotifyConfig = {
140
+ scheduleId: string;
141
+ notificationMethod?: "email" | "sms";
142
+ };
143
+ type WebhookConfig = {
144
+ endpoint: string;
145
+ method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
146
+ headers?: Record<string, string>;
147
+ payload?: Record<string, unknown>;
148
+ timeout?: number;
149
+ };
150
+ type AgentConfig = {
151
+ agentType: "devin" | "cursor";
152
+ integrationId?: string;
153
+ endpoint?: string;
154
+ config?: Record<string, unknown>;
155
+ pollInterval?: number;
156
+ maxPollAttempts?: number;
157
+ repository?: string;
158
+ autoCreatePr?: boolean;
159
+ branchName?: string;
160
+ autoBranch?: boolean;
161
+ model?: string;
162
+ };
163
+ type RelayRuleConfig = ScheduleNotifyConfig | WebhookConfig | AgentConfig;
164
+ type CreateRelayRuleInput = {
165
+ externalKey?: string;
166
+ name: string;
167
+ ruleType: RelayRuleType;
168
+ group?: string;
169
+ order?: number;
170
+ config: RelayRuleConfig;
171
+ enabled?: boolean;
172
+ };
173
+ type UpdateRelayRuleInput = {
174
+ name?: string;
175
+ ruleType?: RelayRuleType;
176
+ group?: string;
177
+ order?: number;
178
+ config?: RelayRuleConfig;
179
+ enabled?: boolean;
180
+ };
181
+ type RelayRule = {
182
+ id: string;
183
+ organizationId: string;
184
+ relayId: string;
185
+ group: string;
186
+ externalKey?: string | null;
187
+ name: string;
188
+ order: number;
189
+ ruleType: RelayRuleType;
190
+ config: Record<string, unknown>;
191
+ enabled: boolean;
192
+ createdAt: string;
193
+ updatedAt: string;
194
+ deletedAt?: string | null;
195
+ };
196
+ type RelayLintSeverity = "error" | "warning" | "info";
197
+ type RelayLintIssue = {
198
+ severity: RelayLintSeverity;
199
+ code: string;
200
+ message: string;
201
+ relayId?: string;
202
+ ruleId?: string;
203
+ scheduleId?: string;
204
+ details?: Record<string, unknown>;
205
+ };
206
+ type RelayLintResult = {
207
+ issues: RelayLintIssue[];
208
+ };
209
+ type RelayLintInput = {
210
+ simulateAt?: string;
211
+ coverageDays?: number;
212
+ };
213
+ type RelaySimulationAlertInput = {
214
+ title: string;
215
+ message?: string;
216
+ severity?: AlertSeverity;
217
+ source?: string;
218
+ externalId?: string;
219
+ metadata?: Record<string, unknown>;
220
+ };
221
+ type RelaySimulationInput = {
222
+ simulateAt: string;
223
+ alert?: RelaySimulationAlertInput;
224
+ payload?: unknown;
225
+ source?: string;
226
+ };
227
+ type RelaySimulationAlertPreview = {
228
+ title: string;
229
+ message?: string;
230
+ severity: AlertSeverity;
231
+ source: string;
232
+ externalId?: string;
233
+ metadata?: Record<string, unknown>;
234
+ };
235
+ type RelaySimulationContactMethod = {
236
+ id: string;
237
+ transport: string;
238
+ value: string;
239
+ verified: boolean;
240
+ };
241
+ type RelaySimulationOnCallUser = {
242
+ userId: string;
243
+ email: string;
244
+ assignmentNumber: number | null;
245
+ scheduleId: string;
246
+ isOverride: boolean;
247
+ overrideId?: string;
248
+ };
249
+ type RelaySimulationScheduleStep = {
250
+ ruleId: string;
251
+ ruleType: "schedule_notify";
252
+ name: string;
253
+ enabled: boolean;
254
+ scheduleId?: string;
255
+ notificationMethod?: "email" | "sms";
256
+ onCallUser?: RelaySimulationOnCallUser | null;
257
+ contactMethods: RelaySimulationContactMethod[];
258
+ };
259
+ type RelaySimulationWebhookStep = {
260
+ ruleId: string;
261
+ ruleType: "webhook";
262
+ name: string;
263
+ enabled: boolean;
264
+ endpoint: string;
265
+ method: string;
266
+ wouldSend: boolean;
267
+ };
268
+ type RelaySimulationAgentStep = {
269
+ ruleId: string;
270
+ ruleType: "agent";
271
+ name: string;
272
+ enabled: boolean;
273
+ agentType: string;
274
+ integrationId?: string;
275
+ endpoint?: string;
276
+ wouldStart: boolean;
277
+ };
278
+ type RelaySimulationUnknownStep = {
279
+ ruleId: string;
280
+ ruleType: string;
281
+ name: string;
282
+ enabled: boolean;
283
+ };
284
+ type RelaySimulationStep = RelaySimulationScheduleStep | RelaySimulationWebhookStep | RelaySimulationAgentStep | RelaySimulationUnknownStep;
285
+ type RelaySimulationGroup = {
286
+ groupName: string;
287
+ steps: RelaySimulationStep[];
288
+ };
289
+ type RelaySimulationResult = {
290
+ relayId: string;
291
+ simulateAt: string;
292
+ alertPreview: RelaySimulationAlertPreview;
293
+ groups: RelaySimulationGroup[];
294
+ issues: RelayLintIssue[];
295
+ };
296
+ type ListRelayRulesParams = {
297
+ enabled?: boolean;
298
+ ruleType?: RelayRuleType;
299
+ };
300
+ type ReorderRelayRulesInput = {
301
+ rules: Array<{
302
+ id: string;
303
+ order: number;
304
+ }>;
305
+ };
306
+ type ContactMethodTransport = "email" | "sms";
307
+ type CreateContactMethodInput = {
308
+ userId: string;
309
+ transport: ContactMethodTransport;
310
+ value: string;
311
+ };
312
+ type ContactMethod = {
313
+ id: string;
314
+ userId: string;
315
+ transport: string;
316
+ value: string;
317
+ verified: boolean;
318
+ createdAt: string;
319
+ updatedAt: string;
320
+ deletedAt?: string | null;
321
+ };
322
+ type ListContactMethodsParams = {
323
+ userId: string;
324
+ };
325
+ type DeleteContactMethodParams = {
326
+ userId: string;
327
+ };
328
+ type BeepsUser = {
329
+ userId: string;
330
+ email: string;
331
+ assignmentNumber: number | null;
332
+ scheduleId: string;
333
+ isOverride?: boolean;
334
+ overrideId?: string;
335
+ };
336
+ type CreateScheduleOverrideInput = {
337
+ userId: string;
338
+ startAt: string | Date;
339
+ endAt: string | Date;
340
+ reason?: string;
341
+ };
342
+ type UpdateScheduleOverrideInput = {
343
+ startAt?: string | Date;
344
+ endAt?: string | Date;
345
+ reason?: string;
346
+ };
347
+ type ListScheduleOverridesParams = {
348
+ startAt?: string | Date;
349
+ endAt?: string | Date;
350
+ };
351
+ type ScheduleOverride = {
352
+ id: string;
353
+ organizationId: string;
354
+ scheduleId: string;
355
+ userId: string;
356
+ startAt: string;
357
+ endAt: string;
358
+ reason?: string | null;
359
+ createdByUserId: string;
360
+ createdAt: string;
361
+ updatedAt: string;
362
+ canceledAt?: string | null;
363
+ deletedAt?: string | null;
364
+ };
365
+ type AlertSeverity = "critical" | "high" | "medium" | "low" | "info";
366
+ type Alert = {
367
+ id: string;
368
+ organizationId: string;
369
+ webhookId: string;
370
+ title: string;
371
+ message?: string | null;
372
+ severity: AlertSeverity;
373
+ source: string;
374
+ externalId?: string | null;
375
+ metadata?: Record<string, unknown> | null;
376
+ assignedToUserId?: string | null;
377
+ acknowledgedAt?: string | null;
378
+ acknowledgedBy?: string | null;
379
+ resolvedAt?: string | null;
380
+ createdAt: string;
381
+ updatedAt: string;
382
+ };
383
+ type AcknowledgeAlertInput = {
384
+ userId?: string;
385
+ };
386
+ type IntegrationProvider = "devin" | "cursor" | "slack" | "discord";
387
+ type CreateIntegrationInput = {
388
+ name: string;
389
+ provider: IntegrationProvider;
390
+ apiKey: string;
391
+ metadata?: Record<string, unknown>;
392
+ };
393
+ type UpdateIntegrationInput = {
394
+ name?: string;
395
+ apiKey?: string;
396
+ metadata?: Record<string, unknown>;
397
+ };
398
+ type Integration = {
399
+ id: string;
400
+ organizationId: string;
401
+ name: string;
402
+ provider: IntegrationProvider;
403
+ apiKey: string;
404
+ metadata?: Record<string, unknown> | null;
405
+ createdBy: string;
406
+ createdAt: string;
407
+ updatedAt: string;
408
+ deletedAt?: string | null;
409
+ };
410
+ type OrganizationMember = {
411
+ userId: string;
412
+ organizationId: string;
413
+ role: string;
414
+ email: string;
415
+ };
416
+
417
+ declare class HttpClient {
418
+ private cfg;
419
+ private _fetch;
420
+ constructor(config: BeepsClientConfig);
421
+ post<T>(path: string, body: unknown): Promise<T>;
422
+ get<T>(path: string): Promise<T>;
423
+ put<T>(path: string, body: unknown): Promise<T>;
424
+ patch<T>(path: string, body: unknown): Promise<T>;
425
+ delete<T>(path: string): Promise<T>;
426
+ private request;
427
+ private shouldRetry;
428
+ private jitterBackoff;
429
+ private sleep;
430
+ }
431
+
432
+ declare class RelayRulesResource {
433
+ private http;
434
+ constructor(http: HttpClient);
435
+ list(relayId: string, params?: ListRelayRulesParams): Promise<RelayRule[]>;
436
+ create(relayId: string, input: CreateRelayRuleInput): Promise<RelayRule>;
437
+ get(relayId: string, ruleId: string): Promise<RelayRule>;
438
+ update(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<RelayRule>;
439
+ delete(relayId: string, ruleId: string): Promise<{
440
+ success: boolean;
441
+ }>;
442
+ reorder(relayId: string, input: ReorderRelayRulesInput): Promise<RelayRule[]>;
443
+ listSafe(relayId: string, params?: ListRelayRulesParams): Promise<Result<RelayRule[]>>;
444
+ createSafe(relayId: string, input: CreateRelayRuleInput): Promise<Result<RelayRule>>;
445
+ getSafe(relayId: string, ruleId: string): Promise<Result<RelayRule>>;
446
+ updateSafe(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<Result<RelayRule>>;
447
+ deleteSafe(relayId: string, ruleId: string): Promise<Result<{
448
+ success: boolean;
449
+ }>>;
450
+ reorderSafe(relayId: string, input: ReorderRelayRulesInput): Promise<Result<RelayRule[]>>;
451
+ }
452
+
453
+ declare class RelayResource {
454
+ private http;
455
+ rules: RelayRulesResource;
456
+ constructor(http: HttpClient);
457
+ create(input: CreateRelayInput): Promise<Relay>;
458
+ list(): Promise<Relay[]>;
459
+ lint(relayId: string, input?: RelayLintInput): Promise<RelayLintResult>;
460
+ simulate(relayId: string, input: RelaySimulationInput): Promise<RelaySimulationResult>;
461
+ createSafe(input: CreateRelayInput): Promise<Result<Relay>>;
462
+ lintSafe(relayId: string, input?: RelayLintInput): Promise<Result<RelayLintResult>>;
463
+ simulateSafe(relayId: string, input: RelaySimulationInput): Promise<Result<RelaySimulationResult>>;
464
+ }
465
+
466
+ declare class ScheduleResource {
467
+ private http;
468
+ constructor(http: HttpClient);
469
+ create(input: CreateScheduleInput): Promise<Schedule>;
470
+ list(): Promise<Schedule[]>;
471
+ addMember(scheduleId: string, input: AddScheduleMemberInput): Promise<ScheduleMember>;
472
+ listMembers(scheduleId: string): Promise<ScheduleMember[]>;
473
+ listMembersSafe(scheduleId: string): Promise<Result<ScheduleMember[]>>;
474
+ removeMember(scheduleId: string, userId: string): Promise<ScheduleMember>;
475
+ getAssignments(scheduleId: string, params?: GetAssignmentsParams): Promise<ScheduleAssignment[]>;
476
+ getOnCall(scheduleId: string): Promise<BeepsUser>;
477
+ getOnCallSafe(scheduleId: string): Promise<Result<BeepsUser>>;
478
+ createOverride(scheduleId: string, input: CreateScheduleOverrideInput): Promise<ScheduleOverride>;
479
+ listOverrides(scheduleId: string, params?: ListScheduleOverridesParams): Promise<ScheduleOverride[]>;
480
+ cancelOverride(scheduleId: string, overrideId: string): Promise<ScheduleOverride>;
481
+ updateOverride(scheduleId: string, overrideId: string, input: UpdateScheduleOverrideInput): Promise<ScheduleOverride>;
482
+ }
483
+
484
+ declare class ContactMethodResource {
485
+ private http;
486
+ constructor(http: HttpClient);
487
+ list(params: ListContactMethodsParams): Promise<ContactMethod[]>;
488
+ create(input: CreateContactMethodInput): Promise<ContactMethod>;
489
+ delete(id: string, params: DeleteContactMethodParams): Promise<{
490
+ success: boolean;
491
+ }>;
492
+ listSafe(params: ListContactMethodsParams): Promise<Result<ContactMethod[]>>;
493
+ createSafe(input: CreateContactMethodInput): Promise<Result<ContactMethod>>;
494
+ deleteSafe(id: string, params: DeleteContactMethodParams): Promise<Result<{
495
+ success: boolean;
496
+ }>>;
497
+ }
498
+
499
+ declare class AlertResource {
500
+ private http;
501
+ constructor(http: HttpClient);
502
+ list(): Promise<Alert[]>;
503
+ listActive(): Promise<Alert[]>;
504
+ listResolved(): Promise<Alert[]>;
505
+ get(alertId: string): Promise<Alert>;
506
+ acknowledge(alertId: string, input?: AcknowledgeAlertInput): Promise<Alert>;
507
+ resolve(alertId: string): Promise<Alert>;
508
+ assign(alertId: string, userId: string): Promise<Alert>;
509
+ listSafe(): Promise<Result<Alert[]>>;
510
+ listActiveSafe(): Promise<Result<Alert[]>>;
511
+ listResolvedSafe(): Promise<Result<Alert[]>>;
512
+ getSafe(alertId: string): Promise<Result<Alert>>;
513
+ acknowledgeSafe(alertId: string, input?: AcknowledgeAlertInput): Promise<Result<Alert>>;
514
+ resolveSafe(alertId: string): Promise<Result<Alert>>;
515
+ assignSafe(alertId: string, userId: string): Promise<Result<Alert>>;
516
+ }
517
+
518
+ declare class IntegrationResource {
519
+ private http;
520
+ constructor(http: HttpClient);
521
+ list(): Promise<Integration[]>;
522
+ create(input: CreateIntegrationInput): Promise<Integration>;
523
+ get(integrationId: string): Promise<Integration>;
524
+ update(integrationId: string, input: UpdateIntegrationInput): Promise<Integration>;
525
+ delete(integrationId: string): Promise<{
526
+ success: boolean;
527
+ }>;
528
+ listSafe(): Promise<Result<Integration[]>>;
529
+ createSafe(input: CreateIntegrationInput): Promise<Result<Integration>>;
530
+ getSafe(integrationId: string): Promise<Result<Integration>>;
531
+ updateSafe(integrationId: string, input: UpdateIntegrationInput): Promise<Result<Integration>>;
532
+ deleteSafe(integrationId: string): Promise<Result<{
533
+ success: boolean;
534
+ }>>;
535
+ }
536
+
537
+ declare class MemberResource {
538
+ private http;
539
+ constructor(http: HttpClient);
540
+ list(): Promise<OrganizationMember[]>;
541
+ listSafe(): Promise<Result<OrganizationMember[]>>;
542
+ }
543
+
544
+ declare class BeepsClient {
545
+ relay: RelayResource;
546
+ schedule: ScheduleResource;
547
+ contactMethod: ContactMethodResource;
548
+ alert: AlertResource;
549
+ integration: IntegrationResource;
550
+ member: MemberResource;
551
+ constructor(config: BeepsClientConfig);
552
+ }
553
+
554
+ declare class BeepsError extends Error {
555
+ code?: string;
556
+ status?: number;
557
+ requestId?: string;
558
+ retryable?: boolean;
559
+ cause?: unknown;
560
+ constructor(message: string, options?: {
561
+ code?: string;
562
+ status?: number;
563
+ requestId?: string;
564
+ retryable?: boolean;
565
+ cause?: unknown;
566
+ });
567
+ toString(): string;
568
+ }
569
+ declare class AuthError extends BeepsError {
570
+ constructor(message?: string, opts?: ConstructorParameters<typeof BeepsError>[1]);
571
+ }
572
+ declare class ValidationError extends BeepsError {
573
+ details?: unknown;
574
+ constructor(message?: string, opts?: ConstructorParameters<typeof BeepsError>[1] & {
575
+ details?: unknown;
576
+ });
577
+ }
578
+ declare class NotFoundError extends BeepsError {
579
+ constructor(message?: string, opts?: ConstructorParameters<typeof BeepsError>[1]);
580
+ }
581
+ declare class RateLimitError extends BeepsError {
582
+ constructor(message?: string, opts?: ConstructorParameters<typeof BeepsError>[1]);
583
+ }
584
+ declare class ServerError extends BeepsError {
585
+ constructor(message?: string, opts?: ConstructorParameters<typeof BeepsError>[1]);
586
+ }
587
+ declare class NetworkError extends BeepsError {
588
+ constructor(message?: string, opts?: ConstructorParameters<typeof BeepsError>[1]);
589
+ }
590
+ declare class HttpError extends BeepsError {
591
+ constructor(message?: string, opts?: ConstructorParameters<typeof BeepsError>[1]);
592
+ }
593
+ declare function mapHttpError(status: number, message: string, requestId?: string): AuthError | ValidationError | NotFoundError | RateLimitError | ServerError | HttpError;
594
+
595
+ /**
596
+ * Formats a Date object as an ISO 8601 timestamp with Z suffix (UTC).
597
+ * Example: "2024-01-29T00:00:00.000Z"
598
+ */
599
+ declare function formatUTCDate(date: Date): string;
600
+ /**
601
+ * Validates that a string is a valid ISO 8601 timestamp with Z suffix.
602
+ * Returns true if the string ends with "Z" and can be parsed as a valid date.
603
+ */
604
+ declare function isIsoZ(value: string): boolean;
605
+ /**
606
+ * Validates and normalizes a date parameter to an ISO 8601 string with Z suffix.
607
+ * Accepts either a Date object or a Z-suffixed ISO string.
608
+ * Throws an error if the input is invalid.
609
+ */
610
+ declare function normalizeDateParam(date: Date | string): string;
611
+
612
+ export { type AcknowledgeAlertInput, type AddScheduleMemberInput, type AgentConfig, type Alert, AlertResource, type AlertSeverity, AuthError, type BeepsAgentRuleConfig, BeepsClient, type BeepsClientConfig, type BeepsConfig, BeepsError, type BeepsIntegrationConfig, type BeepsRelayConfig, type BeepsRelayRuleConfig, type BeepsScheduleConfig, type BeepsScheduleMemberConfig, type BeepsScheduleNotifyRuleConfig, type BeepsUser, type BeepsWebhookRuleConfig, type ContactMethod, ContactMethodResource, type ContactMethodTransport, type CreateContactMethodInput, type CreateIntegrationInput, type CreateRelayInput, type CreateRelayRuleInput, type CreateScheduleInput, type CreateScheduleOverrideInput, type DeleteContactMethodParams, type GetAssignmentsParams, HttpError, type Integration, type IntegrationProvider, type ListContactMethodsParams, type ListRelayRulesParams, type ListScheduleOverridesParams, MemberResource, NetworkError, NotFoundError, type OrganizationMember, RateLimitError, type Relay, type RelayLintInput, type RelayLintIssue, type RelayLintResult, type RelayLintSeverity, type RelayRule, type RelayRuleConfig, type RelayRuleType, RelayRulesResource, type RelaySimulationAgentStep, type RelaySimulationAlertInput, type RelaySimulationAlertPreview, type RelaySimulationContactMethod, type RelaySimulationGroup, type RelaySimulationInput, type RelaySimulationOnCallUser, type RelaySimulationResult, type RelaySimulationScheduleStep, type RelaySimulationStep, type RelaySimulationUnknownStep, type RelaySimulationWebhookStep, type ReorderRelayRulesInput, type Result, type Schedule, type ScheduleAssignment, type ScheduleMember, type ScheduleNotifyConfig, type ScheduleOverride, ScheduleResource, ServerError, type UpdateIntegrationInput, type UpdateRelayRuleInput, type UpdateScheduleOverrideInput, ValidationError, type WebhookConfig, formatUTCDate, isIsoZ, mapHttpError, normalizeDateParam };