@tailglow/cli 0.2.0 → 0.2.1

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.
@@ -194,6 +194,14 @@ export const CLI_COMMANDS = [
194
194
  "allowed_values": [],
195
195
  "deprecated": null
196
196
  },
197
+ {
198
+ "name": "late_data_window_minutes",
199
+ "type": "integer",
200
+ "required": false,
201
+ "description": "How many minutes behind the completeness watermark an event with an overridden timestamp may arrive and still be included automatically. Later data is recorded and surfaced for manual re-backfill instead of being included. 0 means the watermark is final as it advances. Only events with overridden timestamps can be late; data sent live is never affected. Maximum 129600 (90 days). Optional. Minimum: `0`. Maximum: `129600`.",
202
+ "allowed_values": [],
203
+ "deprecated": null
204
+ },
197
205
  {
198
206
  "name": "deleted_at",
199
207
  "type": "null",
@@ -216,7 +224,155 @@ export const CLI_COMMANDS = [
216
224
  "scopes": [
217
225
  "projects:delete"
218
226
  ],
219
- "notes": [],
227
+ "notes": [
228
+ "The project is hidden immediately and permanently removed 7 days later. Restore it before then by updating it with `deleted_at` set to null."
229
+ ],
230
+ "path_params": [
231
+ {
232
+ "name": "project_id",
233
+ "type": "string",
234
+ "required": true,
235
+ "description": "Unique identifier of the project.",
236
+ "allowed_values": [],
237
+ "deprecated": null
238
+ }
239
+ ],
240
+ "query_params": [],
241
+ "body_fields": []
242
+ },
243
+ {
244
+ "resource": "projects",
245
+ "command": "force-delete",
246
+ "operation_id": "forceDeleteProject",
247
+ "summary": "Force Delete Project",
248
+ "description": "Delete a project permanently, without waiting out its restore window.",
249
+ "method": "DELETE",
250
+ "path": "/v1/projects/:project_id/force",
251
+ "alternate_paths": [],
252
+ "scopes": [
253
+ "projects:delete"
254
+ ],
255
+ "notes": [
256
+ "Works on a live project as well as one already scheduled for deletion.",
257
+ "Every source, collection, view, metric and record in the project is destroyed immediately, and its servers are torn down. Nothing here can be restored."
258
+ ],
259
+ "path_params": [
260
+ {
261
+ "name": "project_id",
262
+ "type": "string",
263
+ "required": true,
264
+ "description": "Unique identifier of the project.",
265
+ "allowed_values": [],
266
+ "deprecated": null
267
+ }
268
+ ],
269
+ "query_params": [],
270
+ "body_fields": []
271
+ },
272
+ {
273
+ "resource": "projects",
274
+ "command": "list-late-data",
275
+ "operation_id": "listLateData",
276
+ "summary": "List Late Data",
277
+ "description": "Retrieve the events held out of charts by the project's late data window, grouped per data file.",
278
+ "method": "GET",
279
+ "path": "/v1/projects/:project_id/late_data",
280
+ "alternate_paths": [],
281
+ "scopes": [
282
+ "projects:read"
283
+ ],
284
+ "notes": [
285
+ "Events with overridden timestamps beyond the late data window are stored and counted here instead of entering charts. Data sent live is never held.",
286
+ "Records with `refolded_at` set have already been folded into charts by a completed re-backfill; filter with `refolded=false` for records still waiting.",
287
+ "`after` and `before` are mutually exclusive."
288
+ ],
289
+ "path_params": [
290
+ {
291
+ "name": "project_id",
292
+ "type": "string",
293
+ "required": true,
294
+ "description": "Unique identifier of the project.",
295
+ "allowed_values": [],
296
+ "deprecated": null
297
+ }
298
+ ],
299
+ "query_params": [
300
+ {
301
+ "name": "order_by",
302
+ "type": "string",
303
+ "required": false,
304
+ "description": "Field used to order the late data records. Optional. Defaults to `\"created_at\"`.",
305
+ "allowed_values": [
306
+ "created_at",
307
+ "min_event_at"
308
+ ],
309
+ "deprecated": null
310
+ },
311
+ {
312
+ "name": "refolded",
313
+ "type": "string",
314
+ "required": false,
315
+ "description": "Filter by re-backfill state: false returns records whose events are still excluded from charts, true returns records a completed re-backfill has folded in. Optional.",
316
+ "allowed_values": [
317
+ "true",
318
+ "false"
319
+ ],
320
+ "deprecated": null
321
+ },
322
+ {
323
+ "name": "limit",
324
+ "type": "number",
325
+ "required": false,
326
+ "description": "Maximum number of items to return. Optional. Defaults to `25`. Minimum: `1`. Maximum: `200`.",
327
+ "allowed_values": [],
328
+ "deprecated": null
329
+ },
330
+ {
331
+ "name": "after",
332
+ "type": "string",
333
+ "required": false,
334
+ "description": "Cursor from `pagination.next_cursor` of a previous response. Returns the resources after that page. Optional.",
335
+ "allowed_values": [],
336
+ "deprecated": null
337
+ },
338
+ {
339
+ "name": "before",
340
+ "type": "string",
341
+ "required": false,
342
+ "description": "Cursor from `pagination.prev_cursor` of a previous response. Returns the resources before that page. Optional.",
343
+ "allowed_values": [],
344
+ "deprecated": null
345
+ },
346
+ {
347
+ "name": "sort",
348
+ "type": "string",
349
+ "required": false,
350
+ "description": "Sort direction for the result set. Optional. Defaults to `\"desc\"`.",
351
+ "allowed_values": [
352
+ "asc",
353
+ "desc"
354
+ ],
355
+ "deprecated": null
356
+ }
357
+ ],
358
+ "body_fields": []
359
+ },
360
+ {
361
+ "resource": "projects",
362
+ "command": "re-backfill-late-data",
363
+ "operation_id": "rebackfillLateData",
364
+ "summary": "Re-backfill Late Data",
365
+ "description": "Start a re-backfill that folds one late data record's events into charts.",
366
+ "method": "POST",
367
+ "path": "/v1/projects/:project_id/late_data/:late_data_file_id/re_backfill",
368
+ "alternate_paths": [],
369
+ "scopes": [
370
+ "projects:write"
371
+ ],
372
+ "notes": [
373
+ "Idempotent: requesting a re-backfill that is already queued or complete returns the record unchanged.",
374
+ "The fold is bounded to the excluded events, so data already in charts is never counted twice. `refolded_at` is set once the fold's durable receipts land."
375
+ ],
220
376
  "path_params": [
221
377
  {
222
378
  "name": "project_id",
@@ -225,6 +381,14 @@ export const CLI_COMMANDS = [
225
381
  "description": "Unique identifier of the project.",
226
382
  "allowed_values": [],
227
383
  "deprecated": null
384
+ },
385
+ {
386
+ "name": "late_data_file_id",
387
+ "type": "string",
388
+ "required": true,
389
+ "description": "Unique identifier of the late data.",
390
+ "allowed_values": [],
391
+ "deprecated": null
228
392
  }
229
393
  ],
230
394
  "query_params": [],
@@ -495,9 +659,9 @@ export const CLI_COMMANDS = [
495
659
  },
496
660
  {
497
661
  "name": "deleted_at",
498
- "type": "ISODateString | null",
662
+ "type": "null",
499
663
  "required": false,
500
- "description": "Date and time when the source is scheduled to be deleted. Send `null` to restore a source that is scheduled for deletion. Optional.",
664
+ "description": "Send `null` to restore a source that is scheduled for deletion. The deletion date itself is set by the delete endpoint and cannot be written here. Optional.",
501
665
  "allowed_values": [],
502
666
  "deprecated": null
503
667
  }
@@ -515,7 +679,46 @@ export const CLI_COMMANDS = [
515
679
  "scopes": [
516
680
  "sources:delete"
517
681
  ],
518
- "notes": [],
682
+ "notes": [
683
+ "The source is hidden immediately and permanently removed 7 days later. Restore it before then by updating it with `deleted_at` set to null."
684
+ ],
685
+ "path_params": [
686
+ {
687
+ "name": "project_id",
688
+ "type": "string",
689
+ "required": true,
690
+ "description": "Unique identifier of the project.",
691
+ "allowed_values": [],
692
+ "deprecated": null
693
+ },
694
+ {
695
+ "name": "source_id",
696
+ "type": "string",
697
+ "required": true,
698
+ "description": "Unique identifier of the source.",
699
+ "allowed_values": [],
700
+ "deprecated": null
701
+ }
702
+ ],
703
+ "query_params": [],
704
+ "body_fields": []
705
+ },
706
+ {
707
+ "resource": "sources",
708
+ "command": "force-delete",
709
+ "operation_id": "forceDeleteSource",
710
+ "summary": "Force Delete Source",
711
+ "description": "Delete a source permanently, without waiting out its restore window.",
712
+ "method": "DELETE",
713
+ "path": "/v1/projects/:project_id/sources/:source_id/force",
714
+ "alternate_paths": [],
715
+ "scopes": [
716
+ "sources:delete"
717
+ ],
718
+ "notes": [
719
+ "Works on a live source as well as one already scheduled for deletion.",
720
+ "Every collection, record and file under the source is destroyed immediately. Nothing here can be restored."
721
+ ],
519
722
  "path_params": [
520
723
  {
521
724
  "name": "project_id",
@@ -1015,9 +1218,9 @@ export const CLI_COMMANDS = [
1015
1218
  },
1016
1219
  {
1017
1220
  "name": "deleted_at",
1018
- "type": "ISODateString | null",
1221
+ "type": "null",
1019
1222
  "required": false,
1020
- "description": "Date and time when the collection is scheduled to be deleted. Send `null` to restore a collection that is scheduled for deletion. Optional.",
1223
+ "description": "Send `null` to restore a collection that is scheduled for deletion. The deletion date itself is set by the delete endpoint and cannot be written here. Optional.",
1021
1224
  "allowed_values": [],
1022
1225
  "deprecated": null
1023
1226
  }
@@ -1035,7 +1238,46 @@ export const CLI_COMMANDS = [
1035
1238
  "scopes": [
1036
1239
  "sources:delete"
1037
1240
  ],
1038
- "notes": [],
1241
+ "notes": [
1242
+ "The collection is hidden immediately and permanently removed 7 days later. Restore it before then by updating it with `deleted_at` set to null."
1243
+ ],
1244
+ "path_params": [
1245
+ {
1246
+ "name": "project_id",
1247
+ "type": "string",
1248
+ "required": true,
1249
+ "description": "Unique identifier of the project.",
1250
+ "allowed_values": [],
1251
+ "deprecated": null
1252
+ },
1253
+ {
1254
+ "name": "collection_id",
1255
+ "type": "string",
1256
+ "required": true,
1257
+ "description": "Unique identifier of the collection.",
1258
+ "allowed_values": [],
1259
+ "deprecated": null
1260
+ }
1261
+ ],
1262
+ "query_params": [],
1263
+ "body_fields": []
1264
+ },
1265
+ {
1266
+ "resource": "collections",
1267
+ "command": "force-delete",
1268
+ "operation_id": "forceDeleteCollection",
1269
+ "summary": "Force Delete Collection",
1270
+ "description": "Delete a collection permanently, without waiting out its restore window.",
1271
+ "method": "DELETE",
1272
+ "path": "/v1/projects/:project_id/collections/:collection_id/force",
1273
+ "alternate_paths": [],
1274
+ "scopes": [
1275
+ "sources:delete"
1276
+ ],
1277
+ "notes": [
1278
+ "Works on a live collection as well as one already scheduled for deletion.",
1279
+ "Every record, schema version and file in the collection is destroyed immediately."
1280
+ ],
1039
1281
  "path_params": [
1040
1282
  {
1041
1283
  "name": "project_id",
@@ -1605,15 +1847,15 @@ export const CLI_COMMANDS = [
1605
1847
  "name": "view_transform_id",
1606
1848
  "type": "string",
1607
1849
  "required": false,
1608
- "description": "Which transform adopts the schema versions still waiting for a script when switching transform_mode to manual. Required only when the view has more than one transform. Optional.",
1850
+ "description": "Which transform adopts the schema versions still waiting for a script when switching transform_mode to manual. Required only when the view has more than one distinct transform script. Optional.",
1609
1851
  "allowed_values": [],
1610
1852
  "deprecated": null
1611
1853
  },
1612
1854
  {
1613
1855
  "name": "deleted_at",
1614
- "type": "ISODateString | null",
1856
+ "type": "null",
1615
1857
  "required": false,
1616
- "description": "Pass null to restore a soft-deleted view. Optional.",
1858
+ "description": "Send `null` to restore a view that is scheduled for deletion. The deletion date itself is set by the delete endpoint and cannot be written here. Optional.",
1617
1859
  "allowed_values": [],
1618
1860
  "deprecated": null
1619
1861
  }
@@ -1657,6 +1899,43 @@ export const CLI_COMMANDS = [
1657
1899
  "query_params": [],
1658
1900
  "body_fields": []
1659
1901
  },
1902
+ {
1903
+ "resource": "views",
1904
+ "command": "force-delete",
1905
+ "operation_id": "forceDeleteView",
1906
+ "summary": "Force Delete View",
1907
+ "description": "Delete a view permanently, without waiting out its restore window.",
1908
+ "method": "DELETE",
1909
+ "path": "/v1/projects/:project_id/views/:view_id/force",
1910
+ "alternate_paths": [],
1911
+ "scopes": [
1912
+ "views:delete"
1913
+ ],
1914
+ "notes": [
1915
+ "Works on a live view as well as one already scheduled for deletion.",
1916
+ "Views derived from this one go with it, and the rollups of any metric reading them are destroyed. The records they were built from are not affected, so both can be rebuilt."
1917
+ ],
1918
+ "path_params": [
1919
+ {
1920
+ "name": "project_id",
1921
+ "type": "string",
1922
+ "required": true,
1923
+ "description": "Unique identifier of the project.",
1924
+ "allowed_values": [],
1925
+ "deprecated": null
1926
+ },
1927
+ {
1928
+ "name": "view_id",
1929
+ "type": "string",
1930
+ "required": true,
1931
+ "description": "Unique identifier of the view.",
1932
+ "allowed_values": [],
1933
+ "deprecated": null
1934
+ }
1935
+ ],
1936
+ "query_params": [],
1937
+ "body_fields": []
1938
+ },
1660
1939
  {
1661
1940
  "resource": "views",
1662
1941
  "command": "list-records",
@@ -1671,7 +1950,10 @@ export const CLI_COMMANDS = [
1671
1950
  ],
1672
1951
  "notes": [
1673
1952
  "Records are only filterable on fields that have a facet. Filtering on any other field is rejected, so create a facet for a field before querying it.",
1674
- "Both forms paginate with `before` and `after`, but a filtered read is served by scanning matching hours rather than by a stable key, so its cursors are positional. Do not hold a filtered cursor across a change to the query.",
1953
+ "Paging is forward-only. Pass `pagination.next_cursor` back as `after` to get the next page; a null `next_cursor` means there is nothing more to read. No `prev_cursor` is issued, and `before` is ignored.",
1954
+ "A cursor is only valid for the query that produced it. Changing the sort direction, the filter, or (on a filtered read) the time range and reusing an older cursor returns a 400 rather than a page of skipped or repeated records, so start again without a cursor after any of those change.",
1955
+ "`start_at` and `end_at` narrow a filtered read only. An unfiltered read returns the view's records regardless of the window, so pass a facet filter when you need a time-bounded result.",
1956
+ "A cursor stays valid while Tailglow reorganizes stored data in the background, so a paging client is never interrupted by storage maintenance. It is a position in this result set, not a snapshot: records that arrive while you page appear only if they sort after your position.",
1675
1957
  "`after` and `before` are mutually exclusive."
1676
1958
  ],
1677
1959
  "path_params": [
@@ -1697,17 +1979,19 @@ export const CLI_COMMANDS = [
1697
1979
  },
1698
1980
  {
1699
1981
  "resource": "views",
1700
- "command": "list-transforms",
1701
- "operation_id": "listViewTransforms",
1702
- "summary": "List View Transforms",
1703
- "description": "Retrieve a list of a view's transforms.",
1982
+ "command": "list-deferrals",
1983
+ "operation_id": "listViewDeferrals",
1984
+ "summary": "List Waiting Shapes",
1985
+ "description": "Retrieve the event shapes a view has deferred because no transform serves them yet.",
1704
1986
  "method": "GET",
1705
- "path": "/v1/projects/:project_id/views/:view_id/transforms",
1987
+ "path": "/v1/projects/:project_id/views/:view_id/deferrals",
1706
1988
  "alternate_paths": [],
1707
1989
  "scopes": [
1708
1990
  "views:read"
1709
1991
  ],
1710
1992
  "notes": [
1993
+ "Deferred records are stored, not lost. They backfill automatically once a script covers the shape, and each entry's `reason` says what unblocks it.",
1994
+ "`event_count` is approximate: ingest retries can count an event more than once.",
1711
1995
  "`after` and `before` are mutually exclusive."
1712
1996
  ],
1713
1997
  "path_params": [
@@ -1730,24 +2014,118 @@ export const CLI_COMMANDS = [
1730
2014
  ],
1731
2015
  "query_params": [
1732
2016
  {
1733
- "name": "order_by",
2017
+ "name": "resolved",
1734
2018
  "type": "string",
1735
2019
  "required": false,
1736
- "description": "Field the results are sorted by. Creation order matches schema version order. Optional. Defaults to `\"created_at\"`.",
2020
+ "description": "Filter by resolution. `false` returns only shapes still waiting. Optional.",
1737
2021
  "allowed_values": [
1738
- "created_at",
1739
- "updated_at"
2022
+ "true",
2023
+ "false"
1740
2024
  ],
1741
2025
  "deprecated": null
1742
2026
  },
1743
2027
  {
1744
- "name": "status",
1745
- "type": "ViewTransformStatus",
2028
+ "name": "order_by",
2029
+ "type": "string",
1746
2030
  "required": false,
1747
- "description": "Return only transforms in this state. Optional.",
2031
+ "description": "Sort field. Defaults to `last_deferred_at`. Optional.",
1748
2032
  "allowed_values": [
1749
- "queued",
1750
- "analyzing",
2033
+ "first_deferred_at",
2034
+ "last_deferred_at"
2035
+ ],
2036
+ "deprecated": null
2037
+ },
2038
+ {
2039
+ "name": "limit",
2040
+ "type": "number",
2041
+ "required": false,
2042
+ "description": "Maximum number of items to return. Optional. Defaults to `25`. Minimum: `1`. Maximum: `200`.",
2043
+ "allowed_values": [],
2044
+ "deprecated": null
2045
+ },
2046
+ {
2047
+ "name": "after",
2048
+ "type": "string",
2049
+ "required": false,
2050
+ "description": "Cursor from `pagination.next_cursor` of a previous response. Returns the resources after that page. Optional.",
2051
+ "allowed_values": [],
2052
+ "deprecated": null
2053
+ },
2054
+ {
2055
+ "name": "before",
2056
+ "type": "string",
2057
+ "required": false,
2058
+ "description": "Cursor from `pagination.prev_cursor` of a previous response. Returns the resources before that page. Optional.",
2059
+ "allowed_values": [],
2060
+ "deprecated": null
2061
+ },
2062
+ {
2063
+ "name": "sort",
2064
+ "type": "string",
2065
+ "required": false,
2066
+ "description": "Sort direction for the result set. Optional. Defaults to `\"desc\"`.",
2067
+ "allowed_values": [
2068
+ "asc",
2069
+ "desc"
2070
+ ],
2071
+ "deprecated": null
2072
+ }
2073
+ ],
2074
+ "body_fields": []
2075
+ },
2076
+ {
2077
+ "resource": "views",
2078
+ "command": "list-transforms",
2079
+ "operation_id": "listViewTransforms",
2080
+ "summary": "List View Transforms",
2081
+ "description": "Retrieve a list of a view's transforms.",
2082
+ "method": "GET",
2083
+ "path": "/v1/projects/:project_id/views/:view_id/transforms",
2084
+ "alternate_paths": [],
2085
+ "scopes": [
2086
+ "views:read"
2087
+ ],
2088
+ "notes": [
2089
+ "`after` and `before` are mutually exclusive."
2090
+ ],
2091
+ "path_params": [
2092
+ {
2093
+ "name": "project_id",
2094
+ "type": "string",
2095
+ "required": true,
2096
+ "description": "Unique identifier of the project.",
2097
+ "allowed_values": [],
2098
+ "deprecated": null
2099
+ },
2100
+ {
2101
+ "name": "view_id",
2102
+ "type": "string",
2103
+ "required": true,
2104
+ "description": "Unique identifier of the view.",
2105
+ "allowed_values": [],
2106
+ "deprecated": null
2107
+ }
2108
+ ],
2109
+ "query_params": [
2110
+ {
2111
+ "name": "order_by",
2112
+ "type": "string",
2113
+ "required": false,
2114
+ "description": "Field the results are sorted by. Creation order matches schema version order. Optional. Defaults to `\"created_at\"`.",
2115
+ "allowed_values": [
2116
+ "created_at",
2117
+ "updated_at"
2118
+ ],
2119
+ "deprecated": null
2120
+ },
2121
+ {
2122
+ "name": "status",
2123
+ "type": "ViewTransformStatus",
2124
+ "required": false,
2125
+ "description": "Return only transforms in this state. Optional.",
2126
+ "allowed_values": [
2127
+ "queued",
2128
+ "analyzing",
1751
2129
  "active",
1752
2130
  "error",
1753
2131
  "draft"
@@ -1896,7 +2274,7 @@ export const CLI_COMMANDS = [
1896
2274
  "command": "update-transform",
1897
2275
  "operation_id": "updateViewTransform",
1898
2276
  "summary": "Update View Transform",
1899
- "description": "Update a transform's script, mode, or status.",
2277
+ "description": "Update a transform's script.",
1900
2278
  "method": "POST",
1901
2279
  "path": "/v1/projects/:project_id/views/:view_id/transforms/:transform_id",
1902
2280
  "alternate_paths": [],
@@ -1905,8 +2283,14 @@ export const CLI_COMMANDS = [
1905
2283
  ],
1906
2284
  "notes": [
1907
2285
  "`transform_script` is TGL and must compile, and must write every field the view's output schema declares.",
1908
- "Editing the script changes how future records are transformed. Records already produced keep their existing values until the transform is re-backfilled.",
1909
- "`transform_script` cannot be whitespace-only. To clear a script and have it regenerated, use the regenerate endpoint rather than sending an empty one."
2286
+ "On collection-backed views, an edit fans out to every schema version using the same prior script and returns a verdict for each version. Additive reads report paths that produce null.",
2287
+ "Conflicting versions are moved to queued placeholders by default. Set `conflict_resolution` to `keep` to leave those versions on their prior script.",
2288
+ "Removing an output field is rejected while a metric, facet, child view, or join clause reads it. Consumer checks use the complete nested output path. Records already produced keep their existing values until the transform is re-backfilled.",
2289
+ "Set `dry_run` to preview the per-version verdict report without saving. A dry run changes nothing and triggers nothing, and returns a `preview_token` alongside the report.",
2290
+ "Saving requires the `preview_token` from that dry run. It pins the save to the set of schema versions the report described, so a version promoted or reassigned between the preview and the save cannot be silently included.",
2291
+ "A save with a missing or outdated token is rejected with 409 and changes nothing. The error carries the report as it stands now, so the next preview is already in hand.",
2292
+ "`transform_script` cannot be whitespace-only. To clear a script and have it regenerated, use the regenerate endpoint rather than sending an empty one.",
2293
+ "Saving is a two-step gesture: send `dry_run` to get the report and its `preview_token`, then send the same edit with that token. A save without one, or with a token whose set has since changed, is rejected with 409 and a fresh report."
1910
2294
  ],
1911
2295
  "path_params": [
1912
2296
  {
@@ -1943,6 +2327,33 @@ export const CLI_COMMANDS = [
1943
2327
  "description": "TGL transform script. To clear and regenerate, use the regenerate endpoint instead. Optional. Minimum length: `1`. Maximum length: `65536`.",
1944
2328
  "allowed_values": [],
1945
2329
  "deprecated": null
2330
+ },
2331
+ {
2332
+ "name": "conflict_resolution",
2333
+ "type": "string",
2334
+ "required": false,
2335
+ "description": "How conflicting schema versions are handled when a script edit fans out. Optional. Defaults to `\"strand\"`.",
2336
+ "allowed_values": [
2337
+ "strand",
2338
+ "keep"
2339
+ ],
2340
+ "deprecated": null
2341
+ },
2342
+ {
2343
+ "name": "dry_run",
2344
+ "type": "boolean",
2345
+ "required": false,
2346
+ "description": "Preview the edit: returns the per-version verdict report without changing anything. Optional. Defaults to `false`.",
2347
+ "allowed_values": [],
2348
+ "deprecated": null
2349
+ },
2350
+ {
2351
+ "name": "preview_token",
2352
+ "type": "string",
2353
+ "required": false,
2354
+ "description": "The `edit_report.preview_token` from this edit's dry run. Required to save: it pins the save to the set of schema versions the preview reported on, so a version promoted or reassigned in between is rejected instead of silently included. Optional. Minimum length: `1`. Maximum length: `128`.",
2355
+ "allowed_values": [],
2356
+ "deprecated": null
1946
2357
  }
1947
2358
  ]
1948
2359
  },
@@ -2173,6 +2584,14 @@ export const CLI_COMMANDS = [
2173
2584
  ],
2174
2585
  "deprecated": null
2175
2586
  },
2587
+ {
2588
+ "name": "deleted_at",
2589
+ "type": "NullableDateFilter",
2590
+ "required": false,
2591
+ "description": "Filter on deletion state. Pass `null` for metrics that are not scheduled for deletion. Optional.",
2592
+ "allowed_values": [],
2593
+ "deprecated": null
2594
+ },
2176
2595
  {
2177
2596
  "name": "limit",
2178
2597
  "type": "number",
@@ -2258,6 +2677,7 @@ export const CLI_COMMANDS = [
2258
2677
  "metrics:read"
2259
2678
  ],
2260
2679
  "notes": [
2680
+ "`complete_through_at` is the end-exclusive instant through which the result is final. A null value means no completeness statement can currently be made.",
2261
2681
  "The aggregation window is resolved in order: an explicit `start_at` plus `end_at` wins; otherwise `time_range` is used; otherwise the metric's saved chart range is used.",
2262
2682
  "`start_at` and `end_at` only take effect when sent together. Sending one without the other has no effect on the window.",
2263
2683
  "When both are provided, `start_at` must be earlier than `end_at`.",
@@ -2337,7 +2757,10 @@ export const CLI_COMMANDS = [
2337
2757
  "last_90_days",
2338
2758
  "last_365_days",
2339
2759
  "all_time",
2340
- "custom"
2760
+ "custom",
2761
+ "next_7_days",
2762
+ "next_30_days",
2763
+ "next_90_days"
2341
2764
  ],
2342
2765
  "deprecated": null
2343
2766
  },
@@ -2515,7 +2938,9 @@ export const CLI_COMMANDS = [
2515
2938
  "scatter",
2516
2939
  "radar",
2517
2940
  "stat",
2518
- "gauge"
2941
+ "gauge",
2942
+ "calendar",
2943
+ "uptime"
2519
2944
  ],
2520
2945
  "deprecated": null
2521
2946
  },
@@ -2579,6 +3004,68 @@ export const CLI_COMMANDS = [
2579
3004
  "allowed_values": [],
2580
3005
  "deprecated": null
2581
3006
  },
3007
+ {
3008
+ "name": "ui_chart_compact_values",
3009
+ "type": "boolean",
3010
+ "required": false,
3011
+ "description": "Whether chart tooltips round values to compact notation, such as 321.3M instead of the full number. Optional.",
3012
+ "allowed_values": [],
3013
+ "deprecated": null
3014
+ },
3015
+ {
3016
+ "name": "ui_chart_y_min",
3017
+ "type": "number | null",
3018
+ "required": false,
3019
+ "description": "Fixed lower bound for the chart's y axis. Null lets the axis fit the data. Optional.",
3020
+ "allowed_values": [],
3021
+ "deprecated": null
3022
+ },
3023
+ {
3024
+ "name": "ui_chart_y_max",
3025
+ "type": "number | null",
3026
+ "required": false,
3027
+ "description": "Fixed upper bound for the chart's y axis. Null lets the axis fit the data. Optional.",
3028
+ "allowed_values": [],
3029
+ "deprecated": null
3030
+ },
3031
+ {
3032
+ "name": "ui_chart_show_forecast",
3033
+ "type": "boolean",
3034
+ "required": false,
3035
+ "description": "Whether the chart opens with its forecast shown, projecting the fitted trend past now to the saved horizon. Optional.",
3036
+ "allowed_values": [],
3037
+ "deprecated": null
3038
+ },
3039
+ {
3040
+ "name": "ui_chart_forecast_horizon",
3041
+ "type": "ForecastHorizon",
3042
+ "required": false,
3043
+ "description": "How far past now the chart projects its forecast. The value is relative to when the chart is viewed, so it keeps projecting the same distance ahead as time passes. Optional.",
3044
+ "allowed_values": [
3045
+ "next_7_days",
3046
+ "next_30_days",
3047
+ "next_90_days",
3048
+ "end_of_quarter",
3049
+ "end_of_year",
3050
+ "next_year"
3051
+ ],
3052
+ "deprecated": null
3053
+ },
3054
+ {
3055
+ "name": "ui_chart_forecast_model",
3056
+ "type": "ForecastModel",
3057
+ "required": false,
3058
+ "description": "Curve the forecast is fitted with. Use `auto` to follow whichever model currently fits the series best. Optional.",
3059
+ "allowed_values": [
3060
+ "auto",
3061
+ "linear",
3062
+ "exponential",
3063
+ "logarithmic",
3064
+ "logistic",
3065
+ "sinusoidal"
3066
+ ],
3067
+ "deprecated": null
3068
+ },
2582
3069
  {
2583
3070
  "name": "ui_value_unit",
2584
3071
  "type": "string",
@@ -2644,7 +3131,10 @@ export const CLI_COMMANDS = [
2644
3131
  "last_90_days",
2645
3132
  "last_365_days",
2646
3133
  "all_time",
2647
- "custom"
3134
+ "custom",
3135
+ "next_7_days",
3136
+ "next_30_days",
3137
+ "next_90_days"
2648
3138
  ],
2649
3139
  "deprecated": null
2650
3140
  },
@@ -2830,7 +3320,9 @@ export const CLI_COMMANDS = [
2830
3320
  "scatter",
2831
3321
  "radar",
2832
3322
  "stat",
2833
- "gauge"
3323
+ "gauge",
3324
+ "calendar",
3325
+ "uptime"
2834
3326
  ],
2835
3327
  "deprecated": null
2836
3328
  },
@@ -2894,6 +3386,68 @@ export const CLI_COMMANDS = [
2894
3386
  "allowed_values": [],
2895
3387
  "deprecated": null
2896
3388
  },
3389
+ {
3390
+ "name": "ui_chart_compact_values",
3391
+ "type": "boolean",
3392
+ "required": false,
3393
+ "description": "Whether chart tooltips round values to compact notation, such as 321.3M instead of the full number. Optional.",
3394
+ "allowed_values": [],
3395
+ "deprecated": null
3396
+ },
3397
+ {
3398
+ "name": "ui_chart_y_min",
3399
+ "type": "number | null",
3400
+ "required": false,
3401
+ "description": "Fixed lower bound for the chart's y axis. Null lets the axis fit the data. Optional.",
3402
+ "allowed_values": [],
3403
+ "deprecated": null
3404
+ },
3405
+ {
3406
+ "name": "ui_chart_y_max",
3407
+ "type": "number | null",
3408
+ "required": false,
3409
+ "description": "Fixed upper bound for the chart's y axis. Null lets the axis fit the data. Optional.",
3410
+ "allowed_values": [],
3411
+ "deprecated": null
3412
+ },
3413
+ {
3414
+ "name": "ui_chart_show_forecast",
3415
+ "type": "boolean",
3416
+ "required": false,
3417
+ "description": "Whether the chart opens with its forecast shown, projecting the fitted trend past now to the saved horizon. Optional.",
3418
+ "allowed_values": [],
3419
+ "deprecated": null
3420
+ },
3421
+ {
3422
+ "name": "ui_chart_forecast_horizon",
3423
+ "type": "ForecastHorizon",
3424
+ "required": false,
3425
+ "description": "How far past now the chart projects its forecast. The value is relative to when the chart is viewed, so it keeps projecting the same distance ahead as time passes. Optional.",
3426
+ "allowed_values": [
3427
+ "next_7_days",
3428
+ "next_30_days",
3429
+ "next_90_days",
3430
+ "end_of_quarter",
3431
+ "end_of_year",
3432
+ "next_year"
3433
+ ],
3434
+ "deprecated": null
3435
+ },
3436
+ {
3437
+ "name": "ui_chart_forecast_model",
3438
+ "type": "ForecastModel",
3439
+ "required": false,
3440
+ "description": "Curve the forecast is fitted with. Use `auto` to follow whichever model currently fits the series best. Optional.",
3441
+ "allowed_values": [
3442
+ "auto",
3443
+ "linear",
3444
+ "exponential",
3445
+ "logarithmic",
3446
+ "logistic",
3447
+ "sinusoidal"
3448
+ ],
3449
+ "deprecated": null
3450
+ },
2897
3451
  {
2898
3452
  "name": "ui_value_unit",
2899
3453
  "type": "string",
@@ -2959,7 +3513,10 @@ export const CLI_COMMANDS = [
2959
3513
  "last_90_days",
2960
3514
  "last_365_days",
2961
3515
  "all_time",
2962
- "custom"
3516
+ "custom",
3517
+ "next_7_days",
3518
+ "next_30_days",
3519
+ "next_90_days"
2963
3520
  ],
2964
3521
  "deprecated": null
2965
3522
  },
@@ -3011,6 +3568,14 @@ export const CLI_COMMANDS = [
3011
3568
  "oldest_first"
3012
3569
  ],
3013
3570
  "deprecated": null
3571
+ },
3572
+ {
3573
+ "name": "deleted_at",
3574
+ "type": "null",
3575
+ "required": false,
3576
+ "description": "Send `null` to restore a metric that is scheduled for deletion. The deletion date itself is set by the delete endpoint and cannot be written here. Optional.",
3577
+ "allowed_values": [],
3578
+ "deprecated": null
3014
3579
  }
3015
3580
  ]
3016
3581
  },
@@ -3060,7 +3625,47 @@ export const CLI_COMMANDS = [
3060
3625
  "scopes": [
3061
3626
  "metrics:delete"
3062
3627
  ],
3063
- "notes": [],
3628
+ "notes": [
3629
+ "The metric is hidden immediately and permanently removed once its restore window elapses. Restore it before then by updating it with `deleted_at` set to null.",
3630
+ "Collection and backfill keep running for the whole window, so a restored metric resumes with no gap in its history. Its monitors stop evaluating until it is restored."
3631
+ ],
3632
+ "path_params": [
3633
+ {
3634
+ "name": "project_id",
3635
+ "type": "string",
3636
+ "required": true,
3637
+ "description": "Unique identifier of the project.",
3638
+ "allowed_values": [],
3639
+ "deprecated": null
3640
+ },
3641
+ {
3642
+ "name": "metric_id",
3643
+ "type": "string",
3644
+ "required": true,
3645
+ "description": "Unique identifier of the metric.",
3646
+ "allowed_values": [],
3647
+ "deprecated": null
3648
+ }
3649
+ ],
3650
+ "query_params": [],
3651
+ "body_fields": []
3652
+ },
3653
+ {
3654
+ "resource": "metrics",
3655
+ "command": "force-delete",
3656
+ "operation_id": "forceDeleteMetric",
3657
+ "summary": "Force Delete Metric",
3658
+ "description": "Delete a metric permanently, without waiting out its restore window.",
3659
+ "method": "DELETE",
3660
+ "path": "/v1/projects/:project_id/metrics/:metric_id/force",
3661
+ "alternate_paths": [],
3662
+ "scopes": [
3663
+ "metrics:delete"
3664
+ ],
3665
+ "notes": [
3666
+ "Works on a live metric as well as one already scheduled for deletion.",
3667
+ "Its rollups and monitors are destroyed. The view it reads is not affected, so the metric can be recreated and backfilled."
3668
+ ],
3064
3669
  "path_params": [
3065
3670
  {
3066
3671
  "name": "project_id",
@@ -4052,7 +4657,10 @@ export const CLI_COMMANDS = [
4052
4657
  "last_90_days",
4053
4658
  "last_365_days",
4054
4659
  "all_time",
4055
- "custom"
4660
+ "custom",
4661
+ "next_7_days",
4662
+ "next_30_days",
4663
+ "next_90_days"
4056
4664
  ],
4057
4665
  "deprecated": null
4058
4666
  },
@@ -4373,7 +4981,10 @@ export const CLI_COMMANDS = [
4373
4981
  "last_90_days",
4374
4982
  "last_365_days",
4375
4983
  "all_time",
4376
- "custom"
4984
+ "custom",
4985
+ "next_7_days",
4986
+ "next_30_days",
4987
+ "next_90_days"
4377
4988
  ],
4378
4989
  "deprecated": null
4379
4990
  },
@@ -4503,7 +5114,10 @@ export const CLI_COMMANDS = [
4503
5114
  "last_90_days",
4504
5115
  "last_365_days",
4505
5116
  "all_time",
4506
- "custom"
5117
+ "custom",
5118
+ "next_7_days",
5119
+ "next_30_days",
5120
+ "next_90_days"
4507
5121
  ],
4508
5122
  "deprecated": null
4509
5123
  },
@@ -5227,6 +5841,14 @@ export const CLI_COMMANDS = [
5227
5841
  "allowed_values": [],
5228
5842
  "deprecated": null
5229
5843
  },
5844
+ {
5845
+ "name": "is_tailglow_ai_enabled",
5846
+ "type": "boolean",
5847
+ "required": false,
5848
+ "description": "Whether members may run the AI assistant on Tailglow's model, billed to this team. When false, each member must add their own provider key before they can use the assistant. Optional.",
5849
+ "allowed_values": [],
5850
+ "deprecated": null
5851
+ },
5230
5852
  {
5231
5853
  "name": "max_servers_per_project",
5232
5854
  "type": "integer",
@@ -5275,7 +5897,7 @@ export const CLI_COMMANDS = [
5275
5897
  "Teams cannot be deleted with an API key. Use a signed-in user session.",
5276
5898
  "Only the team Owner can delete a team.",
5277
5899
  "The team must be active. Contact support to delete a suspended or blocked team.",
5278
- "Deletion is scheduled, not immediate. Permanent removal happens at the end of the current billing cycle, the team's projects and API keys are cancelled, and every signed-in member is signed out."
5900
+ "Deletion is scheduled, not immediate. Permanent removal happens 40 days later, the team's projects and API keys are cancelled, and every signed-in member is signed out. An owner who signs back in before then cancels the deletion."
5279
5901
  ],
5280
5902
  "path_params": [
5281
5903
  {
@@ -5831,6 +6453,35 @@ export const CLI_COMMANDS = [
5831
6453
  ],
5832
6454
  "deprecated": null
5833
6455
  },
6456
+ {
6457
+ "name": "default_ai_model",
6458
+ "type": "AiModel",
6459
+ "required": false,
6460
+ "description": "Model a new chat opens on. Null clears the preference. Only used when that model is available on the current team, so a chat can still run on a different one. Optional.",
6461
+ "allowed_values": [
6462
+ "claude-opus-5",
6463
+ "claude-sonnet-5",
6464
+ "gpt-5.6-sol",
6465
+ "gpt-5.6-terra",
6466
+ "gpt-5.6-luna",
6467
+ "claude-opus-4-6"
6468
+ ],
6469
+ "deprecated": null
6470
+ },
6471
+ {
6472
+ "name": "default_ai_effort",
6473
+ "type": "AiEffortLevel",
6474
+ "required": false,
6475
+ "description": "How hard the assistant is asked to work on each turn by default. Optional.",
6476
+ "allowed_values": [
6477
+ "low",
6478
+ "medium",
6479
+ "high",
6480
+ "xhigh",
6481
+ "max"
6482
+ ],
6483
+ "deprecated": null
6484
+ },
5834
6485
  {
5835
6486
  "name": "role_id",
5836
6487
  "type": "string",
@@ -6147,7 +6798,7 @@ export const CLI_COMMANDS = [
6147
6798
  "name": "scopes",
6148
6799
  "type": "Scopes",
6149
6800
  "required": false,
6150
- "description": "Scope names mapped to their permitted actions. Optional. Allowed scope keys: `\"users\"`, `\"roles\"`, `\"keys\"`, `\"records\"`, `\"projects\"`, `\"metrics\"`, `\"views\"`, `\"billing\"`, `\"pages\"`, `\"monitors\"`, `\"alerts\"`, `\"chats\"`, `\"secrets\"`, `\"servers\"`, `\"ingest_keys\"`, `\"sources\"`, `\"domains\"`, `\"facets\"`, `\"drains\"`, `\"pulls\"`, `\"logs\"`. Allowed action values: `\"read\"`, `\"write\"`, `\"delete\"`.",
6801
+ "description": "Scope names mapped to their permitted actions. Optional. Allowed scope keys: `\"users\"`, `\"roles\"`, `\"keys\"`, `\"records\"`, `\"projects\"`, `\"metrics\"`, `\"views\"`, `\"billing\"`, `\"pages\"`, `\"monitors\"`, `\"alerts\"`, `\"chats\"`, `\"secrets\"`, `\"servers\"`, `\"ingest_keys\"`, `\"sources\"`, `\"domains\"`, `\"facets\"`, `\"drains\"`, `\"pulls\"`, `\"checks\"`, `\"logs\"`. Allowed action values: `\"read\"`, `\"write\"`, `\"delete\"`.",
6151
6802
  "allowed_values": [],
6152
6803
  "deprecated": null
6153
6804
  }
@@ -6195,7 +6846,7 @@ export const CLI_COMMANDS = [
6195
6846
  "name": "scopes",
6196
6847
  "type": "Scopes",
6197
6848
  "required": false,
6198
- "description": "Scope names mapped to their permitted actions. Optional. Allowed scope keys: `\"users\"`, `\"roles\"`, `\"keys\"`, `\"records\"`, `\"projects\"`, `\"metrics\"`, `\"views\"`, `\"billing\"`, `\"pages\"`, `\"monitors\"`, `\"alerts\"`, `\"chats\"`, `\"secrets\"`, `\"servers\"`, `\"ingest_keys\"`, `\"sources\"`, `\"domains\"`, `\"facets\"`, `\"drains\"`, `\"pulls\"`, `\"logs\"`. Allowed action values: `\"read\"`, `\"write\"`, `\"delete\"`.",
6849
+ "description": "Scope names mapped to their permitted actions. Optional. Allowed scope keys: `\"users\"`, `\"roles\"`, `\"keys\"`, `\"records\"`, `\"projects\"`, `\"metrics\"`, `\"views\"`, `\"billing\"`, `\"pages\"`, `\"monitors\"`, `\"alerts\"`, `\"chats\"`, `\"secrets\"`, `\"servers\"`, `\"ingest_keys\"`, `\"sources\"`, `\"domains\"`, `\"facets\"`, `\"drains\"`, `\"pulls\"`, `\"checks\"`, `\"logs\"`. Allowed action values: `\"read\"`, `\"write\"`, `\"delete\"`.",
6199
6850
  "allowed_values": [],
6200
6851
  "deprecated": null
6201
6852
  }
@@ -6352,7 +7003,7 @@ export const CLI_COMMANDS = [
6352
7003
  "name": "scopes",
6353
7004
  "type": "Scopes",
6354
7005
  "required": false,
6355
- "description": "Scope names mapped to their permitted actions. Optional. Allowed scope keys: `\"users\"`, `\"roles\"`, `\"keys\"`, `\"records\"`, `\"projects\"`, `\"metrics\"`, `\"views\"`, `\"billing\"`, `\"pages\"`, `\"monitors\"`, `\"alerts\"`, `\"chats\"`, `\"secrets\"`, `\"servers\"`, `\"ingest_keys\"`, `\"sources\"`, `\"domains\"`, `\"facets\"`, `\"drains\"`, `\"pulls\"`, `\"logs\"`. Allowed action values: `\"read\"`, `\"write\"`, `\"delete\"`.",
7006
+ "description": "Scope names mapped to their permitted actions. Optional. Allowed scope keys: `\"users\"`, `\"roles\"`, `\"keys\"`, `\"records\"`, `\"projects\"`, `\"metrics\"`, `\"views\"`, `\"billing\"`, `\"pages\"`, `\"monitors\"`, `\"alerts\"`, `\"chats\"`, `\"secrets\"`, `\"servers\"`, `\"ingest_keys\"`, `\"sources\"`, `\"domains\"`, `\"facets\"`, `\"drains\"`, `\"pulls\"`, `\"checks\"`, `\"logs\"`. Allowed action values: `\"read\"`, `\"write\"`, `\"delete\"`.",
6356
7007
  "allowed_values": [],
6357
7008
  "deprecated": null
6358
7009
  }
@@ -6397,7 +7048,7 @@ export const CLI_COMMANDS = [
6397
7048
  "name": "scopes",
6398
7049
  "type": "Scopes",
6399
7050
  "required": false,
6400
- "description": "Scope names mapped to their permitted actions. Optional. Allowed scope keys: `\"users\"`, `\"roles\"`, `\"keys\"`, `\"records\"`, `\"projects\"`, `\"metrics\"`, `\"views\"`, `\"billing\"`, `\"pages\"`, `\"monitors\"`, `\"alerts\"`, `\"chats\"`, `\"secrets\"`, `\"servers\"`, `\"ingest_keys\"`, `\"sources\"`, `\"domains\"`, `\"facets\"`, `\"drains\"`, `\"pulls\"`, `\"logs\"`. Allowed action values: `\"read\"`, `\"write\"`, `\"delete\"`.",
7051
+ "description": "Scope names mapped to their permitted actions. Optional. Allowed scope keys: `\"users\"`, `\"roles\"`, `\"keys\"`, `\"records\"`, `\"projects\"`, `\"metrics\"`, `\"views\"`, `\"billing\"`, `\"pages\"`, `\"monitors\"`, `\"alerts\"`, `\"chats\"`, `\"secrets\"`, `\"servers\"`, `\"ingest_keys\"`, `\"sources\"`, `\"domains\"`, `\"facets\"`, `\"drains\"`, `\"pulls\"`, `\"checks\"`, `\"logs\"`. Allowed action values: `\"read\"`, `\"write\"`, `\"delete\"`.",
6401
7052
  "allowed_values": [],
6402
7053
  "deprecated": null
6403
7054
  }
@@ -6430,198 +7081,7 @@ export const CLI_COMMANDS = [
6430
7081
  "body_fields": []
6431
7082
  },
6432
7083
  {
6433
- "resource": "secrets",
6434
- "command": "list",
6435
- "operation_id": "listSecrets",
6436
- "summary": "List Secrets",
6437
- "description": "Retrieve a list of secrets for the current user.",
6438
- "method": "GET",
6439
- "path": "/v1/secrets",
6440
- "alternate_paths": [],
6441
- "scopes": [
6442
- "secrets:read"
6443
- ],
6444
- "notes": [
6445
- "`after` and `before` are mutually exclusive."
6446
- ],
6447
- "path_params": [],
6448
- "query_params": [
6449
- {
6450
- "name": "order_by",
6451
- "type": "string",
6452
- "required": false,
6453
- "description": "Field used to order the secrets. Optional. Defaults to `\"created_at\"`.",
6454
- "allowed_values": [
6455
- "created_at",
6456
- "updated_at"
6457
- ],
6458
- "deprecated": null
6459
- },
6460
- {
6461
- "name": "type",
6462
- "type": "SecretType",
6463
- "required": false,
6464
- "description": "Secret type used to filter the secrets. Optional.",
6465
- "allowed_values": [
6466
- "ai_api_key"
6467
- ],
6468
- "deprecated": null
6469
- },
6470
- {
6471
- "name": "limit",
6472
- "type": "number",
6473
- "required": false,
6474
- "description": "Maximum number of items to return. Optional. Defaults to `25`. Minimum: `1`. Maximum: `200`.",
6475
- "allowed_values": [],
6476
- "deprecated": null
6477
- },
6478
- {
6479
- "name": "after",
6480
- "type": "string",
6481
- "required": false,
6482
- "description": "Cursor from `pagination.next_cursor` of a previous response. Returns the resources after that page. Optional.",
6483
- "allowed_values": [],
6484
- "deprecated": null
6485
- },
6486
- {
6487
- "name": "before",
6488
- "type": "string",
6489
- "required": false,
6490
- "description": "Cursor from `pagination.prev_cursor` of a previous response. Returns the resources before that page. Optional.",
6491
- "allowed_values": [],
6492
- "deprecated": null
6493
- },
6494
- {
6495
- "name": "sort",
6496
- "type": "string",
6497
- "required": false,
6498
- "description": "Sort direction for the result set. Optional. Defaults to `\"desc\"`.",
6499
- "allowed_values": [
6500
- "asc",
6501
- "desc"
6502
- ],
6503
- "deprecated": null
6504
- }
6505
- ],
6506
- "body_fields": []
6507
- },
6508
- {
6509
- "resource": "secrets",
6510
- "command": "create",
6511
- "operation_id": "createSecret",
6512
- "summary": "Create Secret",
6513
- "description": "Create a new secret for the current user.",
6514
- "method": "POST",
6515
- "path": "/v1/secrets",
6516
- "alternate_paths": [],
6517
- "scopes": [
6518
- "secrets:write"
6519
- ],
6520
- "notes": [],
6521
- "path_params": [],
6522
- "query_params": [],
6523
- "body_fields": [
6524
- {
6525
- "name": "type",
6526
- "type": "SecretType",
6527
- "required": true,
6528
- "description": "Type of secret to store.",
6529
- "allowed_values": [
6530
- "ai_api_key"
6531
- ],
6532
- "deprecated": null
6533
- },
6534
- {
6535
- "name": "provider",
6536
- "type": "AiProvider",
6537
- "required": true,
6538
- "description": "AI provider this key belongs to.",
6539
- "allowed_values": [
6540
- "anthropic"
6541
- ],
6542
- "deprecated": null
6543
- },
6544
- {
6545
- "name": "value",
6546
- "type": "string",
6547
- "required": true,
6548
- "description": "Secret value to encrypt and store. Minimum length: `1`. Maximum length: `4096`.",
6549
- "allowed_values": [],
6550
- "deprecated": null
6551
- },
6552
- {
6553
- "name": "label",
6554
- "type": "string",
6555
- "required": true,
6556
- "description": "Display label for the secret. Minimum length: `1`. Maximum length: `64`.",
6557
- "allowed_values": [],
6558
- "deprecated": null
6559
- }
6560
- ]
6561
- },
6562
- {
6563
- "resource": "secrets",
6564
- "command": "update",
6565
- "operation_id": "updateSecret",
6566
- "summary": "Update Secret",
6567
- "description": "Update the label of an existing secret.",
6568
- "method": "POST",
6569
- "path": "/v1/secrets/:secret_id",
6570
- "alternate_paths": [],
6571
- "scopes": [
6572
- "secrets:write"
6573
- ],
6574
- "notes": [],
6575
- "path_params": [
6576
- {
6577
- "name": "secret_id",
6578
- "type": "string",
6579
- "required": true,
6580
- "description": "Unique identifier of the secret.",
6581
- "allowed_values": [],
6582
- "deprecated": null
6583
- }
6584
- ],
6585
- "query_params": [],
6586
- "body_fields": [
6587
- {
6588
- "name": "label",
6589
- "type": "string",
6590
- "required": true,
6591
- "description": "Display label for the secret. Minimum length: `1`. Maximum length: `64`.",
6592
- "allowed_values": [],
6593
- "deprecated": null
6594
- }
6595
- ]
6596
- },
6597
- {
6598
- "resource": "secrets",
6599
- "command": "delete",
6600
- "operation_id": "deleteSecret",
6601
- "summary": "Delete Secret",
6602
- "description": "Delete a secret for the current user.",
6603
- "method": "DELETE",
6604
- "path": "/v1/secrets/:secret_id",
6605
- "alternate_paths": [],
6606
- "scopes": [
6607
- "secrets:delete"
6608
- ],
6609
- "notes": [],
6610
- "path_params": [
6611
- {
6612
- "name": "secret_id",
6613
- "type": "string",
6614
- "required": true,
6615
- "description": "Unique identifier of the secret.",
6616
- "allowed_values": [],
6617
- "deprecated": null
6618
- }
6619
- ],
6620
- "query_params": [],
6621
- "body_fields": []
6622
- },
6623
- {
6624
- "resource": "domains",
7084
+ "resource": "domains",
6625
7085
  "command": "list",
6626
7086
  "operation_id": "listDomains",
6627
7087
  "summary": "List Domains",
@@ -6633,7 +7093,7 @@ export const CLI_COMMANDS = [
6633
7093
  "domains:read"
6634
7094
  ],
6635
7095
  "notes": [
6636
- "`ownership_verified` and `routing_verified` accept the strings `true` and `false`. Any other value is rejected.",
7096
+ "`ownership_verified` accepts the strings `true` and `false`. Any other value is rejected.",
6637
7097
  "`after` and `before` are mutually exclusive."
6638
7098
  ],
6639
7099
  "path_params": [],
@@ -6646,8 +7106,6 @@ export const CLI_COMMANDS = [
6646
7106
  "allowed_values": [
6647
7107
  "created_at",
6648
7108
  "domain",
6649
- "ownership_verified",
6650
- "routing_verified",
6651
7109
  "certificate_status"
6652
7110
  ],
6653
7111
  "deprecated": null
@@ -6663,17 +7121,6 @@ export const CLI_COMMANDS = [
6663
7121
  ],
6664
7122
  "deprecated": null
6665
7123
  },
6666
- {
6667
- "name": "routing_verified",
6668
- "type": "string",
6669
- "required": false,
6670
- "description": "Filter domains by DNS routing verification state. Optional.",
6671
- "allowed_values": [
6672
- "true",
6673
- "false"
6674
- ],
6675
- "deprecated": null
6676
- },
6677
7124
  {
6678
7125
  "name": "certificate_status",
6679
7126
  "type": "CertificateStatus",
@@ -6783,7 +7230,7 @@ export const CLI_COMMANDS = [
6783
7230
  },
6784
7231
  {
6785
7232
  "name": "purpose",
6786
- "type": "string",
7233
+ "type": "DomainTrafficPurpose",
6787
7234
  "required": false,
6788
7235
  "description": "Traffic purpose to configure for this domain. Use `ingest` to receive analytics data, or `pages` to serve status pages. Leave it out to add the domain without a purpose and choose one later. Optional.",
6789
7236
  "allowed_values": [
@@ -6807,9 +7254,9 @@ export const CLI_COMMANDS = [
6807
7254
  "domains:write"
6808
7255
  ],
6809
7256
  "notes": [
6810
- "A check that completes always returns 200. A record that does not resolve is a result, not an error, so read the outcome from each requirement's `status` rather than the status code.",
7257
+ "A check that completes always returns 200. A record that does not resolve is a result, not an error, so read the outcome from `ownership_status` and `routing_status` rather than the status code.",
6811
7258
  "Ownership is checked first. Routing is only checked once ownership has been verified and the domain has a traffic purpose enabled.",
6812
- "A requirement that has never been looked up reports `unchecked`, which is not the same as `missing`.",
7259
+ "A record that has never been looked up reports `unchecked`, which is not the same as `missing`.",
6813
7260
  "A domain can be checked at most once every 30 seconds."
6814
7261
  ],
6815
7262
  "path_params": [
@@ -6838,10 +7285,10 @@ export const CLI_COMMANDS = [
6838
7285
  "domains:write"
6839
7286
  ],
6840
7287
  "notes": [
6841
- "Domain ownership must be verified before ingest or pages can be enabled.",
6842
- "A domain serves either ingest traffic or pages. Disable the current purpose before enabling the other.",
6843
- "Only one lifecycle operation runs at a time. If another is in progress, retry shortly.",
6844
- "Send at most one of `is_ingest_enabled` or `is_pages_enabled` per request. A domain serves either ingest traffic or pages, so the two purposes are changed one at a time."
7288
+ "Domain ownership must be verified before a purpose can be set.",
7289
+ "A domain serves either ingest traffic or pages. Send `purpose: null` to take it out of service before setting the other, rather than switching between them directly.",
7290
+ "Setting `purpose` to null queues infrastructure teardown. The domain keeps reporting its old purpose until that work completes.",
7291
+ "Only one lifecycle operation runs at a time. If another is in progress, retry shortly."
6845
7292
  ],
6846
7293
  "path_params": [
6847
7294
  {
@@ -6856,11 +7303,14 @@ export const CLI_COMMANDS = [
6856
7303
  "query_params": [],
6857
7304
  "body_fields": [
6858
7305
  {
6859
- "name": "is_ingest_enabled",
6860
- "type": "boolean",
7306
+ "name": "purpose",
7307
+ "type": "DomainTrafficPurpose",
6861
7308
  "required": false,
6862
- "description": "Whether this domain receives analytics ingest traffic. Ownership must be verified before it can be enabled. Optional.",
6863
- "allowed_values": [],
7309
+ "description": "What this domain serves. Ownership must be verified before a purpose can be set, and `null` takes the domain out of service. Omit to leave it unchanged. Optional.",
7310
+ "allowed_values": [
7311
+ "ingest",
7312
+ "pages"
7313
+ ],
6864
7314
  "deprecated": null
6865
7315
  },
6866
7316
  {
@@ -6870,14 +7320,6 @@ export const CLI_COMMANDS = [
6870
7320
  "description": "Whether SSO is assigned to this domain. Optional.",
6871
7321
  "allowed_values": [],
6872
7322
  "deprecated": null
6873
- },
6874
- {
6875
- "name": "is_pages_enabled",
6876
- "type": "boolean",
6877
- "required": false,
6878
- "description": "Whether this domain serves status pages. Ownership must be verified before it can be enabled. Optional.",
6879
- "allowed_values": [],
6880
- "deprecated": null
6881
7323
  }
6882
7324
  ]
6883
7325
  },
@@ -6963,14 +7405,6 @@ export const CLI_COMMANDS = [
6963
7405
  ],
6964
7406
  "deprecated": null
6965
7407
  },
6966
- {
6967
- "name": "deleted_at",
6968
- "type": "NullableDateFilter",
6969
- "required": false,
6970
- "description": "Filter by deletion date. Use `null` for servers that are still part of the fleet, `not:null` for servers that have been retired. Optional.",
6971
- "allowed_values": [],
6972
- "deprecated": null
6973
- },
6974
7408
  {
6975
7409
  "name": "limit",
6976
7410
  "type": "number",
@@ -8142,7 +8576,7 @@ export const CLI_COMMANDS = [
8142
8576
  },
8143
8577
  {
8144
8578
  "name": "method",
8145
- "type": "PullMethod",
8579
+ "type": "string",
8146
8580
  "required": false,
8147
8581
  "description": "HTTP method used to fetch the endpoint. Optional. Defaults to `\"get\"`.",
8148
8582
  "allowed_values": [
@@ -8255,7 +8689,7 @@ export const CLI_COMMANDS = [
8255
8689
  },
8256
8690
  {
8257
8691
  "name": "method",
8258
- "type": "PullMethod",
8692
+ "type": "string",
8259
8693
  "required": false,
8260
8694
  "description": "HTTP method used to fetch the endpoint. Optional.",
8261
8695
  "allowed_values": [
@@ -8443,6 +8877,512 @@ export const CLI_COMMANDS = [
8443
8877
  "query_params": [],
8444
8878
  "body_fields": []
8445
8879
  },
8880
+ {
8881
+ "resource": "checks",
8882
+ "command": "list",
8883
+ "operation_id": "listChecks",
8884
+ "summary": "List Checks",
8885
+ "description": "Retrieve a list of checks.",
8886
+ "method": "GET",
8887
+ "path": "/v1/projects/:project_id/checks",
8888
+ "alternate_paths": [],
8889
+ "scopes": [
8890
+ "checks:read"
8891
+ ],
8892
+ "notes": [
8893
+ "`after` and `before` are mutually exclusive."
8894
+ ],
8895
+ "path_params": [
8896
+ {
8897
+ "name": "project_id",
8898
+ "type": "string",
8899
+ "required": true,
8900
+ "description": "Unique identifier of the project.",
8901
+ "allowed_values": [],
8902
+ "deprecated": null
8903
+ }
8904
+ ],
8905
+ "query_params": [
8906
+ {
8907
+ "name": "order_by",
8908
+ "type": "string",
8909
+ "required": false,
8910
+ "description": "Field the results are ordered by. Optional. Defaults to `\"created_at\"`.",
8911
+ "allowed_values": [
8912
+ "name",
8913
+ "created_at"
8914
+ ],
8915
+ "deprecated": null
8916
+ },
8917
+ {
8918
+ "name": "status",
8919
+ "type": "string",
8920
+ "required": false,
8921
+ "description": "Return only checks in this state. Optional.",
8922
+ "allowed_values": [
8923
+ "active",
8924
+ "paused",
8925
+ "disabled"
8926
+ ],
8927
+ "deprecated": null
8928
+ },
8929
+ {
8930
+ "name": "source_id",
8931
+ "type": "string",
8932
+ "required": false,
8933
+ "description": "Return only checks that write their observations to this source. Optional.",
8934
+ "allowed_values": [],
8935
+ "deprecated": null
8936
+ },
8937
+ {
8938
+ "name": "limit",
8939
+ "type": "number",
8940
+ "required": false,
8941
+ "description": "Maximum number of items to return. Optional. Defaults to `25`. Minimum: `1`. Maximum: `200`.",
8942
+ "allowed_values": [],
8943
+ "deprecated": null
8944
+ },
8945
+ {
8946
+ "name": "after",
8947
+ "type": "string",
8948
+ "required": false,
8949
+ "description": "Cursor from `pagination.next_cursor` of a previous response. Returns the resources after that page. Optional.",
8950
+ "allowed_values": [],
8951
+ "deprecated": null
8952
+ },
8953
+ {
8954
+ "name": "before",
8955
+ "type": "string",
8956
+ "required": false,
8957
+ "description": "Cursor from `pagination.prev_cursor` of a previous response. Returns the resources before that page. Optional.",
8958
+ "allowed_values": [],
8959
+ "deprecated": null
8960
+ },
8961
+ {
8962
+ "name": "sort",
8963
+ "type": "string",
8964
+ "required": false,
8965
+ "description": "Sort direction for the result set. Optional. Defaults to `\"desc\"`.",
8966
+ "allowed_values": [
8967
+ "asc",
8968
+ "desc"
8969
+ ],
8970
+ "deprecated": null
8971
+ }
8972
+ ],
8973
+ "body_fields": []
8974
+ },
8975
+ {
8976
+ "resource": "checks",
8977
+ "command": "retrieve",
8978
+ "operation_id": "getCheck",
8979
+ "summary": "Retrieve Check",
8980
+ "description": "Retrieve a single check.",
8981
+ "method": "GET",
8982
+ "path": "/v1/projects/:project_id/checks/:check_id",
8983
+ "alternate_paths": [],
8984
+ "scopes": [
8985
+ "checks:read"
8986
+ ],
8987
+ "notes": [],
8988
+ "path_params": [
8989
+ {
8990
+ "name": "project_id",
8991
+ "type": "string",
8992
+ "required": true,
8993
+ "description": "Unique identifier of the project.",
8994
+ "allowed_values": [],
8995
+ "deprecated": null
8996
+ },
8997
+ {
8998
+ "name": "check_id",
8999
+ "type": "string",
9000
+ "required": true,
9001
+ "description": "Unique identifier of the check.",
9002
+ "allowed_values": [],
9003
+ "deprecated": null
9004
+ }
9005
+ ],
9006
+ "query_params": [],
9007
+ "body_fields": []
9008
+ },
9009
+ {
9010
+ "resource": "checks",
9011
+ "command": "create",
9012
+ "operation_id": "createCheck",
9013
+ "summary": "Create Check",
9014
+ "description": "Create a scheduled check in a project.",
9015
+ "method": "POST",
9016
+ "path": "/v1/projects/:project_id/checks",
9017
+ "alternate_paths": [],
9018
+ "scopes": [
9019
+ "checks:write"
9020
+ ],
9021
+ "notes": [
9022
+ "The endpoint must be reachable over HTTPS at a public address. Addresses inside private or reserved ranges are rejected, and the check is repeated on every run, not just at create.",
9023
+ "A check is created `active` even if the project has no servers yet. It starts running as soon as a server exists; an empty fleet delays the first run rather than changing the status.",
9024
+ "The response body is never stored or parsed. Each run writes one observation recording whether the endpoint answered, its status code and how long it took.",
9025
+ "A failing endpoint never stops a check, however long the failure lasts. Only pausing it, or the team falling out of good standing, stops one.",
9026
+ "`request_body` is only accepted when `method` is `post`. Sending one with a `get` check is rejected rather than ignored, so a half-configured check fails at create time instead of quietly measuring the wrong request.",
9027
+ "`headers` accepts at most 20 entries. A header whose value is `null` is ignored here, since on create there is nothing yet for it to remove. Names are matched case-insensitively, so two spellings of one name are stored as a single header.",
9028
+ "`schedule_cron` must be a valid cron expression. It is evaluated in UTC, and the finest granularity is one minute.",
9029
+ "`collection_slug` is required, and must be lowercase, start with a letter or digit, and may otherwise contain digits, letters, hyphens and underscores. Naming it here is what lets several checks deliberately share one collection and chart together; renaming the check later never moves the series, because the slug is stored rather than derived.",
9030
+ "`check_retry_seconds` is between 1 and 20, and defaults to 10. A failed run waits this long and requests once more before it is recorded, so a single flake does not become a recorded minute of downtime. Send `null` to record the first result as it stands.",
9031
+ "Each run writes one observation to `collection_slug` carrying `check_id`, `checked_at`, `up`, `http_status`, `response_time_ms`, `error_stage`, `error_message` and `attempts`. `up` is 1 when the endpoint returned a 2xx and 0 when it did not answer or answered with an error status, so the average of `up` over a period is the uptime for that period.",
9032
+ "`checked_at` is the scheduled minute rather than the moment the observation was written, so a run delayed by a confirming request still lands in the minute it describes.",
9033
+ "`name` must be unique within the project, so a check is identifiable in a list and in the strip it charts as."
9034
+ ],
9035
+ "path_params": [
9036
+ {
9037
+ "name": "project_id",
9038
+ "type": "string",
9039
+ "required": true,
9040
+ "description": "Unique identifier of the project.",
9041
+ "allowed_values": [],
9042
+ "deprecated": null
9043
+ }
9044
+ ],
9045
+ "query_params": [],
9046
+ "body_fields": [
9047
+ {
9048
+ "name": "name",
9049
+ "type": "string",
9050
+ "required": true,
9051
+ "description": "Name shown for this check. Minimum length: `2`. Maximum length: `128`.",
9052
+ "allowed_values": [],
9053
+ "deprecated": null
9054
+ },
9055
+ {
9056
+ "name": "source_id",
9057
+ "type": "string",
9058
+ "required": true,
9059
+ "description": "Source that observations are written to. Nothing else about the response is stored. Minimum length: `1`.",
9060
+ "allowed_values": [],
9061
+ "deprecated": null
9062
+ },
9063
+ {
9064
+ "name": "collection_slug",
9065
+ "type": "string",
9066
+ "required": true,
9067
+ "description": "Collection within the source that observations land in. Give several checks the same slug to chart them together, one strip per check under a worst-of overall row. Minimum length: `1`. Maximum length: `64`.",
9068
+ "allowed_values": [],
9069
+ "deprecated": null
9070
+ },
9071
+ {
9072
+ "name": "endpoint_url",
9073
+ "type": "string",
9074
+ "required": true,
9075
+ "description": "HTTPS URL requested on every run. Must resolve to a public address. Minimum length: `1`. Maximum length: `2048`.",
9076
+ "allowed_values": [],
9077
+ "deprecated": null
9078
+ },
9079
+ {
9080
+ "name": "method",
9081
+ "type": "string",
9082
+ "required": false,
9083
+ "description": "HTTP method used to request the endpoint. Optional. Defaults to `\"get\"`.",
9084
+ "allowed_values": [
9085
+ "get",
9086
+ "post"
9087
+ ],
9088
+ "deprecated": null
9089
+ },
9090
+ {
9091
+ "name": "headers",
9092
+ "type": "object | null",
9093
+ "required": false,
9094
+ "description": "Headers sent with every request, for authenticating to the endpoint. Stored encrypted and never returned; responses list only the header names, as `headers_configured`. Optional.",
9095
+ "allowed_values": [],
9096
+ "deprecated": null
9097
+ },
9098
+ {
9099
+ "name": "request_body",
9100
+ "type": "string | null",
9101
+ "required": false,
9102
+ "description": "Body sent with every request. Only valid when `method` is `post`, for health endpoints that answer queries over POST. Optional.",
9103
+ "allowed_values": [],
9104
+ "deprecated": null
9105
+ },
9106
+ {
9107
+ "name": "schedule_cron",
9108
+ "type": "string",
9109
+ "required": false,
9110
+ "description": "Cron expression setting when the endpoint is requested, evaluated in UTC. Defaults to every minute, which is also the shortest supported gap. Optional. Defaults to `\"* * * * *\"`. Minimum length: `1`. Maximum length: `128`.",
9111
+ "allowed_values": [],
9112
+ "deprecated": null
9113
+ },
9114
+ {
9115
+ "name": "check_retry_seconds",
9116
+ "type": "integer | null",
9117
+ "required": false,
9118
+ "description": "Seconds to wait before one confirming request settles a failed run. Send `null` to record the first result as it stands. Optional. Defaults to `10`.",
9119
+ "allowed_values": [],
9120
+ "deprecated": null
9121
+ }
9122
+ ]
9123
+ },
9124
+ {
9125
+ "resource": "checks",
9126
+ "command": "update",
9127
+ "operation_id": "updateCheck",
9128
+ "summary": "Update Check",
9129
+ "description": "Update a check.",
9130
+ "method": "POST",
9131
+ "path": "/v1/projects/:project_id/checks/:check_id",
9132
+ "alternate_paths": [],
9133
+ "scopes": [
9134
+ "checks:write"
9135
+ ],
9136
+ "notes": [
9137
+ "Changes take effect on the next run; a run already in flight finishes under the old configuration.",
9138
+ "A changed `schedule_cron` takes effect from the next run onward.",
9139
+ "At least one field must be provided.",
9140
+ "Any field not listed here is rejected, including `source_id`, which cannot be changed after create. Create a new check to record into a different source.",
9141
+ "Clearing `request_body` is required before changing `method` from `post` to `get`; a check cannot keep a body it would never send.",
9142
+ "`headers` is a patch, not a replacement, because the values are write-only and never returned. A name mapped to a string adds or replaces that header, a name mapped to `null` removes it, and a name you do not mention keeps its stored value. Omit the field to leave every header alone, or send `null` in place of the object to remove all of them.",
9143
+ "`headers` names are matched case-insensitively, so patching `authorization` replaces a stored `Authorization` rather than adding a second header. The spelling you send is the one stored and sent.",
9144
+ "`headers` accepts at most 20 entries, counted after the patch is applied.",
9145
+ "`schedule_cron` must be a valid cron expression, evaluated in UTC. Changing it restarts the missed-slot count from the edit, since slots before it belonged to a different schedule.",
9146
+ "Send `check_retry_seconds` as `null` to stop confirming failures and record the first result as it stands.",
9147
+ "Changing `collection_slug` starts a new series. Observations already written stay where they are, so a chart over the old collection stops at the edit."
9148
+ ],
9149
+ "path_params": [
9150
+ {
9151
+ "name": "project_id",
9152
+ "type": "string",
9153
+ "required": true,
9154
+ "description": "Unique identifier of the project.",
9155
+ "allowed_values": [],
9156
+ "deprecated": null
9157
+ },
9158
+ {
9159
+ "name": "check_id",
9160
+ "type": "string",
9161
+ "required": true,
9162
+ "description": "Unique identifier of the check.",
9163
+ "allowed_values": [],
9164
+ "deprecated": null
9165
+ }
9166
+ ],
9167
+ "query_params": [],
9168
+ "body_fields": [
9169
+ {
9170
+ "name": "name",
9171
+ "type": "string",
9172
+ "required": false,
9173
+ "description": "Name shown for this check. Optional. Minimum length: `2`. Maximum length: `128`.",
9174
+ "allowed_values": [],
9175
+ "deprecated": null
9176
+ },
9177
+ {
9178
+ "name": "collection_slug",
9179
+ "type": "string | null",
9180
+ "required": false,
9181
+ "description": "Collection within the source that observations land in. Give several checks the same slug to chart them together, one strip per check under a worst-of overall row. Optional.",
9182
+ "allowed_values": [],
9183
+ "deprecated": null
9184
+ },
9185
+ {
9186
+ "name": "endpoint_url",
9187
+ "type": "string",
9188
+ "required": false,
9189
+ "description": "HTTPS URL requested on every run. Must resolve to a public address. Optional. Minimum length: `1`. Maximum length: `2048`.",
9190
+ "allowed_values": [],
9191
+ "deprecated": null
9192
+ },
9193
+ {
9194
+ "name": "method",
9195
+ "type": "string",
9196
+ "required": false,
9197
+ "description": "HTTP method used to request the endpoint. Optional.",
9198
+ "allowed_values": [
9199
+ "get",
9200
+ "post"
9201
+ ],
9202
+ "deprecated": null
9203
+ },
9204
+ {
9205
+ "name": "headers",
9206
+ "type": "object | null",
9207
+ "required": false,
9208
+ "description": "Headers sent with every request, for authenticating to the endpoint. Stored encrypted and never returned; responses list only the header names, as `headers_configured`. Optional.",
9209
+ "allowed_values": [],
9210
+ "deprecated": null
9211
+ },
9212
+ {
9213
+ "name": "request_body",
9214
+ "type": "string | null",
9215
+ "required": false,
9216
+ "description": "Body sent with every request. Only valid when `method` is `post`, for health endpoints that answer queries over POST. Optional.",
9217
+ "allowed_values": [],
9218
+ "deprecated": null
9219
+ },
9220
+ {
9221
+ "name": "schedule_cron",
9222
+ "type": "string",
9223
+ "required": false,
9224
+ "description": "Cron expression setting when the endpoint is requested, evaluated in UTC. Defaults to every minute, which is also the shortest supported gap. Optional. Minimum length: `1`. Maximum length: `128`.",
9225
+ "allowed_values": [],
9226
+ "deprecated": null
9227
+ },
9228
+ {
9229
+ "name": "check_retry_seconds",
9230
+ "type": "integer | null",
9231
+ "required": false,
9232
+ "description": "Seconds to wait before one confirming request settles a failed run. Send `null` to record the first result as it stands. Optional.",
9233
+ "allowed_values": [],
9234
+ "deprecated": null
9235
+ }
9236
+ ]
9237
+ },
9238
+ {
9239
+ "resource": "checks",
9240
+ "command": "delete",
9241
+ "operation_id": "deleteCheck",
9242
+ "summary": "Delete Check",
9243
+ "description": "Delete a check.",
9244
+ "method": "DELETE",
9245
+ "path": "/v1/projects/:project_id/checks/:check_id",
9246
+ "alternate_paths": [],
9247
+ "scopes": [
9248
+ "checks:delete"
9249
+ ],
9250
+ "notes": [
9251
+ "Observations the check already wrote are not deleted. They belong to the source and stay queryable, so a chart of past uptime keeps working."
9252
+ ],
9253
+ "path_params": [
9254
+ {
9255
+ "name": "project_id",
9256
+ "type": "string",
9257
+ "required": true,
9258
+ "description": "Unique identifier of the project.",
9259
+ "allowed_values": [],
9260
+ "deprecated": null
9261
+ },
9262
+ {
9263
+ "name": "check_id",
9264
+ "type": "string",
9265
+ "required": true,
9266
+ "description": "Unique identifier of the check.",
9267
+ "allowed_values": [],
9268
+ "deprecated": null
9269
+ }
9270
+ ],
9271
+ "query_params": [],
9272
+ "body_fields": []
9273
+ },
9274
+ {
9275
+ "resource": "checks",
9276
+ "command": "pause",
9277
+ "operation_id": "pauseCheck",
9278
+ "summary": "Pause Check",
9279
+ "description": "Pause a check so it stops running.",
9280
+ "method": "POST",
9281
+ "path": "/v1/projects/:project_id/checks/:check_id/pause",
9282
+ "alternate_paths": [],
9283
+ "scopes": [
9284
+ "checks:write"
9285
+ ],
9286
+ "notes": [
9287
+ "Only an active check can be paused. Pausing an already-paused check succeeds and changes nothing.",
9288
+ "A pause is a gap in the uptime record rather than downtime. Nothing is recorded for the minutes it covers."
9289
+ ],
9290
+ "path_params": [
9291
+ {
9292
+ "name": "project_id",
9293
+ "type": "string",
9294
+ "required": true,
9295
+ "description": "Unique identifier of the project.",
9296
+ "allowed_values": [],
9297
+ "deprecated": null
9298
+ },
9299
+ {
9300
+ "name": "check_id",
9301
+ "type": "string",
9302
+ "required": true,
9303
+ "description": "Unique identifier of the check.",
9304
+ "allowed_values": [],
9305
+ "deprecated": null
9306
+ }
9307
+ ],
9308
+ "query_params": [],
9309
+ "body_fields": []
9310
+ },
9311
+ {
9312
+ "resource": "checks",
9313
+ "command": "resume",
9314
+ "operation_id": "resumeCheck",
9315
+ "summary": "Resume Check",
9316
+ "description": "Resume a paused check.",
9317
+ "method": "POST",
9318
+ "path": "/v1/projects/:project_id/checks/:check_id/resume",
9319
+ "alternate_paths": [],
9320
+ "scopes": [
9321
+ "checks:write"
9322
+ ],
9323
+ "notes": [
9324
+ "Resumes a check you paused. The failure count starts again from zero.",
9325
+ "A check the system stopped while the team was not in good standing is not resumable here and returns 400. It starts again on its own once the team is back in good standing."
9326
+ ],
9327
+ "path_params": [
9328
+ {
9329
+ "name": "project_id",
9330
+ "type": "string",
9331
+ "required": true,
9332
+ "description": "Unique identifier of the project.",
9333
+ "allowed_values": [],
9334
+ "deprecated": null
9335
+ },
9336
+ {
9337
+ "name": "check_id",
9338
+ "type": "string",
9339
+ "required": true,
9340
+ "description": "Unique identifier of the check.",
9341
+ "allowed_values": [],
9342
+ "deprecated": null
9343
+ }
9344
+ ],
9345
+ "query_params": [],
9346
+ "body_fields": []
9347
+ },
9348
+ {
9349
+ "resource": "checks",
9350
+ "command": "test",
9351
+ "operation_id": "testCheck",
9352
+ "summary": "Test Check",
9353
+ "description": "Request the endpoint once without recording anything.",
9354
+ "method": "POST",
9355
+ "path": "/v1/projects/:project_id/checks/:check_id/test",
9356
+ "alternate_paths": [],
9357
+ "scopes": [
9358
+ "checks:write"
9359
+ ],
9360
+ "notes": [
9361
+ "Nothing is recorded and no health field or schedule is changed, so this is safe to run against a live check. The result does not appear in the uptime history.",
9362
+ "The response reports the HTTP status, how long the request took, and the first 2 KB of the body so you can confirm you reached the endpoint you meant to.",
9363
+ "There is no confirming retry here, unlike a scheduled run: a test reports what happened rather than settling a verdict."
9364
+ ],
9365
+ "path_params": [
9366
+ {
9367
+ "name": "project_id",
9368
+ "type": "string",
9369
+ "required": true,
9370
+ "description": "Unique identifier of the project.",
9371
+ "allowed_values": [],
9372
+ "deprecated": null
9373
+ },
9374
+ {
9375
+ "name": "check_id",
9376
+ "type": "string",
9377
+ "required": true,
9378
+ "description": "Unique identifier of the check.",
9379
+ "allowed_values": [],
9380
+ "deprecated": null
9381
+ }
9382
+ ],
9383
+ "query_params": [],
9384
+ "body_fields": []
9385
+ },
8446
9386
  {
8447
9387
  "resource": "logs",
8448
9388
  "command": "list",