@hasna/connectors 0.5.8 → 0.5.9

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 (137) hide show
  1. package/bin/index.js +57 -1
  2. package/bin/mcp.js +57 -1
  3. package/bin/serve.js +56 -0
  4. package/connectors/connect-chargebee/.env.example +11 -0
  5. package/connectors/connect-chargebee/CLAUDE.md +272 -0
  6. package/connectors/connect-chargebee/README.md +193 -0
  7. package/connectors/connect-chargebee/package.json +51 -0
  8. package/connectors/connect-chargebee/scripts/release.ts +179 -0
  9. package/connectors/connect-chargebee/src/api/client.ts +213 -0
  10. package/connectors/connect-chargebee/src/api/example.ts +48 -0
  11. package/connectors/connect-chargebee/src/api/index.ts +51 -0
  12. package/connectors/connect-chargebee/src/cli/index.ts +254 -0
  13. package/connectors/connect-chargebee/src/index.ts +103 -0
  14. package/connectors/connect-chargebee/src/types/index.ts +237 -0
  15. package/connectors/connect-chargebee/src/utils/auth.ts +274 -0
  16. package/connectors/connect-chargebee/src/utils/bulk.ts +212 -0
  17. package/connectors/connect-chargebee/src/utils/config.ts +326 -0
  18. package/connectors/connect-chargebee/src/utils/output.ts +175 -0
  19. package/connectors/connect-chargebee/src/utils/settings.ts +114 -0
  20. package/connectors/connect-chargebee/src/utils/storage.ts +198 -0
  21. package/connectors/connect-chargebee/tsconfig.json +16 -0
  22. package/connectors/connect-databricks/.env.example +11 -0
  23. package/connectors/connect-databricks/CLAUDE.md +272 -0
  24. package/connectors/connect-databricks/README.md +193 -0
  25. package/connectors/connect-databricks/package.json +51 -0
  26. package/connectors/connect-databricks/scripts/release.ts +179 -0
  27. package/connectors/connect-databricks/src/api/client.ts +213 -0
  28. package/connectors/connect-databricks/src/api/example.ts +48 -0
  29. package/connectors/connect-databricks/src/api/index.ts +51 -0
  30. package/connectors/connect-databricks/src/cli/index.ts +254 -0
  31. package/connectors/connect-databricks/src/index.ts +103 -0
  32. package/connectors/connect-databricks/src/types/index.ts +237 -0
  33. package/connectors/connect-databricks/src/utils/auth.ts +274 -0
  34. package/connectors/connect-databricks/src/utils/bulk.ts +212 -0
  35. package/connectors/connect-databricks/src/utils/config.ts +326 -0
  36. package/connectors/connect-databricks/src/utils/output.ts +175 -0
  37. package/connectors/connect-databricks/src/utils/settings.ts +114 -0
  38. package/connectors/connect-databricks/src/utils/storage.ts +198 -0
  39. package/connectors/connect-databricks/tsconfig.json +16 -0
  40. package/connectors/connect-datadog/.env.example +11 -0
  41. package/connectors/connect-datadog/CLAUDE.md +170 -0
  42. package/connectors/connect-datadog/README.md +193 -0
  43. package/connectors/connect-datadog/package.json +53 -0
  44. package/connectors/connect-datadog/src/api/client.ts +150 -0
  45. package/connectors/connect-datadog/src/api/index.ts +537 -0
  46. package/connectors/connect-datadog/src/cli/index.ts +958 -0
  47. package/connectors/connect-datadog/src/index.ts +26 -0
  48. package/connectors/connect-datadog/src/types/index.ts +654 -0
  49. package/connectors/connect-datadog/src/utils/config.ts +219 -0
  50. package/connectors/connect-datadog/src/utils/output.ts +119 -0
  51. package/connectors/connect-datadog/tsconfig.json +16 -0
  52. package/connectors/connect-fathom/.env.example +11 -0
  53. package/connectors/connect-fathom/CLAUDE.md +272 -0
  54. package/connectors/connect-fathom/README.md +193 -0
  55. package/connectors/connect-fathom/package.json +51 -0
  56. package/connectors/connect-fathom/scripts/release.ts +179 -0
  57. package/connectors/connect-fathom/src/api/client.ts +213 -0
  58. package/connectors/connect-fathom/src/api/example.ts +48 -0
  59. package/connectors/connect-fathom/src/api/index.ts +51 -0
  60. package/connectors/connect-fathom/src/cli/index.ts +254 -0
  61. package/connectors/connect-fathom/src/index.ts +103 -0
  62. package/connectors/connect-fathom/src/types/index.ts +237 -0
  63. package/connectors/connect-fathom/src/utils/auth.ts +274 -0
  64. package/connectors/connect-fathom/src/utils/bulk.ts +212 -0
  65. package/connectors/connect-fathom/src/utils/config.ts +326 -0
  66. package/connectors/connect-fathom/src/utils/output.ts +175 -0
  67. package/connectors/connect-fathom/src/utils/settings.ts +114 -0
  68. package/connectors/connect-fathom/src/utils/storage.ts +198 -0
  69. package/connectors/connect-fathom/tsconfig.json +16 -0
  70. package/connectors/connect-grafana/.env.example +11 -0
  71. package/connectors/connect-grafana/CLAUDE.md +272 -0
  72. package/connectors/connect-grafana/README.md +193 -0
  73. package/connectors/connect-grafana/package.json +51 -0
  74. package/connectors/connect-grafana/scripts/release.ts +179 -0
  75. package/connectors/connect-grafana/src/api/client.ts +213 -0
  76. package/connectors/connect-grafana/src/api/example.ts +48 -0
  77. package/connectors/connect-grafana/src/api/index.ts +51 -0
  78. package/connectors/connect-grafana/src/cli/index.ts +254 -0
  79. package/connectors/connect-grafana/src/index.ts +103 -0
  80. package/connectors/connect-grafana/src/types/index.ts +237 -0
  81. package/connectors/connect-grafana/src/utils/auth.ts +274 -0
  82. package/connectors/connect-grafana/src/utils/bulk.ts +212 -0
  83. package/connectors/connect-grafana/src/utils/config.ts +326 -0
  84. package/connectors/connect-grafana/src/utils/output.ts +175 -0
  85. package/connectors/connect-grafana/src/utils/settings.ts +114 -0
  86. package/connectors/connect-grafana/src/utils/storage.ts +198 -0
  87. package/connectors/connect-grafana/tsconfig.json +16 -0
  88. package/connectors/connect-paddle/.env.example +11 -0
  89. package/connectors/connect-paddle/CLAUDE.md +272 -0
  90. package/connectors/connect-paddle/README.md +193 -0
  91. package/connectors/connect-paddle/package.json +51 -0
  92. package/connectors/connect-paddle/scripts/release.ts +179 -0
  93. package/connectors/connect-paddle/src/api/client.ts +213 -0
  94. package/connectors/connect-paddle/src/api/example.ts +48 -0
  95. package/connectors/connect-paddle/src/api/index.ts +51 -0
  96. package/connectors/connect-paddle/src/cli/index.ts +254 -0
  97. package/connectors/connect-paddle/src/index.ts +103 -0
  98. package/connectors/connect-paddle/src/types/index.ts +237 -0
  99. package/connectors/connect-paddle/src/utils/auth.ts +274 -0
  100. package/connectors/connect-paddle/src/utils/bulk.ts +212 -0
  101. package/connectors/connect-paddle/src/utils/config.ts +326 -0
  102. package/connectors/connect-paddle/src/utils/output.ts +175 -0
  103. package/connectors/connect-paddle/src/utils/settings.ts +114 -0
  104. package/connectors/connect-paddle/src/utils/storage.ts +198 -0
  105. package/connectors/connect-paddle/tsconfig.json +16 -0
  106. package/connectors/connect-snowflake/.env.example +11 -0
  107. package/connectors/connect-snowflake/CLAUDE.md +272 -0
  108. package/connectors/connect-snowflake/README.md +193 -0
  109. package/connectors/connect-snowflake/package.json +51 -0
  110. package/connectors/connect-snowflake/scripts/release.ts +179 -0
  111. package/connectors/connect-snowflake/src/api/client.ts +213 -0
  112. package/connectors/connect-snowflake/src/api/example.ts +48 -0
  113. package/connectors/connect-snowflake/src/api/index.ts +51 -0
  114. package/connectors/connect-snowflake/src/cli/index.ts +254 -0
  115. package/connectors/connect-snowflake/src/index.ts +103 -0
  116. package/connectors/connect-snowflake/src/types/index.ts +237 -0
  117. package/connectors/connect-snowflake/src/utils/auth.ts +274 -0
  118. package/connectors/connect-snowflake/src/utils/bulk.ts +212 -0
  119. package/connectors/connect-snowflake/src/utils/config.ts +326 -0
  120. package/connectors/connect-snowflake/src/utils/output.ts +175 -0
  121. package/connectors/connect-snowflake/src/utils/settings.ts +114 -0
  122. package/connectors/connect-snowflake/src/utils/storage.ts +198 -0
  123. package/connectors/connect-snowflake/tsconfig.json +16 -0
  124. package/connectors/connect-square/.env.example +11 -0
  125. package/connectors/connect-square/CLAUDE.md +128 -0
  126. package/connectors/connect-square/README.md +193 -0
  127. package/connectors/connect-square/package.json +52 -0
  128. package/connectors/connect-square/src/api/client.ts +152 -0
  129. package/connectors/connect-square/src/api/index.ts +343 -0
  130. package/connectors/connect-square/src/cli/index.ts +579 -0
  131. package/connectors/connect-square/src/index.ts +21 -0
  132. package/connectors/connect-square/src/types/index.ts +809 -0
  133. package/connectors/connect-square/src/utils/config.ts +209 -0
  134. package/connectors/connect-square/src/utils/output.ts +119 -0
  135. package/connectors/connect-square/tsconfig.json +16 -0
  136. package/dist/index.js +56 -0
  137. package/package.json +1 -1
