@groundcover/api-client 0.20.0 → 0.22.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.
@@ -53,6 +53,13 @@ export type AgentLlmProviderConfig = {
53
53
  * Provider-compatible endpoint base URL, if configured.
54
54
  */
55
55
  baseUrl?: string;
56
+ /**
57
+ * Static provider configured by LLM_PROVIDER. Null when dummy_provider marks
58
+ * a deployment without a managed default. This is response-only metadata and
59
+ * is not part of AgentLLMProviderConfigRequest.
60
+ * Nullable: true
61
+ */
62
+ defaultProvider?: string | null;
56
63
  /**
57
64
  * Whether an API key secret ref is configured.
58
65
  */
@@ -330,6 +337,24 @@ export type AssertionSeverity = string;
330
337
  * AssertionSource defines model for Assertion.Source.
331
338
  */
332
339
  export type AssertionSource = string;
340
+ export type AssetExclusion = {
341
+ /**
342
+ * The type of the excluded asset.
343
+ */
344
+ asset_type: string;
345
+ /**
346
+ * When the asset was excluded.
347
+ */
348
+ excluded_at: string;
349
+ /**
350
+ * Email of the user who excluded the asset.
351
+ */
352
+ excluded_by: string;
353
+ /**
354
+ * The provider's asset identifier.
355
+ */
356
+ source_resource_id: string;
357
+ };
333
358
  export type AssetFetchResult = {
334
359
  /**
335
360
  * Error code if the fetch failed (e.g., "RATE_LIMITED", "UNAUTHORIZED").
@@ -442,7 +467,7 @@ export type AssetInstallResult = {
442
467
  /**
443
468
  * The status of the installation.
444
469
  */
445
- status: 'installed' | 'already_installed' | 'not_found' | 'not_convertible' | 'failed';
470
+ status: 'installed' | 'already_installed' | 'not_found' | 'not_convertible' | 'failed' | 'excluded';
446
471
  };
447
472
  export type AssetItem = {
448
473
  /**
@@ -502,6 +527,14 @@ export type AssetListItem = {
502
527
  * Format: date-time
503
528
  */
504
529
  discovered_at?: string;
530
+ /**
531
+ * When the asset was excluded. Absent when not excluded.
532
+ */
533
+ excluded_at?: string;
534
+ /**
535
+ * Email of the user who excluded this asset from the migration. Absent when not excluded.
536
+ */
537
+ excluded_by?: string;
505
538
  /**
506
539
  * The groundcover resource ID if installed.
507
540
  */
@@ -582,6 +615,14 @@ export type AssetMetadata = {
582
615
  * Monitor-specific: the beautified type of the monitor.
583
616
  */
584
617
  type?: string;
618
+ /**
619
+ * Dashboard-specific: Datadog-recorded views at fetch time.
620
+ */
621
+ viewCount?: number;
622
+ /**
623
+ * Dashboard-specific: new fetches use 1 (least viewed) through 5 (most viewed), based on log-scaled view counts.
624
+ */
625
+ viewRank?: number;
585
626
  };
586
627
  export type AssetSummaryResponseItem = {
587
628
  /**
@@ -773,6 +814,24 @@ export type BaseQuery = {
773
814
  rollup?: Rollup;
774
815
  sqlPipeline?: SqlPipeline;
775
816
  };
817
+ export type BatchDashboardsError = {
818
+ /**
819
+ * Code mirrors the single-route ErrorResponse.code contract so the UI can
820
+ * branch the same way: set to VIEW_REVISION_CONFLICT when the item lost a
821
+ * write race (retry the item), empty for permanent per-item failures.
822
+ */
823
+ code?: string;
824
+ id?: string;
825
+ reason?: string;
826
+ };
827
+ export type BatchDashboardsRequest = {
828
+ dashboardUuids: Array<string>;
829
+ };
830
+ export type BatchDashboardsResponse = {
831
+ errors?: Array<BatchDashboardsError>;
832
+ failedCount?: number;
833
+ updatedCount?: number;
834
+ };
776
835
  export type BatchGetMonitorsError = {
777
836
  message?: string;
778
837
  uuid?: string;
@@ -788,6 +847,36 @@ export type BatchGetMonitorsResponse = {
788
847
  [key: string]: string;
789
848
  };
790
849
  };
850
+ /**
851
+ * BatchReadMonitorsV2Response is the v2 twin of BatchGetMonitorsResponse: the
852
+ * stored entity (envelope + spec) per uuid instead of YAML text, with the same
853
+ * per-uuid partial success — a miss lands in Errors and never fails the batch.
854
+ */
855
+ export type BatchReadMonitorsV2Response = {
856
+ errors?: Array<BatchGetMonitorsError>;
857
+ failedCount?: number;
858
+ fetchedCount?: number;
859
+ monitors?: {
860
+ [key: string]: V2MonitorEntity;
861
+ };
862
+ };
863
+ export type BatchUpdateDashboardTagsRequest = {
864
+ dashboardUuids: Array<string>;
865
+ /**
866
+ * Tags to append to each dashboard. Entries are trimmed and exact-case
867
+ * deduplicated. At least one of tagsToAdd or tagsToRemove must be non-empty
868
+ * after normalization, and the two lists must not share a tag (400
869
+ * otherwise). 1000 is a resource-exhaustion bound, not a product tag limit:
870
+ * MAX_TAGS_PER_VIEW applies to each dashboard's resulting set
871
+ * (too_many_tags), not to the delta lists.
872
+ */
873
+ tagsToAdd?: Array<string>;
874
+ /**
875
+ * Tags to remove from each dashboard. Same normalization and disjointness
876
+ * rules as tagsToAdd; removing a tag a dashboard does not carry is a no-op.
877
+ */
878
+ tagsToRemove?: Array<string>;
879
+ };
791
880
  export type BucketDurationSeconds = number;
792
881
  /**
793
882
  * CatalogInstallRequest is the optional body for a catalog install.
@@ -2253,6 +2342,57 @@ export type CustomRule = {
2253
2342
  name: string;
2254
2343
  retention: string;
2255
2344
  };
2345
+ /**
2346
+ * DBMMeasurementsSearchRequest queries raw statement measurement intervals.
2347
+ *
2348
+ * A GCQL query is required. count() counts intervals;
2349
+ * sum(calls) counts database executions.
2350
+ */
2351
+ export type DbmMeasurementsSearchRequest = {
2352
+ /**
2353
+ * End time of the request range
2354
+ */
2355
+ end: string;
2356
+ query: string;
2357
+ sources?: Array<Condition>;
2358
+ /**
2359
+ * Start time of the request range
2360
+ */
2361
+ start: string;
2362
+ };
2363
+ export type DbmMeasurementsSearchTimeSeriesRequest = {
2364
+ /**
2365
+ * Positive interval used to group measurements into time buckets.
2366
+ */
2367
+ bucketDuration: string;
2368
+ /**
2369
+ * End time of the request range
2370
+ */
2371
+ end: string;
2372
+ /**
2373
+ * Empty buckets contain null unless fillValue is supplied.
2374
+ */
2375
+ fillValue?: number;
2376
+ query: string;
2377
+ sources?: Array<Condition>;
2378
+ /**
2379
+ * Start time of the request range
2380
+ */
2381
+ start: string;
2382
+ valueField?: string;
2383
+ };
2384
+ /**
2385
+ * DDMetricInactiveBucket counts units whose only unmet metric dependency is
2386
+ * confirmed inactive/missing in Datadog itself, tagging every metric involved
2387
+ * (a unit can mix a confirmed-inactive metric with a self-observability one;
2388
+ * see unitMissingMetricsAreDDInactiveOnly). Datadog itself never had data for
2389
+ * these metrics, so groundcover correctly has none either — a genuine,
2390
+ * successful migration outcome, not a gap to fix.
2391
+ */
2392
+ export type DdMetricInactiveBucket = {
2393
+ count?: number;
2394
+ metrics?: Array<TaggedMetric>;
2395
+ };
2256
2396
  /**
2257
2397
  * DashboardFiltersRequest is the POST /api/dashboards/filters request body.
2258
2398
  */
@@ -2678,14 +2818,21 @@ export type EventsSearchTimeSeriesRequest = {
2678
2818
  };
2679
2819
  /**
2680
2820
  * ExcludedBucket counts units held out of the funnel because their only unmet
2681
- * dependency is Datadog's own telemetry: a self-observability metric, or one
2682
- * already inactive in Datadog. Migration quality has no bearing on either —
2683
- * they were never going to return data — so they are reported separately
2684
- * rather than weighing on supported/unsupported like a real gap would.
2821
+ * dependency is Datadog's own telemetry: a self-observability metric. Migration
2822
+ * quality has no bearing on it — it was never going to return data — so it is
2823
+ * reported separately rather than weighing on supported/unsupported like a
2824
+ * real gap would.
2825
+ *
2826
+ * A unit confirmed inactive in Datadog (IssueDDInactiveOrMissing) no longer
2827
+ * lands here — see StageDDMetricInactive and DDMetricInactiveBucket, its own
2828
+ * green success bucket under SupportedConverted. The former InactiveInDatadog
2829
+ * field here was removed rather than kept as an always-zero counter: nothing
2830
+ * outside this package ever read it (the funnelviz decoder only reads Total,
2831
+ * and the CLI summary printer never printed Excluded at all), so there was no
2832
+ * reader to preserve compatibility for.
2685
2833
  */
2686
2834
  export type ExcludedBucket = {
2687
2835
  datadog_self_observability?: MetricListBucket;
2688
- inactive_in_datadog?: MetricListBucket;
2689
2836
  total?: number;
2690
2837
  };
2691
2838
  /**
@@ -2738,6 +2885,19 @@ export type ExportCapture = {
2738
2885
  */
2739
2886
  fullscreen?: boolean;
2740
2887
  };
2888
+ /**
2889
+ * ExportMonitorsV2Request is the POST /api/v2/monitors/export body.
2890
+ */
2891
+ export type ExportMonitorsV2Request = {
2892
+ /**
2893
+ * Format names the emitted resource.
2894
+ */
2895
+ format: 'terraform';
2896
+ /**
2897
+ * UUIDs of the monitors to export, rendered in this order.
2898
+ */
2899
+ uuids: Array<string>;
2900
+ };
2741
2901
  /**
2742
2902
  * ExportRequestBody represents the request body proxied to export-service.
2743
2903
  */
@@ -2870,6 +3030,13 @@ export type Finding = {
2870
3030
  integration?: string;
2871
3031
  issue_type?: IssueType;
2872
3032
  label_key?: string;
3033
+ /**
3034
+ * LabelKeyDD is the Datadog-side name of LabelKey, set only when a mapping
3035
+ * rule renamed it. Callers that match a finding against manifest filters —
3036
+ * which carry Datadog names — need both, because a rename makes the two
3037
+ * namespaces diverge and a GC-only comparison silently stops matching.
3038
+ */
3039
+ label_key_dd?: string;
2873
3040
  label_value?: string;
2874
3041
  label_values?: Array<string>;
2875
3042
  labels_used?: {
@@ -2889,11 +3056,21 @@ export type Finding = {
2889
3056
  */
2890
3057
  export type FunnelAssetEntry = {
2891
3058
  asset_id?: string;
3059
+ /**
3060
+ * AssetKind names the unsupported widget/monitor type when the unit never
3061
+ * reached conversion, e.g. "heatmap" or "slo".
3062
+ */
3063
+ asset_kind?: string;
2892
3064
  asset_name?: string;
2893
3065
  asset_type?: string;
2894
3066
  metrics?: Array<string>;
2895
3067
  missing_keys?: Array<string>;
2896
3068
  missing_values?: Array<string>;
3069
+ /**
3070
+ * PrimaryDataset is the one missing dataset the unit is counted under, when
3071
+ * the terminal stage is a missing-dataset gap.
3072
+ */
3073
+ primary_dataset?: string;
2897
3074
  queries?: Array<ExecutedQuery>;
2898
3075
  reason?: string;
2899
3076
  stage?: string;
@@ -2997,7 +3174,7 @@ export type GetEventsOverTimeRequest = {
2997
3174
  /**
2998
3175
  * Field to sort events by.
2999
3176
  */
3000
- sortBy: 'timestamp' | 'namespace' | 'instance' | 'object_kind' | 'firstSeen' | 'lastSeen' | 'type' | 'reason' | 'count' | 'workload' | 'cluster';
3177
+ sortBy: 'timestamp' | 'namespace' | 'instance' | 'object_kind' | 'firstSeen' | 'lastSeen' | 'type' | 'reason' | 'message' | 'count' | 'workload' | 'cluster';
3001
3178
  /**
3002
3179
  * Sort order.
3003
3180
  */
@@ -3203,6 +3380,10 @@ export type InstallAssetsResponse = {
3203
3380
  * The number of assets that were already installed.
3204
3381
  */
3205
3382
  alreadyInstalledCount?: number;
3383
+ /**
3384
+ * The number of assets that were not installed because they are excluded.
3385
+ */
3386
+ excludedCount?: number;
3206
3387
  /**
3207
3388
  * The number of assets that failed to install.
3208
3389
  */
@@ -3769,6 +3950,10 @@ export type ListAssetsByTypeResponse = {
3769
3950
  * List of assets.
3770
3951
  */
3771
3952
  items?: Array<AssetListItem>;
3953
+ /**
3954
+ * True when this router supports view-rank sorting for dashboards. Older routers omit it.
3955
+ */
3956
+ supports_view_rank_sort?: boolean;
3772
3957
  /**
3773
3958
  * Total number of assets.
3774
3959
  */
@@ -4080,6 +4265,13 @@ export type LogsRequestParams = {
4080
4265
  query?: string;
4081
4266
  selectors?: Array<Selector>;
4082
4267
  skip?: number;
4268
+ /**
4269
+ * SortBy is the column/attribute key to order by. Empty means order by
4270
+ * timestamp (the historical behavior). Any root column or attribute is
4271
+ * allowed; string columns are sorted best-effort numerically with a
4272
+ * lexicographic fallback (see search.BuildOrderByColumn).
4273
+ */
4274
+ sortBy?: string;
4083
4275
  sortOrder?: string;
4084
4276
  sources?: Array<Condition>;
4085
4277
  /**
@@ -4326,6 +4518,11 @@ export type MemberView = {
4326
4518
  originId?: string;
4327
4519
  originType?: string;
4328
4520
  owner?: string;
4521
+ /**
4522
+ * PinOrder is the member's pin weight, higher sorts first; nil when not
4523
+ * pinned. The client owns the numbering, so ties and gaps are possible.
4524
+ */
4525
+ pinOrder?: number;
4329
4526
  preset?: string;
4330
4527
  revisionNumber?: number;
4331
4528
  status?: string;
@@ -4672,7 +4869,8 @@ export type MigrationDataSourceItem = {
4672
4869
  * (AWS / GCP / Azure) this is prefixed with the cloud label and a
4673
4870
  * space, e.g. "AWS 123456789012", "GCP sa@my-prod.iam.gserviceaccount.com",
4674
4871
  * "Azure prod-azure-tenant". For non-cloud integrations it is the raw
4675
- * source-provider integration name (e.g. "redis", "kubelet").
4872
+ * source-provider integration name (e.g. "redis", "kubelet"); ordinary
4873
+ * unmapped customer metrics are grouped under "Custom Metrics".
4676
4874
  */
4677
4875
  datasourceName: string;
4678
4876
  /**
@@ -4692,7 +4890,8 @@ export type MigrationDataSourceItem = {
4692
4890
  */
4693
4891
  impactedMonitorsCount: number;
4694
4892
  /**
4695
- * The matching groundcover integration type, or null when unsupported or unmapped.
4893
+ * The matching groundcover integration type. Ordinary unmapped customer
4894
+ * metrics use "custom_metrics"; null is reserved for unsupported vendor telemetry.
4696
4895
  */
4697
4896
  integrationType?: string | null;
4698
4897
  /**
@@ -5092,6 +5291,11 @@ export type OpsGenieData = {
5092
5291
  severity_mapping?: {
5093
5292
  [key: string]: string;
5094
5293
  };
5294
+ /**
5295
+ * Tags added to every alert sent through this destination. Supports up to 20
5296
+ * non-empty tags of at most 50 Unicode characters.
5297
+ */
5298
+ tags?: Array<string>;
5095
5299
  };
5096
5300
  export type OpsGenieDataResponse = {
5097
5301
  /**
@@ -5104,6 +5308,11 @@ export type OpsGenieDataResponse = {
5104
5308
  severity_mapping?: {
5105
5309
  [key: string]: string;
5106
5310
  };
5311
+ /**
5312
+ * Tags added to every alert sent through this destination. Supports up to 20
5313
+ * non-empty tags of at most 50 Unicode characters.
5314
+ */
5315
+ tags?: Array<string>;
5107
5316
  };
5108
5317
  /**
5109
5318
  * OrderedReasons is a list of reason→count pairs that marshals as a JSON object
@@ -5212,6 +5421,32 @@ export type PatternParamDistributionValue = {
5212
5421
  patternParamValueCount?: number;
5213
5422
  patternParamValuePercentage?: number;
5214
5423
  };
5424
+ /**
5425
+ * PinViewRequest is the body of POST /api/views/{id}/pin.
5426
+ */
5427
+ export type PinViewRequest = {
5428
+ /**
5429
+ * Order is this view's weight in the member's pin list: higher sorts first,
5430
+ * so send the highest order currently pinned + 1 to put the new pin on top.
5431
+ * Do not send the length of the visible list — archiving clears pins
5432
+ * without packing the numbers, so a length can collide with a live pin.
5433
+ * The client owns the numbering, so the server stores it as sent. It is
5434
+ * int32 to match the pin_order column: a wider value would decode fine here
5435
+ * and then fail at encode time as a 500.
5436
+ */
5437
+ order: number;
5438
+ };
5439
+ /**
5440
+ * PinnedResource is one entry of a member's ordered pin list. PinOrder is
5441
+ * exposed so a client that only reads this endpoint can still compute the next
5442
+ * pin's number without also fetching the dashboards list.
5443
+ */
5444
+ export type PinnedResource = {
5445
+ name?: string;
5446
+ pinOrder?: number;
5447
+ resourceType?: string;
5448
+ resourceUuid?: string;
5449
+ };
5215
5450
  /**
5216
5451
  * Policy defines an access control policy.
5217
5452
  */
@@ -5283,9 +5518,13 @@ export type PositiveNoDataBucket = {
5283
5518
  pct?: number;
5284
5519
  };
5285
5520
  /**
5286
- * PreflightReport is the top-level structured output of a preflight validation run.
5521
+ * PreflightReportResponse is the preflight report plus backend-only counters.
5287
5522
  */
5288
- export type PreflightReport = {
5523
+ export type PreflightReportResponse = {
5524
+ /**
5525
+ * AssetsReextracted counts assets converted before converted_queries was stored; a non-zero value means the tenant needs a reconvert.
5526
+ */
5527
+ assets_reextracted?: number;
5289
5528
  coverage_plan?: CoveragePlan;
5290
5529
  funnel_by_asset?: FunnelByAsset;
5291
5530
  /**
@@ -5315,6 +5554,47 @@ export type Processor = {
5315
5554
  args?: Array<unknown>;
5316
5555
  op?: string;
5317
5556
  };
5557
+ /**
5558
+ * FlameNode contains inclusive and self weight in the selected sample unit.
5559
+ */
5560
+ export type ProfilingFlameNode = {
5561
+ children?: Array<ProfilingFlameNode>;
5562
+ name?: string;
5563
+ /**
5564
+ * Omitted identifies a synthetic bucket, distinct from a real frame named other.
5565
+ */
5566
+ omitted?: boolean;
5567
+ self?: number;
5568
+ value?: number;
5569
+ };
5570
+ export type ProfilingFlamegraphResponse = {
5571
+ filteredValue?: number;
5572
+ period?: ProfilingPeriod;
5573
+ profileType?: string;
5574
+ root?: ProfilingFlameNode;
5575
+ sampleType?: string;
5576
+ stacks?: ProfilingStackCounts;
5577
+ total?: number;
5578
+ truncated?: boolean;
5579
+ unit?: string;
5580
+ };
5581
+ export type ProfilingPeriod = {
5582
+ end?: string;
5583
+ start?: string;
5584
+ };
5585
+ /**
5586
+ * StackCounts counts aggregated stacks, not samples or rendered tree nodes.
5587
+ */
5588
+ export type ProfilingStackCounts = {
5589
+ /**
5590
+ * Stacks included in the tree before depth, node, and small-branch compaction.
5591
+ */
5592
+ returned?: number;
5593
+ /**
5594
+ * Matching aggregated stacks before the top-stack limit or result truncation.
5595
+ */
5596
+ total?: number;
5597
+ };
5318
5598
  /**
5319
5599
  * PromqlFunction represents a function call in a PromQL query.
5320
5600
  */
@@ -5870,7 +6150,7 @@ export type SearchValuesRequest = {
5870
6150
  /**
5871
6151
  * Type of the search values
5872
6152
  */
5873
- type: 'logs' | 'traces' | 'events' | 'issues' | 'entities' | 'apm' | 'ingestion_measurements' | 'monitors' | 'aws_cur' | 'dashboards';
6153
+ type: 'logs' | 'traces' | 'events' | 'issues' | 'entities' | 'apm' | 'ingestion_measurements' | 'dbm_measurements_statement' | 'monitors' | 'aws_cur' | 'dashboards' | 'profiling_samples';
5874
6154
  };
5875
6155
  export type SearchValuesRequestV2 = {
5876
6156
  /**
@@ -6183,6 +6463,19 @@ export type SessionsSummaryResponse = {
6183
6463
  totalSessions?: number;
6184
6464
  uniqueUsers?: number;
6185
6465
  };
6466
+ /**
6467
+ * SetMemberPinsOrderRequest is the body of PUT /api/views/member/pins/order.
6468
+ */
6469
+ export type SetMemberPinsOrderRequest = {
6470
+ /**
6471
+ * Ids is the pinned resource UUIDs first-to-last, as the list should
6472
+ * render. Send the member's whole pin list: pins left out keep their old
6473
+ * number, and an id that is not pinned is dropped before numbering, so the
6474
+ * survivors are numbered N..1 with no gaps. No length cap: pins are
6475
+ * uncapped too, and the whole list must fit in one request to keep order.
6476
+ */
6477
+ ids: Array<string>;
6478
+ };
6186
6479
  /**
6187
6480
  * Severity represents the severity level for warnings, alerts, etc.
6188
6481
  */
@@ -6474,6 +6767,7 @@ export type SuggestionReason = {
6474
6767
  */
6475
6768
  export type SupportedConvertedBucket = {
6476
6769
  data_set_available?: DataSetAvailableBucket;
6770
+ dd_metric_inactive?: DdMetricInactiveBucket;
6477
6771
  missing_underlying_data_set?: MissingDataSetBucket;
6478
6772
  no_data_needed?: NoDataNeededBucket;
6479
6773
  total?: number;
@@ -6674,6 +6968,10 @@ export type TenantResponse = {
6674
6968
  TenantName?: string;
6675
6969
  Used?: number;
6676
6970
  };
6971
+ /**
6972
+ * TerraformDocument is one HCL document.
6973
+ */
6974
+ export type TerraformDocument = string;
6677
6975
  export type TestConnectedAppRequest = {
6678
6976
  /**
6679
6977
  * The ID of an existing connected app (optional).
@@ -7813,6 +8111,13 @@ export type UsedByResponse = {
7813
8111
  */
7814
8112
  type?: string;
7815
8113
  };
8114
+ /**
8115
+ * Channel identifies a Slack channel.
8116
+ */
8117
+ export type V2Channel = {
8118
+ id?: string;
8119
+ name?: string;
8120
+ };
7816
8121
  export type V2CreateSilenceRequest = {
7817
8122
  /**
7818
8123
  * Optional comment
@@ -7854,6 +8159,206 @@ export type V2CreateSilenceRequest = {
7854
8159
  */
7855
8160
  type: 'one_time' | 'recurring';
7856
8161
  };
8162
+ /**
8163
+ * DestinationApp carries at most one delivery-options block. The spec cannot
8164
+ * check the block against the app id's integration type; the write service does.
8165
+ */
8166
+ export type V2DestinationApp = {
8167
+ id?: string;
8168
+ linear?: V2LinearDeliveryOptions;
8169
+ slack?: V2SlackDeliveryOptions;
8170
+ };
8171
+ /**
8172
+ * Destinations is direct delivery. StatusFilters omitted = all.
8173
+ */
8174
+ export type V2Destinations = {
8175
+ apps?: Array<V2DestinationApp>;
8176
+ statusFilters?: Array<IssueStatus>;
8177
+ };
8178
+ /**
8179
+ * EvaluationInterval carries the evaluation cadence and pending window. The
8180
+ * prom_duration tag param is the example in the error text, not a bound; the
8181
+ * real bounds are struct-level rules.
8182
+ */
8183
+ export type V2EvaluationInterval = {
8184
+ /**
8185
+ * Whole seconds, >= 1m (plus rollup floors — see the struct-level rules).
8186
+ */
8187
+ interval?: string;
8188
+ /**
8189
+ * nil = default applied on read. Whole seconds.
8190
+ */
8191
+ pendingFor?: string;
8192
+ };
8193
+ /**
8194
+ * FiringThreshold is the static-threshold condition. Values cardinality is
8195
+ * per-operator: 1 scalar, 2 ascending.
8196
+ */
8197
+ export type V2FiringThreshold = {
8198
+ operator?: string;
8199
+ recovery?: V2RecoveryThreshold;
8200
+ values?: Array<number>;
8201
+ };
8202
+ /**
8203
+ * IssueDisplay controls how the resulting issue is rendered.
8204
+ */
8205
+ export type V2IssueDisplay = {
8206
+ contextLabels?: Array<string>;
8207
+ description?: string;
8208
+ templateLanguage?: string;
8209
+ title?: string;
8210
+ };
8211
+ /**
8212
+ * LinearDeliveryOptions requires TeamID when present. Delivery treats an
8213
+ * omitted ResolveTicket as true, so ResolvedStatusID is required unless it is
8214
+ * explicitly false.
8215
+ */
8216
+ export type V2LinearDeliveryOptions = {
8217
+ assigneeId?: string;
8218
+ delegateId?: string;
8219
+ labelIds?: Array<string>;
8220
+ projectId?: string;
8221
+ resolveTicket?: boolean;
8222
+ resolvedStatusId?: string;
8223
+ teamId?: string;
8224
+ };
8225
+ /**
8226
+ * V2MonitorEntity is the wire shape of one monitor in the batch-read
8227
+ * response: the envelope fields callers use, plus the spec. A type of its
8228
+ * own, not model.Monitor — a column added to that storage row does not
8229
+ * automatically reach this response.
8230
+ */
8231
+ export type V2MonitorEntity = {
8232
+ backendId?: string;
8233
+ createdAt?: string;
8234
+ createdByEmail?: string;
8235
+ grafanaMonitorId?: string;
8236
+ isProvisioned?: boolean;
8237
+ originId?: string;
8238
+ originType?: string;
8239
+ spec?: V2MonitorSpec;
8240
+ updatedAt?: string;
8241
+ uuid?: string;
8242
+ };
8243
+ /**
8244
+ * Model wraps the single query and the thresholds list, capped at one item.
8245
+ */
8246
+ export type V2MonitorModel = {
8247
+ query?: V2Query;
8248
+ thresholds?: Array<V2ThresholdSpec>;
8249
+ };
8250
+ /**
8251
+ * MonitorSpec is the v2 monitor document. Value = required outright.
8252
+ * Pointer = optional: nil means the author omitted it, and that intent is
8253
+ * PRESERVED in the stored document — defaults are applied on read, never
8254
+ * baked in at write.
8255
+ *
8256
+ * The validate tags include custom ones registered only by this package.
8257
+ * Validate through ValidateSpec — a bare validator panics.
8258
+ */
8259
+ export type V2MonitorSpec = {
8260
+ /**
8261
+ * Deprecated: workflows-only. Reserved _gc_* keys are rejected.
8262
+ */
8263
+ annotations?: {
8264
+ [key: string]: string;
8265
+ };
8266
+ /**
8267
+ * nil = default (true) applied on read.
8268
+ */
8269
+ autoResolve?: boolean;
8270
+ /**
8271
+ * Category is free-form — the built-ins use Infrastructure|API|… but custom
8272
+ * values exist in the fleet, so there is no enum. "" is omitted/no-data.
8273
+ */
8274
+ category?: string;
8275
+ evaluationErrorState?: string;
8276
+ evaluationInterval?: V2EvaluationInterval;
8277
+ evaluationNoDataState?: string;
8278
+ isPaused?: boolean;
8279
+ issueDisplay?: V2IssueDisplay;
8280
+ /**
8281
+ * Reserved _gc_* keys are rejected.
8282
+ */
8283
+ labels?: {
8284
+ [key: string]: string;
8285
+ };
8286
+ /**
8287
+ * MeasurementType switches the timeline query builder; nil = derived on read.
8288
+ */
8289
+ measurementType?: string;
8290
+ model?: V2MonitorModel;
8291
+ name?: string;
8292
+ notificationSettings?: V2NotificationSettings;
8293
+ /**
8294
+ * Severity is "" when omitted; that intent is preserved, defaults are
8295
+ * applied on read.
8296
+ */
8297
+ severity?: string;
8298
+ /**
8299
+ * Tags are free-form; items must not be blank.
8300
+ */
8301
+ tags?: Array<string>;
8302
+ team?: string;
8303
+ /**
8304
+ * Type is the dataType; query language and datasource are inferred from it.
8305
+ * monitor_type defers to the registry — see registry.go for the set.
8306
+ */
8307
+ type?: string;
8308
+ };
8309
+ /**
8310
+ * NoNotifications is the suppress-everything mode marker.
8311
+ */
8312
+ export type V2NoNotifications = {
8313
+ [key: string]: unknown;
8314
+ };
8315
+ /**
8316
+ * NotificationRoutes is the route-based delivery mode marker.
8317
+ */
8318
+ export type V2NotificationRoutes = {
8319
+ [key: string]: unknown;
8320
+ };
8321
+ /**
8322
+ * NotificationSettings requires exactly one mode block; there is no default.
8323
+ *
8324
+ * The renotification knobs apply to any mode.
8325
+ */
8326
+ export type V2NotificationSettings = {
8327
+ destinations?: V2Destinations;
8328
+ disableRenotification?: boolean;
8329
+ noNotifications?: V2NoNotifications;
8330
+ notificationRoutes?: V2NotificationRoutes;
8331
+ renotificationInterval?: string;
8332
+ };
8333
+ /**
8334
+ * Query is the whole expression, in the language MonitorSpec.Type implies.
8335
+ */
8336
+ export type V2Query = {
8337
+ /**
8338
+ * Shifts the eval window back, length unchanged. Whole seconds, at most 7d.
8339
+ * Rejected where Rollup is.
8340
+ */
8341
+ evaluationDelay?: string;
8342
+ expression?: string;
8343
+ /**
8344
+ * Lookback window: whole seconds, positive. Required when the type has a
8345
+ * time axis, rejected otherwise (sql, timeless datasets).
8346
+ */
8347
+ rollup?: string;
8348
+ /**
8349
+ * Required iff metrics, rejected otherwise.
8350
+ */
8351
+ rollupFunction?: string;
8352
+ };
8353
+ /**
8354
+ * RecoveryThreshold is the hysteresis condition; its region must not overlap
8355
+ * the firing one. Operator is the author's choice from the recovery-capable
8356
+ * set — required, never defaulted.
8357
+ */
8358
+ export type V2RecoveryThreshold = {
8359
+ operator?: string;
8360
+ values?: Array<number>;
8361
+ };
7857
8362
  export type V2SilenceResponse = {
7858
8363
  active?: boolean;
7859
8364
  comment?: string;
@@ -7893,6 +8398,18 @@ export type V2SilencesListResponse = {
7893
8398
  */
7894
8399
  silences?: Array<V2SilenceResponse>;
7895
8400
  };
8401
+ /**
8402
+ * SlackDeliveryOptions requires a non-empty Channels when present.
8403
+ */
8404
+ export type V2SlackDeliveryOptions = {
8405
+ channels?: Array<V2Channel>;
8406
+ };
8407
+ /**
8408
+ * ThresholdSpec is one condition block; Firing is its only arm today.
8409
+ */
8410
+ export type V2ThresholdSpec = {
8411
+ firing?: V2FiringThreshold;
8412
+ };
7896
8413
  export type V2UpdateSilenceRequest = {
7897
8414
  comment?: string;
7898
8415
  /**
@@ -7938,6 +8455,7 @@ export type ValueItem = {
7938
8455
  value?: string;
7939
8456
  };
7940
8457
  export type ValueMapping = {
8458
+ evidence?: MappingEvidence;
7941
8459
  /**
7942
8460
  * GroundcoverKey is derived from SourceKey and the applicable key mapping.
7943
8461
  * It is returned for display but is never applied as a separate key-mapping rule.
@@ -7952,6 +8470,10 @@ export type ValueMapping = {
7952
8470
  * It is not supported for logs, traces, or events.
7953
8471
  */
7954
8472
  metric_pattern?: string;
8473
+ /**
8474
+ * Origin is server-owned normalization provenance.
8475
+ */
8476
+ readonly origin?: string;
7955
8477
  /**
7956
8478
  * SourceKey is the exact Datadog key whose value should be mapped.
7957
8479
  */
@@ -8477,7 +8999,7 @@ export type MappingConfigWritable = {
8477
8999
  metric_name_char_replace?: {
8478
9000
  [key: string]: string;
8479
9001
  };
8480
- value_mappings?: Array<ValueMapping>;
9002
+ value_mappings?: Array<ValueMappingWritable>;
8481
9003
  };
8482
9004
  export type MappingResponseWritable = {
8483
9005
  config?: MappingConfigWritable;
@@ -8552,6 +9074,31 @@ export type UpdateMappingsRequestWritable = {
8552
9074
  */
8553
9075
  version: number;
8554
9076
  };
9077
+ export type ValueMappingWritable = {
9078
+ evidence?: MappingEvidence;
9079
+ /**
9080
+ * GroundcoverKey is derived from SourceKey and the applicable key mapping.
9081
+ * It is returned for display but is never applied as a separate key-mapping rule.
9082
+ */
9083
+ groundcover_key?: string;
9084
+ /**
9085
+ * GroundcoverValue is the replacement value in the converted query.
9086
+ */
9087
+ groundcover_value: string;
9088
+ /**
9089
+ * MetricPattern optionally scopes this mapping to groundcover metric names (not source metric names).
9090
+ * It is not supported for logs, traces, or events.
9091
+ */
9092
+ metric_pattern?: string;
9093
+ /**
9094
+ * SourceKey is the exact Datadog key whose value should be mapped.
9095
+ */
9096
+ source_key: string;
9097
+ /**
9098
+ * SourceValue is the exact Datadog value to replace.
9099
+ */
9100
+ source_value: string;
9101
+ };
8555
9102
  export type AgentSkillRequest2 = AgentSkillRequest;
8556
9103
  export type CreateUpdateLogsPipelineConfigRequest2 = CreateUpdateLogsPipelineConfigRequest;
8557
9104
  export type StorageManagementPolicyRequest2 = StorageManagementPolicyRequest;
@@ -11154,6 +11701,66 @@ export type UpdateMetricsPipelineConfigResponses = {
11154
11701
  200: MetricsPipelineConfigInfo;
11155
11702
  };
11156
11703
  export type UpdateMetricsPipelineConfigResponse = UpdateMetricsPipelineConfigResponses[keyof UpdateMetricsPipelineConfigResponses];
11704
+ export type GetProfilingFlamegraphData = {
11705
+ body?: never;
11706
+ path?: never;
11707
+ query: {
11708
+ /**
11709
+ * Start time of the request range
11710
+ */
11711
+ start: string;
11712
+ /**
11713
+ * End time of the request range
11714
+ */
11715
+ end: string;
11716
+ /**
11717
+ * GCQL filter expression pinning workload, profile_type, and sample_type.
11718
+ */
11719
+ query: string;
11720
+ /**
11721
+ * Maximum distinct stacks. Defaults to 6000 and is capped at 50000.
11722
+ */
11723
+ limit?: number;
11724
+ };
11725
+ url: '/api/profiling/flamegraph';
11726
+ };
11727
+ export type GetProfilingFlamegraphErrors = {
11728
+ /**
11729
+ * ErrorResponse defines a common error response structure.
11730
+ */
11731
+ 400: {
11732
+ message?: string;
11733
+ };
11734
+ /**
11735
+ * ErrorResponse defines a common error response structure.
11736
+ */
11737
+ 404: {
11738
+ message?: string;
11739
+ };
11740
+ /**
11741
+ * ErrorResponse defines a common error response structure.
11742
+ */
11743
+ 422: {
11744
+ message?: string;
11745
+ };
11746
+ /**
11747
+ * ErrorResponse defines a common error response structure.
11748
+ */
11749
+ 500: {
11750
+ message?: string;
11751
+ };
11752
+ /**
11753
+ * ErrorResponse defines a common error response structure.
11754
+ */
11755
+ 504: {
11756
+ message?: string;
11757
+ };
11758
+ };
11759
+ export type GetProfilingFlamegraphError = GetProfilingFlamegraphErrors[keyof GetProfilingFlamegraphErrors];
11760
+ export type GetProfilingFlamegraphResponses = {
11761
+ 200: ProfilingFlamegraphResponse;
11762
+ };
11763
+ export type GetProfilingFlamegraphResponse = GetProfilingFlamegraphResponses[keyof GetProfilingFlamegraphResponses];
11157
11764
  export type DeleteApiKeyData = {
11158
11765
  body?: never;
11159
11766
  path: {
@@ -12371,3 +12978,31 @@ export type SearchTracesError = SearchTracesErrors[keyof SearchTracesErrors];
12371
12978
  export type SearchTracesResponses = {
12372
12979
  200: unknown;
12373
12980
  };
12981
+ export type ExportMonitorsV2Data = {
12982
+ body: ExportMonitorsV2Request;
12983
+ path?: never;
12984
+ query?: never;
12985
+ url: '/api/v2/monitors/export';
12986
+ };
12987
+ export type ExportMonitorsV2Errors = {
12988
+ /**
12989
+ * ErrorResponse defines a common error response structure.
12990
+ */
12991
+ 400: {
12992
+ message?: string;
12993
+ };
12994
+ /**
12995
+ * ErrorResponse defines a common error response structure.
12996
+ */
12997
+ 500: {
12998
+ message?: string;
12999
+ };
13000
+ };
13001
+ export type ExportMonitorsV2Error = ExportMonitorsV2Errors[keyof ExportMonitorsV2Errors];
13002
+ export type ExportMonitorsV2Responses = {
13003
+ /**
13004
+ * ExportMonitorsV2ResponseWrapper is the HCL document, served as text/plain.
13005
+ */
13006
+ 200: TerraformDocument;
13007
+ };
13008
+ export type ExportMonitorsV2Response = ExportMonitorsV2Responses[keyof ExportMonitorsV2Responses];