@belvador/api 0.2.0 → 0.4.0
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.
- package/README.md +13 -0
- package/dist/cli.js +119 -0
- package/dist/client.d.ts +1 -1
- package/dist/client.js +4 -2
- package/dist/node-wire.gen.d.ts +3 -0
- package/dist/node-wire.gen.js +11 -0
- package/dist/operations.gen.d.ts +726 -10
- package/dist/operations.gen.js +351 -1
- package/package.json +4 -1
package/dist/operations.gen.d.ts
CHANGED
|
@@ -138,6 +138,34 @@ export declare const OPERATIONS: {
|
|
|
138
138
|
readonly node: null;
|
|
139
139
|
readonly defaults: {};
|
|
140
140
|
};
|
|
141
|
+
readonly "coverage.get": {
|
|
142
|
+
readonly method: "GET";
|
|
143
|
+
readonly path: "/v1/coverage";
|
|
144
|
+
readonly pathParams: readonly [];
|
|
145
|
+
readonly scope: "coverage:read";
|
|
146
|
+
readonly kind: "read";
|
|
147
|
+
readonly sensitivity: "normal";
|
|
148
|
+
readonly idempotency: "none";
|
|
149
|
+
readonly ifMatch: false;
|
|
150
|
+
readonly paged: false;
|
|
151
|
+
readonly status: 200;
|
|
152
|
+
readonly node: null;
|
|
153
|
+
readonly defaults: {};
|
|
154
|
+
};
|
|
155
|
+
readonly "coverage.set": {
|
|
156
|
+
readonly method: "PUT";
|
|
157
|
+
readonly path: "/v1/projects/{project_id}/coverage-expectations";
|
|
158
|
+
readonly pathParams: readonly ["project_id"];
|
|
159
|
+
readonly scope: "coverage:write";
|
|
160
|
+
readonly kind: "write";
|
|
161
|
+
readonly sensitivity: "normal";
|
|
162
|
+
readonly idempotency: "optional";
|
|
163
|
+
readonly ifMatch: false;
|
|
164
|
+
readonly paged: false;
|
|
165
|
+
readonly status: 200;
|
|
166
|
+
readonly node: null;
|
|
167
|
+
readonly defaults: {};
|
|
168
|
+
};
|
|
141
169
|
readonly "destinations.create": {
|
|
142
170
|
readonly method: "POST";
|
|
143
171
|
readonly path: "/v1/destinations";
|
|
@@ -283,6 +311,132 @@ export declare const OPERATIONS: {
|
|
|
283
311
|
};
|
|
284
312
|
readonly defaults: {};
|
|
285
313
|
};
|
|
314
|
+
readonly "incident_rules.delete": {
|
|
315
|
+
readonly method: "DELETE";
|
|
316
|
+
readonly path: "/v1/incident-rules/{rule_id}";
|
|
317
|
+
readonly pathParams: readonly ["rule_id"];
|
|
318
|
+
readonly scope: "alerts:write";
|
|
319
|
+
readonly kind: "write";
|
|
320
|
+
readonly sensitivity: "normal";
|
|
321
|
+
readonly idempotency: "none";
|
|
322
|
+
readonly ifMatch: false;
|
|
323
|
+
readonly paged: false;
|
|
324
|
+
readonly status: 200;
|
|
325
|
+
readonly node: null;
|
|
326
|
+
readonly defaults: {};
|
|
327
|
+
};
|
|
328
|
+
readonly "incident_rules.list": {
|
|
329
|
+
readonly method: "GET";
|
|
330
|
+
readonly path: "/v1/incident-rules";
|
|
331
|
+
readonly pathParams: readonly [];
|
|
332
|
+
readonly scope: "alerts:read";
|
|
333
|
+
readonly kind: "read";
|
|
334
|
+
readonly sensitivity: "normal";
|
|
335
|
+
readonly idempotency: "none";
|
|
336
|
+
readonly ifMatch: false;
|
|
337
|
+
readonly paged: false;
|
|
338
|
+
readonly status: 200;
|
|
339
|
+
readonly node: null;
|
|
340
|
+
readonly defaults: {};
|
|
341
|
+
};
|
|
342
|
+
readonly "incident_rules.save": {
|
|
343
|
+
readonly method: "POST";
|
|
344
|
+
readonly path: "/v1/incident-rules";
|
|
345
|
+
readonly pathParams: readonly [];
|
|
346
|
+
readonly scope: "alerts:write";
|
|
347
|
+
readonly kind: "write";
|
|
348
|
+
readonly sensitivity: "normal";
|
|
349
|
+
readonly idempotency: "optional";
|
|
350
|
+
readonly ifMatch: false;
|
|
351
|
+
readonly paged: false;
|
|
352
|
+
readonly status: 200;
|
|
353
|
+
readonly node: null;
|
|
354
|
+
readonly defaults: {};
|
|
355
|
+
};
|
|
356
|
+
readonly "incidents.acknowledge": {
|
|
357
|
+
readonly method: "POST";
|
|
358
|
+
readonly path: "/v1/incidents/{incident_id}/ack";
|
|
359
|
+
readonly pathParams: readonly ["incident_id"];
|
|
360
|
+
readonly scope: "incidents:write";
|
|
361
|
+
readonly kind: "write";
|
|
362
|
+
readonly sensitivity: "normal";
|
|
363
|
+
readonly idempotency: "optional";
|
|
364
|
+
readonly ifMatch: false;
|
|
365
|
+
readonly paged: false;
|
|
366
|
+
readonly status: 200;
|
|
367
|
+
readonly node: null;
|
|
368
|
+
readonly defaults: {};
|
|
369
|
+
};
|
|
370
|
+
readonly "incidents.get": {
|
|
371
|
+
readonly method: "GET";
|
|
372
|
+
readonly path: "/v1/incidents/{incident_id}";
|
|
373
|
+
readonly pathParams: readonly ["incident_id"];
|
|
374
|
+
readonly scope: "incidents:read";
|
|
375
|
+
readonly kind: "read";
|
|
376
|
+
readonly sensitivity: "normal";
|
|
377
|
+
readonly idempotency: "none";
|
|
378
|
+
readonly ifMatch: false;
|
|
379
|
+
readonly paged: false;
|
|
380
|
+
readonly status: 200;
|
|
381
|
+
readonly node: null;
|
|
382
|
+
readonly defaults: {};
|
|
383
|
+
};
|
|
384
|
+
readonly "incidents.list": {
|
|
385
|
+
readonly method: "GET";
|
|
386
|
+
readonly path: "/v1/incidents";
|
|
387
|
+
readonly pathParams: readonly [];
|
|
388
|
+
readonly scope: "incidents:read";
|
|
389
|
+
readonly kind: "read";
|
|
390
|
+
readonly sensitivity: "normal";
|
|
391
|
+
readonly idempotency: "none";
|
|
392
|
+
readonly ifMatch: false;
|
|
393
|
+
readonly paged: true;
|
|
394
|
+
readonly status: 200;
|
|
395
|
+
readonly node: null;
|
|
396
|
+
readonly defaults: {};
|
|
397
|
+
};
|
|
398
|
+
readonly "incidents.note": {
|
|
399
|
+
readonly method: "POST";
|
|
400
|
+
readonly path: "/v1/incidents/{incident_id}/notes";
|
|
401
|
+
readonly pathParams: readonly ["incident_id"];
|
|
402
|
+
readonly scope: "incidents:write";
|
|
403
|
+
readonly kind: "write";
|
|
404
|
+
readonly sensitivity: "normal";
|
|
405
|
+
readonly idempotency: "optional";
|
|
406
|
+
readonly ifMatch: false;
|
|
407
|
+
readonly paged: false;
|
|
408
|
+
readonly status: 200;
|
|
409
|
+
readonly node: null;
|
|
410
|
+
readonly defaults: {};
|
|
411
|
+
};
|
|
412
|
+
readonly "incidents.resolve": {
|
|
413
|
+
readonly method: "POST";
|
|
414
|
+
readonly path: "/v1/incidents/{incident_id}/resolve";
|
|
415
|
+
readonly pathParams: readonly ["incident_id"];
|
|
416
|
+
readonly scope: "incidents:write";
|
|
417
|
+
readonly kind: "write";
|
|
418
|
+
readonly sensitivity: "normal";
|
|
419
|
+
readonly idempotency: "optional";
|
|
420
|
+
readonly ifMatch: false;
|
|
421
|
+
readonly paged: false;
|
|
422
|
+
readonly status: 200;
|
|
423
|
+
readonly node: null;
|
|
424
|
+
readonly defaults: {};
|
|
425
|
+
};
|
|
426
|
+
readonly "incidents.update": {
|
|
427
|
+
readonly method: "PATCH";
|
|
428
|
+
readonly path: "/v1/incidents/{incident_id}";
|
|
429
|
+
readonly pathParams: readonly ["incident_id"];
|
|
430
|
+
readonly scope: "incidents:write";
|
|
431
|
+
readonly kind: "write";
|
|
432
|
+
readonly sensitivity: "normal";
|
|
433
|
+
readonly idempotency: "none";
|
|
434
|
+
readonly ifMatch: false;
|
|
435
|
+
readonly paged: false;
|
|
436
|
+
readonly status: 200;
|
|
437
|
+
readonly node: null;
|
|
438
|
+
readonly defaults: {};
|
|
439
|
+
};
|
|
286
440
|
readonly "ingest_keys.create": {
|
|
287
441
|
readonly method: "POST";
|
|
288
442
|
readonly path: "/v1/projects/{project_id}/ingest-keys";
|
|
@@ -520,6 +674,62 @@ export declare const OPERATIONS: {
|
|
|
520
674
|
};
|
|
521
675
|
readonly defaults: {};
|
|
522
676
|
};
|
|
677
|
+
readonly "maintenance.create": {
|
|
678
|
+
readonly method: "POST";
|
|
679
|
+
readonly path: "/v1/maintenance-windows";
|
|
680
|
+
readonly pathParams: readonly [];
|
|
681
|
+
readonly scope: "monitors:write";
|
|
682
|
+
readonly kind: "write";
|
|
683
|
+
readonly sensitivity: "normal";
|
|
684
|
+
readonly idempotency: "required";
|
|
685
|
+
readonly ifMatch: false;
|
|
686
|
+
readonly paged: false;
|
|
687
|
+
readonly status: 201;
|
|
688
|
+
readonly node: null;
|
|
689
|
+
readonly defaults: {};
|
|
690
|
+
};
|
|
691
|
+
readonly "maintenance.delete": {
|
|
692
|
+
readonly method: "DELETE";
|
|
693
|
+
readonly path: "/v1/maintenance-windows/{window_id}";
|
|
694
|
+
readonly pathParams: readonly ["window_id"];
|
|
695
|
+
readonly scope: "monitors:write";
|
|
696
|
+
readonly kind: "write";
|
|
697
|
+
readonly sensitivity: "normal";
|
|
698
|
+
readonly idempotency: "none";
|
|
699
|
+
readonly ifMatch: false;
|
|
700
|
+
readonly paged: false;
|
|
701
|
+
readonly status: 200;
|
|
702
|
+
readonly node: null;
|
|
703
|
+
readonly defaults: {};
|
|
704
|
+
};
|
|
705
|
+
readonly "maintenance.list": {
|
|
706
|
+
readonly method: "GET";
|
|
707
|
+
readonly path: "/v1/maintenance-windows";
|
|
708
|
+
readonly pathParams: readonly [];
|
|
709
|
+
readonly scope: "monitors:read";
|
|
710
|
+
readonly kind: "read";
|
|
711
|
+
readonly sensitivity: "normal";
|
|
712
|
+
readonly idempotency: "none";
|
|
713
|
+
readonly ifMatch: false;
|
|
714
|
+
readonly paged: true;
|
|
715
|
+
readonly status: 200;
|
|
716
|
+
readonly node: null;
|
|
717
|
+
readonly defaults: {};
|
|
718
|
+
};
|
|
719
|
+
readonly "maintenance.update": {
|
|
720
|
+
readonly method: "PATCH";
|
|
721
|
+
readonly path: "/v1/maintenance-windows/{window_id}";
|
|
722
|
+
readonly pathParams: readonly ["window_id"];
|
|
723
|
+
readonly scope: "monitors:write";
|
|
724
|
+
readonly kind: "write";
|
|
725
|
+
readonly sensitivity: "normal";
|
|
726
|
+
readonly idempotency: "none";
|
|
727
|
+
readonly ifMatch: false;
|
|
728
|
+
readonly paged: false;
|
|
729
|
+
readonly status: 200;
|
|
730
|
+
readonly node: null;
|
|
731
|
+
readonly defaults: {};
|
|
732
|
+
};
|
|
523
733
|
readonly "members.change_role": {
|
|
524
734
|
readonly method: "PATCH";
|
|
525
735
|
readonly path: "/v1/members/{user_id}";
|
|
@@ -562,6 +772,22 @@ export declare const OPERATIONS: {
|
|
|
562
772
|
readonly node: null;
|
|
563
773
|
readonly defaults: {};
|
|
564
774
|
};
|
|
775
|
+
readonly "monitors.backtest": {
|
|
776
|
+
readonly method: "POST";
|
|
777
|
+
readonly path: "/v1/monitors/backtest";
|
|
778
|
+
readonly pathParams: readonly [];
|
|
779
|
+
readonly scope: "monitors:read";
|
|
780
|
+
readonly kind: "node";
|
|
781
|
+
readonly sensitivity: "normal";
|
|
782
|
+
readonly idempotency: "none";
|
|
783
|
+
readonly ifMatch: false;
|
|
784
|
+
readonly paged: false;
|
|
785
|
+
readonly status: 200;
|
|
786
|
+
readonly node: {
|
|
787
|
+
readonly path: "q/monitors/backtest";
|
|
788
|
+
};
|
|
789
|
+
readonly defaults: {};
|
|
790
|
+
};
|
|
565
791
|
readonly "monitors.create": {
|
|
566
792
|
readonly method: "POST";
|
|
567
793
|
readonly path: "/v1/monitors";
|
|
@@ -632,6 +858,23 @@ export declare const OPERATIONS: {
|
|
|
632
858
|
readonly node: null;
|
|
633
859
|
readonly defaults: {};
|
|
634
860
|
};
|
|
861
|
+
readonly "monitors.occurrences": {
|
|
862
|
+
readonly method: "GET";
|
|
863
|
+
readonly path: "/v1/monitors/{monitor_id}/occurrences";
|
|
864
|
+
readonly pathParams: readonly ["monitor_id"];
|
|
865
|
+
readonly scope: "monitors:read";
|
|
866
|
+
readonly kind: "node";
|
|
867
|
+
readonly sensitivity: "normal";
|
|
868
|
+
readonly idempotency: "none";
|
|
869
|
+
readonly ifMatch: false;
|
|
870
|
+
readonly paged: true;
|
|
871
|
+
readonly status: 200;
|
|
872
|
+
readonly node: {
|
|
873
|
+
readonly path: "q/monitors/{monitor_id}/occurrences";
|
|
874
|
+
readonly list: "occurrences";
|
|
875
|
+
};
|
|
876
|
+
readonly defaults: {};
|
|
877
|
+
};
|
|
635
878
|
readonly "monitors.set_muted": {
|
|
636
879
|
readonly method: "PUT";
|
|
637
880
|
readonly path: "/v1/monitors/{monitor_id}/mute";
|
|
@@ -660,6 +903,22 @@ export declare const OPERATIONS: {
|
|
|
660
903
|
readonly node: null;
|
|
661
904
|
readonly defaults: {};
|
|
662
905
|
};
|
|
906
|
+
readonly "monitors.signal": {
|
|
907
|
+
readonly method: "GET";
|
|
908
|
+
readonly path: "/v1/monitors/{monitor_id}/signal";
|
|
909
|
+
readonly pathParams: readonly ["monitor_id"];
|
|
910
|
+
readonly scope: "monitors:read";
|
|
911
|
+
readonly kind: "node";
|
|
912
|
+
readonly sensitivity: "normal";
|
|
913
|
+
readonly idempotency: "none";
|
|
914
|
+
readonly ifMatch: false;
|
|
915
|
+
readonly paged: false;
|
|
916
|
+
readonly status: 200;
|
|
917
|
+
readonly node: {
|
|
918
|
+
readonly path: "q/monitors/{monitor_id}/signal";
|
|
919
|
+
};
|
|
920
|
+
readonly defaults: {};
|
|
921
|
+
};
|
|
663
922
|
readonly "monitors.update": {
|
|
664
923
|
readonly method: "PATCH";
|
|
665
924
|
readonly path: "/v1/monitors/{monitor_id}";
|
|
@@ -828,6 +1087,80 @@ export declare const OPERATIONS: {
|
|
|
828
1087
|
readonly node: null;
|
|
829
1088
|
readonly defaults: {};
|
|
830
1089
|
};
|
|
1090
|
+
readonly "notification_policies.delete": {
|
|
1091
|
+
readonly method: "DELETE";
|
|
1092
|
+
readonly path: "/v1/notification-policies/{policy_id}";
|
|
1093
|
+
readonly pathParams: readonly ["policy_id"];
|
|
1094
|
+
readonly scope: "alerts:write";
|
|
1095
|
+
readonly kind: "write";
|
|
1096
|
+
readonly sensitivity: "normal";
|
|
1097
|
+
readonly idempotency: "none";
|
|
1098
|
+
readonly ifMatch: false;
|
|
1099
|
+
readonly paged: false;
|
|
1100
|
+
readonly status: 200;
|
|
1101
|
+
readonly node: null;
|
|
1102
|
+
readonly defaults: {};
|
|
1103
|
+
};
|
|
1104
|
+
readonly "notification_policies.list": {
|
|
1105
|
+
readonly method: "GET";
|
|
1106
|
+
readonly path: "/v1/notification-policies";
|
|
1107
|
+
readonly pathParams: readonly [];
|
|
1108
|
+
readonly scope: "alerts:read";
|
|
1109
|
+
readonly kind: "read";
|
|
1110
|
+
readonly sensitivity: "normal";
|
|
1111
|
+
readonly idempotency: "none";
|
|
1112
|
+
readonly ifMatch: false;
|
|
1113
|
+
readonly paged: false;
|
|
1114
|
+
readonly status: 200;
|
|
1115
|
+
readonly node: null;
|
|
1116
|
+
readonly defaults: {};
|
|
1117
|
+
};
|
|
1118
|
+
readonly "notification_policies.save": {
|
|
1119
|
+
readonly method: "POST";
|
|
1120
|
+
readonly path: "/v1/notification-policies";
|
|
1121
|
+
readonly pathParams: readonly [];
|
|
1122
|
+
readonly scope: "alerts:write";
|
|
1123
|
+
readonly kind: "write";
|
|
1124
|
+
readonly sensitivity: "normal";
|
|
1125
|
+
readonly idempotency: "optional";
|
|
1126
|
+
readonly ifMatch: false;
|
|
1127
|
+
readonly paged: false;
|
|
1128
|
+
readonly status: 200;
|
|
1129
|
+
readonly node: null;
|
|
1130
|
+
readonly defaults: {};
|
|
1131
|
+
};
|
|
1132
|
+
readonly "occurrences.cancel": {
|
|
1133
|
+
readonly method: "DELETE";
|
|
1134
|
+
readonly path: "/v1/occurrences/{monitor_slug}/{occurrence_id}";
|
|
1135
|
+
readonly pathParams: readonly ["monitor_slug", "occurrence_id"];
|
|
1136
|
+
readonly scope: "monitors:write";
|
|
1137
|
+
readonly kind: "node";
|
|
1138
|
+
readonly sensitivity: "normal";
|
|
1139
|
+
readonly idempotency: "none";
|
|
1140
|
+
readonly ifMatch: false;
|
|
1141
|
+
readonly paged: false;
|
|
1142
|
+
readonly status: 200;
|
|
1143
|
+
readonly node: {
|
|
1144
|
+
readonly path: "w/monitors/occurrences/cancel";
|
|
1145
|
+
};
|
|
1146
|
+
readonly defaults: {};
|
|
1147
|
+
};
|
|
1148
|
+
readonly "occurrences.create": {
|
|
1149
|
+
readonly method: "POST";
|
|
1150
|
+
readonly path: "/v1/occurrences";
|
|
1151
|
+
readonly pathParams: readonly [];
|
|
1152
|
+
readonly scope: "monitors:write";
|
|
1153
|
+
readonly kind: "node";
|
|
1154
|
+
readonly sensitivity: "normal";
|
|
1155
|
+
readonly idempotency: "none";
|
|
1156
|
+
readonly ifMatch: false;
|
|
1157
|
+
readonly paged: false;
|
|
1158
|
+
readonly status: 200;
|
|
1159
|
+
readonly node: {
|
|
1160
|
+
readonly path: "w/monitors/occurrences";
|
|
1161
|
+
};
|
|
1162
|
+
readonly defaults: {};
|
|
1163
|
+
};
|
|
831
1164
|
readonly "ping_tokens.reset": {
|
|
832
1165
|
readonly method: "POST";
|
|
833
1166
|
readonly path: "/v1/monitors/{monitor_id}/ping-tokens/reset";
|
|
@@ -870,6 +1203,34 @@ export declare const OPERATIONS: {
|
|
|
870
1203
|
readonly node: null;
|
|
871
1204
|
readonly defaults: {};
|
|
872
1205
|
};
|
|
1206
|
+
readonly "privacy.get": {
|
|
1207
|
+
readonly method: "GET";
|
|
1208
|
+
readonly path: "/v1/projects/{project_id}/privacy";
|
|
1209
|
+
readonly pathParams: readonly ["project_id"];
|
|
1210
|
+
readonly scope: "projects:read";
|
|
1211
|
+
readonly kind: "read";
|
|
1212
|
+
readonly sensitivity: "normal";
|
|
1213
|
+
readonly idempotency: "none";
|
|
1214
|
+
readonly ifMatch: false;
|
|
1215
|
+
readonly paged: false;
|
|
1216
|
+
readonly status: 200;
|
|
1217
|
+
readonly node: null;
|
|
1218
|
+
readonly defaults: {};
|
|
1219
|
+
};
|
|
1220
|
+
readonly "privacy.set": {
|
|
1221
|
+
readonly method: "PUT";
|
|
1222
|
+
readonly path: "/v1/projects/{project_id}/privacy";
|
|
1223
|
+
readonly pathParams: readonly ["project_id"];
|
|
1224
|
+
readonly scope: "privacy:write";
|
|
1225
|
+
readonly kind: "write";
|
|
1226
|
+
readonly sensitivity: "approval";
|
|
1227
|
+
readonly idempotency: "optional";
|
|
1228
|
+
readonly ifMatch: false;
|
|
1229
|
+
readonly paged: false;
|
|
1230
|
+
readonly status: 200;
|
|
1231
|
+
readonly node: null;
|
|
1232
|
+
readonly defaults: {};
|
|
1233
|
+
};
|
|
873
1234
|
readonly "project_keys.create": {
|
|
874
1235
|
readonly method: "POST";
|
|
875
1236
|
readonly path: "/v1/projects/{project_id}/keys";
|
|
@@ -1030,7 +1391,7 @@ export declare const OPERATIONS: {
|
|
|
1030
1391
|
readonly pathParams: readonly ["project_id", "group"];
|
|
1031
1392
|
readonly scope: "privacy:write";
|
|
1032
1393
|
readonly kind: "write";
|
|
1033
|
-
readonly sensitivity: "
|
|
1394
|
+
readonly sensitivity: "approval";
|
|
1034
1395
|
readonly idempotency: "none";
|
|
1035
1396
|
readonly ifMatch: false;
|
|
1036
1397
|
readonly paged: false;
|
|
@@ -1559,8 +1920,9 @@ export interface OperationParams {
|
|
|
1559
1920
|
is_enabled: boolean;
|
|
1560
1921
|
notify_all: boolean;
|
|
1561
1922
|
destination_ids: Array<string>;
|
|
1562
|
-
monitor_kinds?: Array<"missed" | "failed" | "timeout" | "unknown">;
|
|
1923
|
+
monitor_kinds?: Array<"missed" | "failed" | "timeout" | "unknown" | "count" | "assertion" | "deadline" | "stalled">;
|
|
1563
1924
|
slo_severities?: Array<"page" | "ticket">;
|
|
1925
|
+
policy_id?: string | null;
|
|
1564
1926
|
};
|
|
1565
1927
|
/** Turn a rule on or off. */
|
|
1566
1928
|
"alert_rules.set_enabled": {
|
|
@@ -1583,9 +1945,26 @@ export interface OperationParams {
|
|
|
1583
1945
|
limit?: number;
|
|
1584
1946
|
cursor?: string;
|
|
1585
1947
|
};
|
|
1586
|
-
/**
|
|
1948
|
+
/** What each app is expected to send (surface × signal × environment) against what Belvador saw: `verified`, `stale`, `problem` or `unknown`, the verified rate, and signals seen but not declared. Same numbers as the Coverage page. */
|
|
1949
|
+
"coverage.get": {
|
|
1950
|
+
project_id?: number;
|
|
1951
|
+
environment?: string;
|
|
1952
|
+
};
|
|
1953
|
+
/** Replace a project's coverage expectations (one per environment × surface). `config_source: code` locks them in the app; send `ui` once to hand them back. Members and up. */
|
|
1954
|
+
"coverage.set": {
|
|
1955
|
+
project_id: number;
|
|
1956
|
+
config_source?: "ui" | "code";
|
|
1957
|
+
expectations: Array<{
|
|
1958
|
+
environment: string;
|
|
1959
|
+
surface: "browser" | "server" | "worker" | "job" | "edge_function" | "database" | "uptime";
|
|
1960
|
+
signals: Array<"errors" | "traces" | "logs" | "metrics" | "check_ins" | "web_vitals" | "probes">;
|
|
1961
|
+
stale_after_hours?: number;
|
|
1962
|
+
note?: string;
|
|
1963
|
+
}>;
|
|
1964
|
+
};
|
|
1965
|
+
/** Start adding a Telegram, Slack, email, webhook, PagerDuty or incident.io destination; a person enters its secrets. */
|
|
1587
1966
|
"destinations.create": {
|
|
1588
|
-
provider: "telegram" | "slack" | "email" | "webhook";
|
|
1967
|
+
provider: "telegram" | "slack" | "email" | "webhook" | "pagerduty" | "incident_io";
|
|
1589
1968
|
name: string;
|
|
1590
1969
|
project_ids: Array<number>;
|
|
1591
1970
|
locale: "vi" | "en";
|
|
@@ -1632,6 +2011,58 @@ export interface OperationParams {
|
|
|
1632
2011
|
issue_id: number;
|
|
1633
2012
|
cursor?: string;
|
|
1634
2013
|
};
|
|
2014
|
+
/** Delete an incident rule; open incidents stay as they are. */
|
|
2015
|
+
"incident_rules.delete": {
|
|
2016
|
+
rule_id: string;
|
|
2017
|
+
};
|
|
2018
|
+
/** Rules that turn alerts into incidents: match, grouping, window and recovery wait. */
|
|
2019
|
+
"incident_rules.list": Record<string, never>;
|
|
2020
|
+
/** Create (`rule_id` null) or replace an incident rule. Admins. */
|
|
2021
|
+
"incident_rules.save": {
|
|
2022
|
+
rule_id: string | null;
|
|
2023
|
+
input: {
|
|
2024
|
+
name: string;
|
|
2025
|
+
is_enabled: boolean;
|
|
2026
|
+
position?: number;
|
|
2027
|
+
project_ids: Array<number>;
|
|
2028
|
+
environments: Array<string>;
|
|
2029
|
+
kinds: Array<"monitor" | "uptime" | "slo" | "issue">;
|
|
2030
|
+
min_severity: "critical" | "high" | "medium" | "low";
|
|
2031
|
+
group_by: "monitor" | "project_env";
|
|
2032
|
+
window_minutes: number;
|
|
2033
|
+
recovery_hold_minutes: number;
|
|
2034
|
+
};
|
|
2035
|
+
};
|
|
2036
|
+
/** Take ownership of an open incident; stops its escalation. Members and up. */
|
|
2037
|
+
"incidents.acknowledge": {
|
|
2038
|
+
incident_id: string;
|
|
2039
|
+
};
|
|
2040
|
+
/** One incident with its linked alerts, timeline (notes included) and message deliveries (`accepted` = the provider took it; only a person acknowledges). */
|
|
2041
|
+
"incidents.get": {
|
|
2042
|
+
incident_id: string;
|
|
2043
|
+
};
|
|
2044
|
+
/** Incidents (INC-n): state, severity and peak, owner, linked alert count; newest first. */
|
|
2045
|
+
"incidents.list": {
|
|
2046
|
+
limit?: number;
|
|
2047
|
+
cursor?: string;
|
|
2048
|
+
state?: "active" | "resolved" | "all";
|
|
2049
|
+
};
|
|
2050
|
+
/** Add a note to the incident timeline (plain text, ≤ 2,000 characters). */
|
|
2051
|
+
"incidents.note": {
|
|
2052
|
+
incident_id: string;
|
|
2053
|
+
note: string;
|
|
2054
|
+
};
|
|
2055
|
+
/** Close an incident by hand with a reason (1–500 characters); it is labelled "not verified". */
|
|
2056
|
+
"incidents.resolve": {
|
|
2057
|
+
incident_id: string;
|
|
2058
|
+
note: string;
|
|
2059
|
+
};
|
|
2060
|
+
/** Rename an incident or assign it to a member (`owner_user_id: null` clears it). */
|
|
2061
|
+
"incidents.update": {
|
|
2062
|
+
incident_id: string;
|
|
2063
|
+
title?: string;
|
|
2064
|
+
owner_user_id?: string | null;
|
|
2065
|
+
};
|
|
1635
2066
|
/** Create an OTLP ingest key (`bvi_`). */
|
|
1636
2067
|
"ingest_keys.create": {
|
|
1637
2068
|
project_id: number;
|
|
@@ -1780,6 +2211,59 @@ export interface OperationParams {
|
|
|
1780
2211
|
order?: "asc" | "desc";
|
|
1781
2212
|
cursor?: string;
|
|
1782
2213
|
};
|
|
2214
|
+
/** Hold back monitor notifications during a one-off or weekly window (workspace, projects or monitors); monitors keep evaluating and recording. */
|
|
2215
|
+
"maintenance.create": Record<string, never> & ((Record<string, unknown>) & ({
|
|
2216
|
+
kind: "once";
|
|
2217
|
+
starts_at: string;
|
|
2218
|
+
scope: "workspace" | "project" | "monitor";
|
|
2219
|
+
project_ids: Array<number>;
|
|
2220
|
+
monitor_ids: Array<string>;
|
|
2221
|
+
timezone: string;
|
|
2222
|
+
duration_minutes: number;
|
|
2223
|
+
reason: string;
|
|
2224
|
+
} | {
|
|
2225
|
+
kind: "weekly";
|
|
2226
|
+
weekdays: Array<number>;
|
|
2227
|
+
start_time: string;
|
|
2228
|
+
scope: "workspace" | "project" | "monitor";
|
|
2229
|
+
project_ids: Array<number>;
|
|
2230
|
+
monitor_ids: Array<string>;
|
|
2231
|
+
timezone: string;
|
|
2232
|
+
duration_minutes: number;
|
|
2233
|
+
reason: string;
|
|
2234
|
+
}));
|
|
2235
|
+
/** Delete a maintenance window; notifications resume at once. */
|
|
2236
|
+
"maintenance.delete": {
|
|
2237
|
+
window_id: string;
|
|
2238
|
+
};
|
|
2239
|
+
/** Maintenance windows and whether each is active now. */
|
|
2240
|
+
"maintenance.list": {
|
|
2241
|
+
limit?: number;
|
|
2242
|
+
cursor?: string;
|
|
2243
|
+
};
|
|
2244
|
+
/** Replace a maintenance window's scope, times and reason. */
|
|
2245
|
+
"maintenance.update": {
|
|
2246
|
+
window_id: string;
|
|
2247
|
+
} & ((Record<string, unknown>) & ({
|
|
2248
|
+
kind: "once";
|
|
2249
|
+
starts_at: string;
|
|
2250
|
+
scope: "workspace" | "project" | "monitor";
|
|
2251
|
+
project_ids: Array<number>;
|
|
2252
|
+
monitor_ids: Array<string>;
|
|
2253
|
+
timezone: string;
|
|
2254
|
+
duration_minutes: number;
|
|
2255
|
+
reason: string;
|
|
2256
|
+
} | {
|
|
2257
|
+
kind: "weekly";
|
|
2258
|
+
weekdays: Array<number>;
|
|
2259
|
+
start_time: string;
|
|
2260
|
+
scope: "workspace" | "project" | "monitor";
|
|
2261
|
+
project_ids: Array<number>;
|
|
2262
|
+
monitor_ids: Array<string>;
|
|
2263
|
+
timezone: string;
|
|
2264
|
+
duration_minutes: number;
|
|
2265
|
+
reason: string;
|
|
2266
|
+
}));
|
|
1783
2267
|
/** Change a member's role. */
|
|
1784
2268
|
"members.change_role": {
|
|
1785
2269
|
user_id: string;
|
|
@@ -1794,10 +2278,55 @@ export interface OperationParams {
|
|
|
1794
2278
|
"members.remove": {
|
|
1795
2279
|
user_id: string;
|
|
1796
2280
|
};
|
|
1797
|
-
/**
|
|
1798
|
-
"monitors.
|
|
2281
|
+
/** How often count/assertion settings would have alerted over the last 30 days of stored data (same rule as the live evaluator). */
|
|
2282
|
+
"monitors.backtest": {
|
|
2283
|
+
project: number;
|
|
2284
|
+
settings: {
|
|
2285
|
+
type: "count";
|
|
2286
|
+
selector: {
|
|
2287
|
+
signal: "event" | "check_in" | "span" | "log";
|
|
2288
|
+
match: Array<{
|
|
2289
|
+
key: string;
|
|
2290
|
+
op: "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "in" | "exists" | "not_exists" | "prefix";
|
|
2291
|
+
value?: string | number | boolean | Array<string>;
|
|
2292
|
+
}>;
|
|
2293
|
+
};
|
|
2294
|
+
window_minutes: number;
|
|
2295
|
+
comparator: "lt" | "gt" | "outside";
|
|
2296
|
+
threshold: number;
|
|
2297
|
+
threshold_high: number | null;
|
|
2298
|
+
missing_data: "alert" | "keep" | "resolve" | "treat_as_zero";
|
|
2299
|
+
environments: Array<string>;
|
|
2300
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
2301
|
+
recovery_threshold: number;
|
|
2302
|
+
} | {
|
|
2303
|
+
type: "assertion";
|
|
2304
|
+
selector: {
|
|
2305
|
+
signal: "event" | "check_in" | "span" | "log";
|
|
2306
|
+
match: Array<{
|
|
2307
|
+
key: string;
|
|
2308
|
+
op: "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "in" | "exists" | "not_exists" | "prefix";
|
|
2309
|
+
value?: string | number | boolean | Array<string>;
|
|
2310
|
+
}>;
|
|
2311
|
+
};
|
|
2312
|
+
assert: Array<{
|
|
2313
|
+
key: string;
|
|
2314
|
+
op: "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "in" | "exists" | "not_exists" | "prefix";
|
|
2315
|
+
value?: string | number | boolean | Array<string>;
|
|
2316
|
+
}>;
|
|
2317
|
+
window_minutes: number;
|
|
2318
|
+
threshold: number;
|
|
2319
|
+
missing_data: "alert" | "keep" | "resolve" | "treat_as_zero";
|
|
2320
|
+
environments: Array<string>;
|
|
2321
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
2322
|
+
recovery_threshold: number;
|
|
2323
|
+
};
|
|
2324
|
+
};
|
|
2325
|
+
/** Create a cron or heartbeat monitor, or a signal monitor (`settings.type`: count, assertion, deadline, progress). A heartbeat monitor returns its ping token once. */
|
|
2326
|
+
"monitors.create": Record<string, never> & (({
|
|
1799
2327
|
project_id: number;
|
|
1800
2328
|
slug: string;
|
|
2329
|
+
}) & ({
|
|
1801
2330
|
name: string;
|
|
1802
2331
|
mode?: "check_in" | "heartbeat";
|
|
1803
2332
|
kind: "crontab" | "interval" | "on_demand";
|
|
@@ -1815,7 +2344,62 @@ export interface OperationParams {
|
|
|
1815
2344
|
failure_threshold: number;
|
|
1816
2345
|
recovery_threshold: number;
|
|
1817
2346
|
expected_environments: Array<string>;
|
|
1818
|
-
}
|
|
2347
|
+
} | {
|
|
2348
|
+
name: string;
|
|
2349
|
+
settings: {
|
|
2350
|
+
type: "count";
|
|
2351
|
+
selector: {
|
|
2352
|
+
signal: "event" | "check_in" | "span" | "log";
|
|
2353
|
+
match: Array<{
|
|
2354
|
+
key: string;
|
|
2355
|
+
op: "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "in" | "exists" | "not_exists" | "prefix";
|
|
2356
|
+
value?: string | number | boolean | Array<string>;
|
|
2357
|
+
}>;
|
|
2358
|
+
};
|
|
2359
|
+
window_minutes: number;
|
|
2360
|
+
comparator: "lt" | "gt" | "outside";
|
|
2361
|
+
threshold: number;
|
|
2362
|
+
threshold_high: number | null;
|
|
2363
|
+
missing_data: "alert" | "keep" | "resolve" | "treat_as_zero";
|
|
2364
|
+
environments: Array<string>;
|
|
2365
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
2366
|
+
recovery_threshold: number;
|
|
2367
|
+
} | {
|
|
2368
|
+
type: "assertion";
|
|
2369
|
+
selector: {
|
|
2370
|
+
signal: "event" | "check_in" | "span" | "log";
|
|
2371
|
+
match: Array<{
|
|
2372
|
+
key: string;
|
|
2373
|
+
op: "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "in" | "exists" | "not_exists" | "prefix";
|
|
2374
|
+
value?: string | number | boolean | Array<string>;
|
|
2375
|
+
}>;
|
|
2376
|
+
};
|
|
2377
|
+
assert: Array<{
|
|
2378
|
+
key: string;
|
|
2379
|
+
op: "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "in" | "exists" | "not_exists" | "prefix";
|
|
2380
|
+
value?: string | number | boolean | Array<string>;
|
|
2381
|
+
}>;
|
|
2382
|
+
window_minutes: number;
|
|
2383
|
+
threshold: number;
|
|
2384
|
+
missing_data: "alert" | "keep" | "resolve" | "treat_as_zero";
|
|
2385
|
+
environments: Array<string>;
|
|
2386
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
2387
|
+
recovery_threshold: number;
|
|
2388
|
+
} | {
|
|
2389
|
+
type: "deadline";
|
|
2390
|
+
occurrence_grace_minutes: number;
|
|
2391
|
+
progress_timeout_minutes: number | null;
|
|
2392
|
+
environments: Array<string>;
|
|
2393
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
2394
|
+
recovery_threshold: number;
|
|
2395
|
+
} | {
|
|
2396
|
+
type: "progress";
|
|
2397
|
+
progress_timeout_minutes: number;
|
|
2398
|
+
environments: Array<string>;
|
|
2399
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
2400
|
+
recovery_threshold: number;
|
|
2401
|
+
};
|
|
2402
|
+
}));
|
|
1819
2403
|
/** Delete a monitor; `confirm_slug` must repeat its slug. */
|
|
1820
2404
|
"monitors.delete": {
|
|
1821
2405
|
monitor_id: string;
|
|
@@ -1829,11 +2413,19 @@ export interface OperationParams {
|
|
|
1829
2413
|
"monitors.get": {
|
|
1830
2414
|
monitor_id: string;
|
|
1831
2415
|
};
|
|
1832
|
-
/**
|
|
2416
|
+
/** Monitors of every type (cron, heartbeat, count, assertion, deadline, progress); `type` narrows the list. */
|
|
1833
2417
|
"monitors.list": {
|
|
1834
2418
|
limit?: number;
|
|
1835
2419
|
cursor?: string;
|
|
1836
2420
|
project_id?: number;
|
|
2421
|
+
type?: "job" | "count" | "assertion" | "deadline" | "progress";
|
|
2422
|
+
};
|
|
2423
|
+
/** Occurrences of a deadline monitor (pending, on time, late, missed, failed, cancelled), newest due first. */
|
|
2424
|
+
"monitors.occurrences": {
|
|
2425
|
+
monitor_id: string;
|
|
2426
|
+
state?: "open" | "finished" | "all";
|
|
2427
|
+
environment?: string;
|
|
2428
|
+
cursor?: string;
|
|
1837
2429
|
};
|
|
1838
2430
|
/** Mute or unmute a monitor's alerts. */
|
|
1839
2431
|
"monitors.set_muted": {
|
|
@@ -1845,9 +2437,15 @@ export interface OperationParams {
|
|
|
1845
2437
|
monitor_id: string;
|
|
1846
2438
|
until: string | "forever" | null;
|
|
1847
2439
|
};
|
|
1848
|
-
/**
|
|
2440
|
+
/** A signal monitor's minute counts (count/assertion) for up to 24 h per environment, and its open runs (progress, deadline). */
|
|
2441
|
+
"monitors.signal": {
|
|
2442
|
+
monitor_id: string;
|
|
2443
|
+
hours?: number;
|
|
2444
|
+
};
|
|
2445
|
+
/** Replace a monitor's schedule, margins and thresholds, or a signal monitor's settings (the type stays). */
|
|
1849
2446
|
"monitors.update": {
|
|
1850
2447
|
monitor_id: string;
|
|
2448
|
+
} & ((Record<string, unknown>) & ({
|
|
1851
2449
|
name: string;
|
|
1852
2450
|
mode?: "check_in" | "heartbeat";
|
|
1853
2451
|
kind: "crontab" | "interval" | "on_demand";
|
|
@@ -1865,7 +2463,62 @@ export interface OperationParams {
|
|
|
1865
2463
|
failure_threshold: number;
|
|
1866
2464
|
recovery_threshold: number;
|
|
1867
2465
|
expected_environments: Array<string>;
|
|
1868
|
-
}
|
|
2466
|
+
} | {
|
|
2467
|
+
name: string;
|
|
2468
|
+
settings: {
|
|
2469
|
+
type: "count";
|
|
2470
|
+
selector: {
|
|
2471
|
+
signal: "event" | "check_in" | "span" | "log";
|
|
2472
|
+
match: Array<{
|
|
2473
|
+
key: string;
|
|
2474
|
+
op: "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "in" | "exists" | "not_exists" | "prefix";
|
|
2475
|
+
value?: string | number | boolean | Array<string>;
|
|
2476
|
+
}>;
|
|
2477
|
+
};
|
|
2478
|
+
window_minutes: number;
|
|
2479
|
+
comparator: "lt" | "gt" | "outside";
|
|
2480
|
+
threshold: number;
|
|
2481
|
+
threshold_high: number | null;
|
|
2482
|
+
missing_data: "alert" | "keep" | "resolve" | "treat_as_zero";
|
|
2483
|
+
environments: Array<string>;
|
|
2484
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
2485
|
+
recovery_threshold: number;
|
|
2486
|
+
} | {
|
|
2487
|
+
type: "assertion";
|
|
2488
|
+
selector: {
|
|
2489
|
+
signal: "event" | "check_in" | "span" | "log";
|
|
2490
|
+
match: Array<{
|
|
2491
|
+
key: string;
|
|
2492
|
+
op: "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "in" | "exists" | "not_exists" | "prefix";
|
|
2493
|
+
value?: string | number | boolean | Array<string>;
|
|
2494
|
+
}>;
|
|
2495
|
+
};
|
|
2496
|
+
assert: Array<{
|
|
2497
|
+
key: string;
|
|
2498
|
+
op: "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "in" | "exists" | "not_exists" | "prefix";
|
|
2499
|
+
value?: string | number | boolean | Array<string>;
|
|
2500
|
+
}>;
|
|
2501
|
+
window_minutes: number;
|
|
2502
|
+
threshold: number;
|
|
2503
|
+
missing_data: "alert" | "keep" | "resolve" | "treat_as_zero";
|
|
2504
|
+
environments: Array<string>;
|
|
2505
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
2506
|
+
recovery_threshold: number;
|
|
2507
|
+
} | {
|
|
2508
|
+
type: "deadline";
|
|
2509
|
+
occurrence_grace_minutes: number;
|
|
2510
|
+
progress_timeout_minutes: number | null;
|
|
2511
|
+
environments: Array<string>;
|
|
2512
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
2513
|
+
recovery_threshold: number;
|
|
2514
|
+
} | {
|
|
2515
|
+
type: "progress";
|
|
2516
|
+
progress_timeout_minutes: number;
|
|
2517
|
+
environments: Array<string>;
|
|
2518
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
2519
|
+
recovery_threshold: number;
|
|
2520
|
+
};
|
|
2521
|
+
}));
|
|
1869
2522
|
/** Start a backup now (at most once per 10 minutes). */
|
|
1870
2523
|
"node.backup_now": Record<string, never>;
|
|
1871
2524
|
/** Cancel a scheduled node deletion. */
|
|
@@ -1909,6 +2562,48 @@ export interface OperationParams {
|
|
|
1909
2562
|
"node.upgrade": {
|
|
1910
2563
|
node_id: string;
|
|
1911
2564
|
};
|
|
2565
|
+
/** Delete a policy (not the default); its rules fall back to the default policy. */
|
|
2566
|
+
"notification_policies.delete": {
|
|
2567
|
+
policy_id: string;
|
|
2568
|
+
};
|
|
2569
|
+
/** Notification policies: quiet hours, digest, fallback chain and escalation. */
|
|
2570
|
+
"notification_policies.list": Record<string, never>;
|
|
2571
|
+
/** Create (`policy_id` null) or replace a policy. Critical and high are never held; chains use existing destinations only. Admins. */
|
|
2572
|
+
"notification_policies.save": {
|
|
2573
|
+
policy_id: string | null;
|
|
2574
|
+
is_default: boolean;
|
|
2575
|
+
input: {
|
|
2576
|
+
name: string;
|
|
2577
|
+
timezone: string;
|
|
2578
|
+
quiet_hours: {
|
|
2579
|
+
days: Array<number>;
|
|
2580
|
+
start: string;
|
|
2581
|
+
end: string;
|
|
2582
|
+
} | null;
|
|
2583
|
+
quiet_severities: Array<"medium" | "low">;
|
|
2584
|
+
digest: "off" | "hourly" | "daily";
|
|
2585
|
+
digest_at: string | null;
|
|
2586
|
+
digest_severities: Array<"medium" | "low">;
|
|
2587
|
+
fallback: Array<string>;
|
|
2588
|
+
escalate_after_minutes: number | null;
|
|
2589
|
+
escalation: Array<string>;
|
|
2590
|
+
};
|
|
2591
|
+
};
|
|
2592
|
+
/** Cancel a pending occurrence (the app moved or dropped the job); a cancelled occurrence never alerts. */
|
|
2593
|
+
"occurrences.cancel": {
|
|
2594
|
+
monitor_slug: string;
|
|
2595
|
+
occurrence_id: string;
|
|
2596
|
+
project: number;
|
|
2597
|
+
environment?: string;
|
|
2598
|
+
};
|
|
2599
|
+
/** Register one run a deadline monitor expects (`due_at` within 35 days); the same id again moves its due time while it is pending. */
|
|
2600
|
+
"occurrences.create": {
|
|
2601
|
+
project: number;
|
|
2602
|
+
monitor_slug: string;
|
|
2603
|
+
occurrence_id: string;
|
|
2604
|
+
due_at: string;
|
|
2605
|
+
environment?: string;
|
|
2606
|
+
};
|
|
1912
2607
|
/** Suspected leak: stop every live ping token and issue a new one. */
|
|
1913
2608
|
"ping_tokens.reset": {
|
|
1914
2609
|
monitor_id: string;
|
|
@@ -1922,6 +2617,27 @@ export interface OperationParams {
|
|
|
1922
2617
|
monitor_id: string;
|
|
1923
2618
|
grace_hours: number;
|
|
1924
2619
|
};
|
|
2620
|
+
/** A project's privacy policy (mode, rules, strict allowlist, version), the built-in detectors that are off, whether user ids are pseudonymised, the last 20 versions and what the node applies and counted in the last 24 h. */
|
|
2621
|
+
"privacy.get": {
|
|
2622
|
+
project_id: number;
|
|
2623
|
+
};
|
|
2624
|
+
/** Replace a project's privacy policy (rules are applied in order on the node before anything is stored). Always needs an admin's approval; loosening (a rule removed or changed, strict off, allowlist grown) also needs their fresh authenticator code and emails owners. */
|
|
2625
|
+
"privacy.set": {
|
|
2626
|
+
project_id: number;
|
|
2627
|
+
expected_version: number;
|
|
2628
|
+
mode: "standard" | "strict";
|
|
2629
|
+
rules: Array<{
|
|
2630
|
+
id: string;
|
|
2631
|
+
selector: string;
|
|
2632
|
+
type: "pattern" | "anything" | "creditcard" | "ip" | "email" | "phone_e164";
|
|
2633
|
+
method: "remove" | "replace" | "mask" | "hash";
|
|
2634
|
+
pattern?: string;
|
|
2635
|
+
ignore_case?: boolean;
|
|
2636
|
+
replace_with?: string;
|
|
2637
|
+
enabled?: boolean;
|
|
2638
|
+
}>;
|
|
2639
|
+
allowlist: Array<string>;
|
|
2640
|
+
};
|
|
1925
2641
|
/** Add a DSN key. */
|
|
1926
2642
|
"project_keys.create": {
|
|
1927
2643
|
project_id: number;
|