@@ -0,0 +1,26 @@
1
+ // Datadog Connector API
2
+ // A TypeScript wrapper for Datadog's REST API
3
+
4
+ export { Datadog } from './api';
5
+ export * from './types';
6
+
7
+ // Re-export client for advanced usage
8
+ export { DatadogClient } from './api';
9
+
10
+ // Export config utilities
11
+ export {
12
+ getApiKey,
13
+ setApiKey,
14
+ getAppKey,
15
+ setAppKey,
16
+ getSite,
17
+ setSite,
18
+ getCurrentProfile,
19
+ setCurrentProfile,
20
+ listProfiles,
21
+ createProfile,
22
+ deleteProfile,
23
+ loadProfile,
24
+ saveProfile,
25
+ clearConfig,
26
+ } from './utils/config';
@@ -0,0 +1,654 @@
1
+ // Datadog Connector Types
2
+
3
+ // ============================================
4
+ // Configuration
5
+ // ============================================
6
+
7
+ export interface DatadogConfig {
8
+ apiKey: string;
9
+ appKey: string;
10
+ site?: string; // datadoghq.com, datadoghq.eu, etc.
11
+ }
12
+
13
+ // ============================================
14
+ // Common Types
15
+ // ============================================
16
+
17
+ export type OutputFormat = 'json' | 'pretty';
18
+
19
+ // ============================================
20
+ // Metric Types
21
+ // ============================================
22
+
23
+ export interface MetricMetadata {
24
+ type?: 'gauge' | 'rate' | 'count';
25
+ description?: string;
26
+ short_name?: string;
27
+ unit?: string;
28
+ per_unit?: string;
29
+ statsd_interval?: number;
30
+ }
31
+
32
+ export interface MetricPoint {
33
+ timestamp: number;
34
+ value: number;
35
+ }
36
+
37
+ export interface MetricSeries {
38
+ metric: string;
39
+ type?: 'gauge' | 'rate' | 'count';
40
+ interval?: number;
41
+ points: [number, number][];
42
+ host?: string;
43
+ tags?: string[];
44
+ }
45
+
46
+ export interface MetricQueryResult {
47
+ status: string;
48
+ res_type: string;
49
+ series: Array<{
50
+ metric: string;
51
+ display_name?: string;
52
+ pointlist: [number, number][];
53
+ scope: string;
54
+ tag_set?: string[];
55
+ unit?: Array<{
56
+ family: string;
57
+ name: string;
58
+ plural?: string;
59
+ short_name: string;
60
+ }>;
61
+ }>;
62
+ from_date: number;
63
+ to_date: number;
64
+ query: string;
65
+ message?: string;
66
+ group_by?: string[];
67
+ }
68
+
69
+ // ============================================
70
+ // Event Types
71
+ // ============================================
72
+
73
+ export interface Event {
74
+ id?: number;
75
+ title: string;
76
+ text: string;
77
+ date_happened?: number;
78
+ priority?: 'normal' | 'low';
79
+ host?: string;
80
+ tags?: string[];
81
+ alert_type?: 'error' | 'warning' | 'info' | 'success' | 'user_update' | 'recommendation' | 'snapshot';
82
+ aggregation_key?: string;
83
+ source_type_name?: string;
84
+ device_name?: string;
85
+ related_event_id?: number;
86
+ url?: string;
87
+ }
88
+
89
+ export interface EventCreateParams {
90
+ title: string;
91
+ text: string;
92
+ date_happened?: number;
93
+ priority?: 'normal' | 'low';
94
+ host?: string;
95
+ tags?: string[];
96
+ alert_type?: Event['alert_type'];
97
+ aggregation_key?: string;
98
+ source_type_name?: string;
99
+ device_name?: string;
100
+ related_event_id?: number;
101
+ }
102
+
103
+ // ============================================
104
+ // Monitor Types
105
+ // ============================================
106
+
107
+ export type MonitorType =
108
+ | 'composite'
109
+ | 'event alert'
110
+ | 'log alert'
111
+ | 'metric alert'
112
+ | 'process alert'
113
+ | 'query alert'
114
+ | 'rum alert'
115
+ | 'service check'
116
+ | 'synthetics alert'
117
+ | 'trace-analytics alert'
118
+ | 'slo alert'
119
+ | 'event-v2 alert'
120
+ | 'audit alert'
121
+ | 'ci-pipelines alert'
122
+ | 'ci-tests alert'
123
+ | 'error-tracking alert';
124
+
125
+ export interface Monitor {
126
+ id?: number;
127
+ org_id?: number;
128
+ type: MonitorType;
129
+ name: string;
130
+ message: string;
131
+ tags?: string[];
132
+ query: string;
133
+ options?: MonitorOptions;
134
+ multi?: boolean;
135
+ created_at?: string;
136
+ created?: string;
137
+ modified?: string;
138
+ deleted?: string;
139
+ state?: {
140
+ groups: Record<string, {
141
+ last_nodata_ts?: number;
142
+ last_notified_ts?: number;
143
+ last_resolved_ts?: number;
144
+ last_triggered_ts?: number;
145
+ name?: string;
146
+ status?: string;
147
+ }>;
148
+ };
149
+ overall_state?: 'Alert' | 'Ignored' | 'No Data' | 'OK' | 'Skipped' | 'Unknown' | 'Warn';
150
+ creator?: {
151
+ email?: string;
152
+ handle?: string;
153
+ id?: number;
154
+ name?: string;
155
+ };
156
+ priority?: number;
157
+ restricted_roles?: string[];
158
+ }
159
+
160
+ export interface MonitorOptions {
161
+ aggregation?: {
162
+ group_by?: string;
163
+ metric?: string;
164
+ type?: string;
165
+ };
166
+ device_ids?: string[];
167
+ enable_logs_sample?: boolean;
168
+ enable_samples?: boolean;
169
+ escalation_message?: string;
170
+ evaluation_delay?: number;
171
+ group_retention_duration?: string;
172
+ groupby_simple_monitor?: boolean;
173
+ include_tags?: boolean;
174
+ locked?: boolean;
175
+ min_failure_duration?: number;
176
+ min_location_failed?: number;
177
+ new_group_delay?: number;
178
+ new_host_delay?: number;
179
+ no_data_timeframe?: number;
180
+ notification_preset_name?: string;
181
+ notify_audit?: boolean;
182
+ notify_by?: string[];
183
+ notify_no_data?: boolean;
184
+ on_missing_data?: string;
185
+ renotify_interval?: number;
186
+ renotify_occurrences?: number;
187
+ renotify_statuses?: string[];
188
+ require_full_window?: boolean;
189
+ scheduling_options?: {
190
+ evaluation_window?: {
191
+ day_starts?: string;
192
+ hour_starts?: number;
193
+ month_starts?: number;
194
+ };
195
+ };
196
+ silenced?: Record<string, number>;
197
+ synthetics_check_id?: string;
198
+ threshold_windows?: {
199
+ recovery_window?: string;
200
+ trigger_window?: string;
201
+ };
202
+ thresholds?: {
203
+ critical?: number;
204
+ critical_recovery?: number;
205
+ ok?: number;
206
+ unknown?: number;
207
+ warning?: number;
208
+ warning_recovery?: number;
209
+ };
210
+ timeout_h?: number;
211
+ variables?: Array<{
212
+ compute?: {
213
+ aggregation: string;
214
+ interval?: number;
215
+ metric?: string;
216
+ };
217
+ data_source: string;
218
+ group_by?: Array<{
219
+ facet: string;
220
+ limit?: number;
221
+ sort?: {
222
+ aggregation: string;
223
+ metric?: string;
224
+ order?: string;
225
+ };
226
+ }>;
227
+ indexes?: string[];
228
+ name: string;
229
+ search?: {
230
+ query: string;
231
+ };
232
+ }>;
233
+ }
234
+
235
+ export interface MonitorCreateParams {
236
+ type: MonitorType;
237
+ name: string;
238
+ query: string;
239
+ message: string;
240
+ tags?: string[];
241
+ options?: MonitorOptions;
242
+ priority?: number;
243
+ restricted_roles?: string[];
244
+ }
245
+
246
+ // ============================================
247
+ // Dashboard Types
248
+ // ============================================
249
+
250
+ export interface Dashboard {
251
+ id?: string;
252
+ title: string;
253
+ description?: string;
254
+ layout_type: 'ordered' | 'free';
255
+ widgets: Widget[];
256
+ template_variables?: TemplateVariable[];
257
+ template_variable_presets?: TemplateVariablePreset[];
258
+ notify_list?: string[];
259
+ reflow_type?: 'auto' | 'fixed';
260
+ restricted_roles?: string[];
261
+ is_read_only?: boolean;
262
+ created_at?: string;
263
+ modified_at?: string;
264
+ author_handle?: string;
265
+ author_name?: string;
266
+ url?: string;
267
+ }
268
+
269
+ export interface Widget {
270
+ id?: number;
271
+ definition: Record<string, unknown>;
272
+ layout?: {
273
+ x: number;
274
+ y: number;
275
+ width: number;
276
+ height: number;
277
+ };
278
+ }
279
+
280
+ export interface TemplateVariable {
281
+ name: string;
282
+ prefix?: string;
283
+ available_values?: string[];
284
+ default?: string;
285
+ defaults?: string[];
286
+ }
287
+
288
+ export interface TemplateVariablePreset {
289
+ name?: string;
290
+ template_variables?: Array<{
291
+ name?: string;
292
+ value?: string;
293
+ values?: string[];
294
+ }>;
295
+ }
296
+
297
+ export interface DashboardSummary {
298
+ id: string;
299
+ title: string;
300
+ description?: string;
301
+ layout_type: string;
302
+ url: string;
303
+ is_read_only: boolean;
304
+ created_at: string;
305
+ modified_at: string;
306
+ author_handle?: string;
307
+ }
308
+
309
+ // ============================================
310
+ // SLO Types
311
+ // ============================================
312
+
313
+ export interface SLO {
314
+ id?: string;
315
+ name: string;
316
+ description?: string;
317
+ tags?: string[];
318
+ thresholds: SLOThreshold[];
319
+ type: 'metric' | 'monitor' | 'time_slice';
320
+ query?: {
321
+ numerator: string;
322
+ denominator: string;
323
+ };
324
+ monitor_ids?: number[];
325
+ groups?: string[];
326
+ timeframe?: string;
327
+ target_threshold?: number;
328
+ warning_threshold?: number;
329
+ created_at?: number;
330
+ modified_at?: number;
331
+ creator?: {
332
+ email?: string;
333
+ handle?: string;
334
+ name?: string;
335
+ };
336
+ }
337
+
338
+ export interface SLOThreshold {
339
+ timeframe: '7d' | '30d' | '90d' | 'custom';
340
+ target: number;
341
+ target_display?: string;
342
+ warning?: number;
343
+ warning_display?: string;
344
+ }
345
+
346
+ export interface SLOCreateParams {
347
+ name: string;
348
+ type: SLO['type'];
349
+ thresholds: SLOThreshold[];
350
+ description?: string;
351
+ tags?: string[];
352
+ query?: SLO['query'];
353
+ monitor_ids?: number[];
354
+ groups?: string[];
355
+ target_threshold?: number;
356
+ warning_threshold?: number;
357
+ }
358
+
359
+ // ============================================
360
+ // Host Types
361
+ // ============================================
362
+
363
+ export interface Host {
364
+ id?: number;
365
+ name?: string;
366
+ aliases?: string[];
367
+ apps?: string[];
368
+ aws_name?: string;
369
+ host_name?: string;
370
+ is_muted?: boolean;
371
+ last_reported_time?: number;
372
+ meta?: {
373
+ agent_checks?: string[][];
374
+ agent_version?: string;
375
+ cpu_cores?: number;
376
+ fbsd_v?: string[];
377
+ gohai?: string;
378
+ install_method?: {
379
+ installer_version?: string;
380
+ tool?: string;
381
+ tool_version?: string;
382
+ };
383
+ mac_v?: string[];
384
+ machine?: string;
385
+ nixv?: string[];
386
+ platform?: string;
387
+ processor?: string;
388
+ python_v?: string;
389
+ socket_fqdn?: string;
390
+ socket_hostname?: string;
391
+ win_v?: string[];
392
+ };
393
+ metrics?: {
394
+ cpu?: number;
395
+ iowait?: number;
396
+ load?: number;
397
+ };
398
+ mute_timeout?: number;
399
+ sources?: string[];
400
+ tags_by_source?: Record<string, string[]>;
401
+ up?: boolean;
402
+ }
403
+
404
+ export interface HostTotals {
405
+ total_active?: number;
406
+ total_up?: number;
407
+ }
408
+
409
+ // ============================================
410
+ // Downtime Types
411
+ // ============================================
412
+
413
+ export interface Downtime {
414
+ id?: number;
415
+ disabled?: boolean;
416
+ start?: number;
417
+ end?: number;
418
+ message?: string;
419
+ monitor_id?: number;
420
+ monitor_tags?: string[];
421
+ parent_id?: number;
422
+ recurrence?: {
423
+ period?: number;
424
+ type?: 'days' | 'weeks' | 'months' | 'years' | 'rrule';
425
+ until_date?: number;
426
+ until_occurrences?: number;
427
+ week_days?: string[];
428
+ rrule?: string;
429
+ };
430
+ scope?: string[];
431
+ timezone?: string;
432
+ active?: boolean;
433
+ canceled?: number;
434
+ creator_id?: number;
435
+ updater_id?: number;
436
+ mute_first_recovery_notification?: boolean;
437
+ notify_end_states?: string[];
438
+ notify_end_types?: string[];
439
+ }
440
+
441
+ export interface DowntimeCreateParams {
442
+ scope: string[];
443
+ start?: number;
444
+ end?: number;
445
+ message?: string;
446
+ monitor_id?: number;
447
+ monitor_tags?: string[];
448
+ recurrence?: Downtime['recurrence'];
449
+ timezone?: string;
450
+ mute_first_recovery_notification?: boolean;
451
+ notify_end_states?: string[];
452
+ notify_end_types?: string[];
453
+ }
454
+
455
+ // ============================================
456
+ // Synthetics Types
457
+ // ============================================
458
+
459
+ export interface SyntheticsTest {
460
+ public_id?: string;
461
+ name: string;
462
+ type: 'api' | 'browser';
463
+ subtype?: 'http' | 'ssl' | 'tcp' | 'dns' | 'icmp' | 'udp' | 'websocket' | 'grpc' | 'multi';
464
+ config: {
465
+ assertions?: Array<{
466
+ type: string;
467
+ operator?: string;
468
+ target?: unknown;
469
+ property?: string;
470
+ }>;
471
+ request?: {
472
+ method?: string;
473
+ url?: string;
474
+ body?: string;
475
+ headers?: Record<string, string>;
476
+ timeout?: number;
477
+ host?: string;
478
+ port?: number;
479
+ dns_server?: string;
480
+ dns_server_port?: number;
481
+ no_saving_response_body?: boolean;
482
+ number_of_packets?: number;
483
+ should_track_hops?: boolean;
484
+ metadata?: Record<string, string>;
485
+ service?: string;
486
+ message?: string;
487
+ };
488
+ variables?: Array<{
489
+ name: string;
490
+ type?: string;
491
+ id?: string;
492
+ pattern?: string;
493
+ example?: string;
494
+ secure?: boolean;
495
+ }>;
496
+ };
497
+ options?: {
498
+ tick_every?: number;
499
+ min_failure_duration?: number;
500
+ min_location_failed?: number;
501
+ follow_redirects?: boolean;
502
+ retry?: {
503
+ count?: number;
504
+ interval?: number;
505
+ };
506
+ monitor_name?: string;
507
+ monitor_options?: {
508
+ renotify_interval?: number;
509
+ };
510
+ monitor_priority?: number;
511
+ restricted_roles?: string[];
512
+ ci?: {
513
+ executionRule?: 'blocking' | 'non_blocking' | 'skipped';
514
+ };
515
+ ignore_server_certificate_error?: boolean;
516
+ disable_cors?: boolean;
517
+ disable_csp?: boolean;
518
+ no_screenshot?: boolean;
519
+ allow_insecure?: boolean;
520
+ rum_settings?: {
521
+ isEnabled?: boolean;
522
+ applicationId?: string;
523
+ clientTokenId?: number;
524
+ };
525
+ };
526
+ locations?: string[];
527
+ message?: string;
528
+ tags?: string[];
529
+ status?: 'live' | 'paused';
530
+ monitor_id?: number;
531
+ creator?: {
532
+ email?: string;
533
+ handle?: string;
534
+ name?: string;
535
+ };
536
+ created_at?: string;
537
+ modified_at?: string;
538
+ created_by?: {
539
+ email?: string;
540
+ handle?: string;
541
+ name?: string;
542
+ };
543
+ modified_by?: {
544
+ email?: string;
545
+ handle?: string;
546
+ name?: string;
547
+ };
548
+ }
549
+
550
+ // ============================================
551
+ // User Types
552
+ // ============================================
553
+
554
+ export interface User {
555
+ id?: string;
556
+ type?: string;
557
+ attributes?: {
558
+ created_at?: string;
559
+ disabled?: boolean;
560
+ email?: string;
561
+ handle?: string;
562
+ icon?: string;
563
+ modified_at?: string;
564
+ name?: string;
565
+ service_account?: boolean;
566
+ status?: string;
567
+ title?: string;
568
+ verified?: boolean;
569
+ mfa_enabled?: boolean;
570
+ };
571
+ relationships?: {
572
+ org?: {
573
+ data?: {
574
+ id?: string;
575
+ type?: string;
576
+ };
577
+ };
578
+ other_orgs?: {
579
+ data?: Array<{
580
+ id?: string;
581
+ type?: string;
582
+ }>;
583
+ };
584
+ other_users?: {
585
+ data?: Array<{
586
+ id?: string;
587
+ type?: string;
588
+ }>;
589
+ };
590
+ roles?: {
591
+ data?: Array<{
592
+ id?: string;
593
+ type?: string;
594
+ }>;
595
+ };
596
+ };
597
+ }
598
+
599
+ // ============================================
600
+ // Organization Types
601
+ // ============================================
602
+
603
+ export interface Organization {
604
+ public_id?: string;
605
+ name?: string;
606
+ description?: string;
607
+ created?: string;
608
+ settings?: {
609
+ saml?: {
610
+ enabled?: boolean;
611
+ };
612
+ saml_autocreate_access_role?: string;
613
+ saml_autocreate_users_domains?: {
614
+ domains?: string[];
615
+ enabled?: boolean;
616
+ };
617
+ saml_can_be_enabled?: boolean;
618
+ saml_idp_endpoint?: string;
619
+ saml_idp_initiated_login?: {
620
+ enabled?: boolean;
621
+ };
622
+ saml_idp_metadata_uploaded?: boolean;
623
+ saml_login_url?: string;
624
+ saml_strict_mode?: {
625
+ enabled?: boolean;
626
+ };
627
+ };
628
+ billing?: {
629
+ type?: string;
630
+ };
631
+ subscription?: {
632
+ type?: string;
633
+ };
634
+ }
635
+
636
+ // ============================================
637
+ // API Error Types
638
+ // ============================================
639
+
640
+ export interface DatadogErrorResponse {
641
+ errors: string[];
642
+ }
643
+
644
+ export class DatadogApiError extends Error {
645
+ public readonly statusCode: number;
646
+ public readonly errors?: string[];
647
+
648
+ constructor(message: string, statusCode: number, errors?: string[]) {
649
+ super(message);
650
+ this.name = 'DatadogApiError';
651
+ this.statusCode = statusCode;
652
+ this.errors = errors;
653
+ }
654
+ }