@homeflare/distilled-proxmox-backup 0.2.0 → 0.3.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.
Files changed (53) hide show
  1. package/README.md +19 -17
  2. package/dist/errors.d.ts +6 -5
  3. package/dist/errors.d.ts.map +1 -1
  4. package/dist/errors.js.map +1 -1
  5. package/dist/missing-resource.test.d.ts +2 -0
  6. package/dist/missing-resource.test.d.ts.map +1 -0
  7. package/dist/missing-resource.test.js +62 -0
  8. package/dist/missing-resource.test.js.map +1 -0
  9. package/dist/protocol-boundaries.test.d.ts +2 -0
  10. package/dist/protocol-boundaries.test.d.ts.map +1 -0
  11. package/dist/protocol-boundaries.test.js +50 -0
  12. package/dist/protocol-boundaries.test.js.map +1 -0
  13. package/dist/protocol-codecs.d.ts +23 -0
  14. package/dist/protocol-codecs.d.ts.map +1 -0
  15. package/dist/protocol-codecs.js +49 -0
  16. package/dist/protocol-codecs.js.map +1 -0
  17. package/dist/protocol-codecs.test.d.ts +2 -0
  18. package/dist/protocol-codecs.test.d.ts.map +1 -0
  19. package/dist/protocol-codecs.test.js +58 -0
  20. package/dist/protocol-codecs.test.js.map +1 -0
  21. package/dist/protocol-raw-root.test.d.ts +2 -0
  22. package/dist/protocol-raw-root.test.d.ts.map +1 -0
  23. package/dist/protocol-raw-root.test.js +48 -0
  24. package/dist/protocol-raw-root.test.js.map +1 -0
  25. package/dist/protocol.d.ts +1 -0
  26. package/dist/protocol.d.ts.map +1 -1
  27. package/dist/protocol.js +4 -1
  28. package/dist/protocol.js.map +1 -1
  29. package/dist/services/access.d.ts.map +1 -1
  30. package/dist/services/access.js +5 -16
  31. package/dist/services/access.js.map +1 -1
  32. package/dist/services/admin.d.ts.map +1 -1
  33. package/dist/services/admin.js +11 -14
  34. package/dist/services/admin.js.map +1 -1
  35. package/dist/services/config.d.ts +44 -4
  36. package/dist/services/config.d.ts.map +1 -1
  37. package/dist/services/config.js +56 -83
  38. package/dist/services/config.js.map +1 -1
  39. package/dist/services/nodes.d.ts.map +1 -1
  40. package/dist/services/nodes.js +2 -4
  41. package/dist/services/nodes.js.map +1 -1
  42. package/package.json +1 -1
  43. package/src/errors.ts +7 -11
  44. package/src/missing-resource.test.ts +98 -0
  45. package/src/protocol-boundaries.test.ts +60 -0
  46. package/src/protocol-codecs.test.ts +112 -0
  47. package/src/protocol-codecs.ts +75 -0
  48. package/src/protocol-raw-root.test.ts +84 -0
  49. package/src/protocol.ts +62 -58
  50. package/src/services/access.ts +5 -16
  51. package/src/services/admin.ts +13 -14
  52. package/src/services/config.ts +72 -95
  53. package/src/services/nodes.ts +2 -4
@@ -1,6 +1,7 @@
1
1
  // AUTO-GENERATED by scripts/generate.ts from .generated-specs (apidoc.js, via scripts/apidoc.ts — see its header). Do not edit.
2
2
  import * as S from "@distilled.cloud/core/schema";
3
3
  import * as API from "@distilled.cloud/core/api";
4
+ import * as C from "@distilled.cloud/core/category";
4
5
  import * as T from "../traits.ts";
5
6
  import {
6
7
  ProxmoxBackupProtocol,
@@ -11,6 +12,42 @@ import * as Retry from "../retry.ts";
11
12
 
12
13
  export type { ProxmoxBackupOpError, ProxmoxBackupOpContext };
13
14
 
15
+ /** Measured read-only on PBS on 2026-09-24: GET /config/datastore/<absent> returns HTTP 400 with the plain-text body no such datastore '<id>'. Attach only to the measured GET, not a sibling write; no DELETE was probed. Invalid arguments, refused reads, other 400s and all 5xx stay errors. Vendor schema pinned to proxmox-backup-server 4.2.6-1; live host version recorded separately in the probe evidence. */
16
+ export class DatastoreNotFound
17
+ extends /*@__PURE__*/ T.applyErrorMatchers(
18
+ /*@__PURE__*/ S.TaggedError<DatastoreNotFound>()("DatastoreNotFound", {
19
+ message: S.String,
20
+ }).pipe(C.withBadRequestError),
21
+ [{ status: 400, message: { matches: "^no such datastore '[^']+'$" } }],
22
+ ) {}
23
+
24
+ /** Measured read-only on PBS on 2026-09-24: GET /config/prune/<absent> returns HTTP 400 with the plain-text body no such prune '<id>'. Attach only to the measured GET, not a sibling write; no DELETE was probed. Invalid arguments, refused reads, other 400s and all 5xx stay errors. Vendor schema pinned to proxmox-backup-server 4.2.6-1; live host version recorded separately in the probe evidence. */
25
+ export class PruneJobNotFound
26
+ extends /*@__PURE__*/ T.applyErrorMatchers(
27
+ /*@__PURE__*/ S.TaggedError<PruneJobNotFound>()("PruneJobNotFound", {
28
+ message: S.String,
29
+ }).pipe(C.withBadRequestError),
30
+ [{ status: 400, message: { matches: "^no such prune '[^']+'$" } }],
31
+ ) {}
32
+
33
+ /** Measured read-only on PBS on 2026-09-24: GET /config/sync/<absent> returns HTTP 400 with the plain-text body no such sync '<id>'. Attach only to the measured GET, not a sibling write; no DELETE was probed. Invalid arguments, refused reads, other 400s and all 5xx stay errors. Vendor schema pinned to proxmox-backup-server 4.2.6-1; live host version recorded separately in the probe evidence. */
34
+ export class SyncJobNotFound
35
+ extends /*@__PURE__*/ T.applyErrorMatchers(
36
+ /*@__PURE__*/ S.TaggedError<SyncJobNotFound>()("SyncJobNotFound", {
37
+ message: S.String,
38
+ }).pipe(C.withBadRequestError),
39
+ [{ status: 400, message: { matches: "^no such sync '[^']+'$" } }],
40
+ ) {}
41
+
42
+ /** Measured read-only on PBS on 2026-09-24: GET /config/verify/<absent> returns HTTP 400 with the plain-text body no such verification '<id>'. Attach only to the measured GET, not a sibling write; no DELETE was probed. Invalid arguments, refused reads, other 400s and all 5xx stay errors. Vendor schema pinned to proxmox-backup-server 4.2.6-1; live host version recorded separately in the probe evidence. */
43
+ export class VerifyJobNotFound
44
+ extends /*@__PURE__*/ T.applyErrorMatchers(
45
+ /*@__PURE__*/ S.TaggedError<VerifyJobNotFound>()("VerifyJobNotFound", {
46
+ message: S.String,
47
+ }).pipe(C.withBadRequestError),
48
+ [{ status: 400, message: { matches: "^no such verification '[^']+'$" } }],
49
+ ) {}
50
+
14
51
  export type CreateConfigAccessAdRequestMode =
15
52
  | "ldap"
16
53
  | "ldap+starttls"
@@ -1451,14 +1488,9 @@ export interface DeleteConfigAccessAdRequest {
1451
1488
  export const DeleteConfigAccessAdRequest = /*@__PURE__*/ S.suspend(() =>
1452
1489
  S.Struct({
1453
1490
  realm: S.String.pipe(T.Label()),
1454
- digest: S.optional(S.String),
1491
+ digest: S.optional(S.String.pipe(T.Query())),
1455
1492
  }).pipe(
1456
- T.Http({
1457
- method: "DELETE",
1458
- uri: "/config/access/ad/{realm}",
1459
- code: 200,
1460
- contentType: "form-urlencoded",
1461
- }),
1493
+ T.Http({ method: "DELETE", uri: "/config/access/ad/{realm}", code: 200 }),
1462
1494
  ),
1463
1495
  ).annotate({
1464
1496
  identifier: "DeleteConfigAccessAdRequest",
@@ -1479,14 +1511,9 @@ export interface DeleteConfigAccessLdapRequest {
1479
1511
  export const DeleteConfigAccessLdapRequest = /*@__PURE__*/ S.suspend(() =>
1480
1512
  S.Struct({
1481
1513
  realm: S.String.pipe(T.Label()),
1482
- digest: S.optional(S.String),
1514
+ digest: S.optional(S.String.pipe(T.Query())),
1483
1515
  }).pipe(
1484
- T.Http({
1485
- method: "DELETE",
1486
- uri: "/config/access/ldap/{realm}",
1487
- code: 200,
1488
- contentType: "form-urlencoded",
1489
- }),
1516
+ T.Http({ method: "DELETE", uri: "/config/access/ldap/{realm}", code: 200 }),
1490
1517
  ),
1491
1518
  ).annotate({
1492
1519
  identifier: "DeleteConfigAccessLdapRequest",
@@ -1507,13 +1534,12 @@ export interface DeleteConfigAccessOpenidRequest {
1507
1534
  export const DeleteConfigAccessOpenidRequest = /*@__PURE__*/ S.suspend(() =>
1508
1535
  S.Struct({
1509
1536
  realm: S.String.pipe(T.Label()),
1510
- digest: S.optional(S.String),
1537
+ digest: S.optional(S.String.pipe(T.Query())),
1511
1538
  }).pipe(
1512
1539
  T.Http({
1513
1540
  method: "DELETE",
1514
1541
  uri: "/config/access/openid/{realm}",
1515
1542
  code: 200,
1516
- contentType: "form-urlencoded",
1517
1543
  }),
1518
1544
  ),
1519
1545
  ).annotate({
@@ -1535,14 +1561,9 @@ export interface DeleteConfigAcmeAccountRequest {
1535
1561
  export const DeleteConfigAcmeAccountRequest = /*@__PURE__*/ S.suspend(() =>
1536
1562
  S.Struct({
1537
1563
  name: S.String.pipe(T.Label()),
1538
- force: S.optional(S.String),
1564
+ force: S.optional(S.String.pipe(T.Query())),
1539
1565
  }).pipe(
1540
- T.Http({
1541
- method: "DELETE",
1542
- uri: "/config/acme/account/{name}",
1543
- code: 200,
1544
- contentType: "form-urlencoded",
1545
- }),
1566
+ T.Http({ method: "DELETE", uri: "/config/acme/account/{name}", code: 200 }),
1546
1567
  ),
1547
1568
  ).annotate({
1548
1569
  identifier: "DeleteConfigAcmeAccountRequest",
@@ -1607,16 +1628,11 @@ export interface DeleteConfigDatastoreRequest {
1607
1628
  export const DeleteConfigDatastoreRequest = /*@__PURE__*/ S.suspend(() =>
1608
1629
  S.Struct({
1609
1630
  name: S.String.pipe(T.Label()),
1610
- destroy_data: S.optional(S.String.pipe(T.Body("destroy-data"))),
1611
- digest: S.optional(S.String),
1612
- keep_job_configs: S.optional(S.String.pipe(T.Body("keep-job-configs"))),
1631
+ destroy_data: S.optional(S.String.pipe(T.Query("destroy-data"))),
1632
+ digest: S.optional(S.String.pipe(T.Query())),
1633
+ keep_job_configs: S.optional(S.String.pipe(T.Query("keep-job-configs"))),
1613
1634
  }).pipe(
1614
- T.Http({
1615
- method: "DELETE",
1616
- uri: "/config/datastore/{name}",
1617
- code: 200,
1618
- contentType: "form-urlencoded",
1619
- }),
1635
+ T.Http({ method: "DELETE", uri: "/config/datastore/{name}", code: 200 }),
1620
1636
  ),
1621
1637
  ).annotate({
1622
1638
  identifier: "DeleteConfigDatastoreRequest",
@@ -1655,13 +1671,12 @@ export interface DeleteConfigEncryptionKeyRequest {
1655
1671
  export const DeleteConfigEncryptionKeyRequest = /*@__PURE__*/ S.suspend(() =>
1656
1672
  S.Struct({
1657
1673
  id: S.String.pipe(T.Label()),
1658
- digest: S.optional(S.String),
1674
+ digest: S.optional(S.String.pipe(T.Query())),
1659
1675
  }).pipe(
1660
1676
  T.Http({
1661
1677
  method: "DELETE",
1662
1678
  uri: "/config/encryption-keys/{id}",
1663
1679
  code: 200,
1664
- contentType: "form-urlencoded",
1665
1680
  }),
1666
1681
  ),
1667
1682
  ).annotate({
@@ -1704,13 +1719,12 @@ export const DeleteConfigMetricsInfluxdbHttpRequest = /*@__PURE__*/ S.suspend(
1704
1719
  () =>
1705
1720
  S.Struct({
1706
1721
  name: S.String.pipe(T.Label()),
1707
- digest: S.optional(S.String),
1722
+ digest: S.optional(S.String.pipe(T.Query())),
1708
1723
  }).pipe(
1709
1724
  T.Http({
1710
1725
  method: "DELETE",
1711
1726
  uri: "/config/metrics/influxdb-http/{name}",
1712
1727
  code: 200,
1713
- contentType: "form-urlencoded",
1714
1728
  }),
1715
1729
  ),
1716
1730
  ).annotate({
@@ -1733,13 +1747,12 @@ export const DeleteConfigMetricsInfluxdbUdpRequest = /*@__PURE__*/ S.suspend(
1733
1747
  () =>
1734
1748
  S.Struct({
1735
1749
  name: S.String.pipe(T.Label()),
1736
- digest: S.optional(S.String),
1750
+ digest: S.optional(S.String.pipe(T.Query())),
1737
1751
  }).pipe(
1738
1752
  T.Http({
1739
1753
  method: "DELETE",
1740
1754
  uri: "/config/metrics/influxdb-udp/{name}",
1741
1755
  code: 200,
1742
- contentType: "form-urlencoded",
1743
1756
  }),
1744
1757
  ),
1745
1758
  ).annotate({
@@ -1882,15 +1895,8 @@ export interface DeleteConfigPruneRequest {
1882
1895
  export const DeleteConfigPruneRequest = /*@__PURE__*/ S.suspend(() =>
1883
1896
  S.Struct({
1884
1897
  id: S.String.pipe(T.Label()),
1885
- digest: S.optional(S.String),
1886
- }).pipe(
1887
- T.Http({
1888
- method: "DELETE",
1889
- uri: "/config/prune/{id}",
1890
- code: 200,
1891
- contentType: "form-urlencoded",
1892
- }),
1893
- ),
1898
+ digest: S.optional(S.String.pipe(T.Query())),
1899
+ }).pipe(T.Http({ method: "DELETE", uri: "/config/prune/{id}", code: 200 })),
1894
1900
  ).annotate({
1895
1901
  identifier: "DeleteConfigPruneRequest",
1896
1902
  }) as any as S.Schema<DeleteConfigPruneRequest>;
@@ -1910,14 +1916,9 @@ export interface DeleteConfigRemoteRequest {
1910
1916
  export const DeleteConfigRemoteRequest = /*@__PURE__*/ S.suspend(() =>
1911
1917
  S.Struct({
1912
1918
  name: S.String.pipe(T.Label()),
1913
- digest: S.optional(S.String),
1919
+ digest: S.optional(S.String.pipe(T.Query())),
1914
1920
  }).pipe(
1915
- T.Http({
1916
- method: "DELETE",
1917
- uri: "/config/remote/{name}",
1918
- code: 200,
1919
- contentType: "form-urlencoded",
1920
- }),
1921
+ T.Http({ method: "DELETE", uri: "/config/remote/{name}", code: 200 }),
1921
1922
  ),
1922
1923
  ).annotate({
1923
1924
  identifier: "DeleteConfigRemoteRequest",
@@ -1938,15 +1939,8 @@ export interface DeleteConfigS3Request {
1938
1939
  export const DeleteConfigS3Request = /*@__PURE__*/ S.suspend(() =>
1939
1940
  S.Struct({
1940
1941
  id: S.String.pipe(T.Label()),
1941
- digest: S.optional(S.String),
1942
- }).pipe(
1943
- T.Http({
1944
- method: "DELETE",
1945
- uri: "/config/s3/{id}",
1946
- code: 200,
1947
- contentType: "form-urlencoded",
1948
- }),
1949
- ),
1942
+ digest: S.optional(S.String.pipe(T.Query())),
1943
+ }).pipe(T.Http({ method: "DELETE", uri: "/config/s3/{id}", code: 200 })),
1950
1944
  ).annotate({
1951
1945
  identifier: "DeleteConfigS3Request",
1952
1946
  }) as any as S.Schema<DeleteConfigS3Request>;
@@ -1966,15 +1960,8 @@ export interface DeleteConfigSyncRequest {
1966
1960
  export const DeleteConfigSyncRequest = /*@__PURE__*/ S.suspend(() =>
1967
1961
  S.Struct({
1968
1962
  id: S.String.pipe(T.Label()),
1969
- digest: S.optional(S.String),
1970
- }).pipe(
1971
- T.Http({
1972
- method: "DELETE",
1973
- uri: "/config/sync/{id}",
1974
- code: 200,
1975
- contentType: "form-urlencoded",
1976
- }),
1977
- ),
1963
+ digest: S.optional(S.String.pipe(T.Query())),
1964
+ }).pipe(T.Http({ method: "DELETE", uri: "/config/sync/{id}", code: 200 })),
1978
1965
  ).annotate({
1979
1966
  identifier: "DeleteConfigSyncRequest",
1980
1967
  }) as any as S.Schema<DeleteConfigSyncRequest>;
@@ -1994,13 +1981,12 @@ export interface DeleteConfigTapeBackupJobRequest {
1994
1981
  export const DeleteConfigTapeBackupJobRequest = /*@__PURE__*/ S.suspend(() =>
1995
1982
  S.Struct({
1996
1983
  id: S.String.pipe(T.Label()),
1997
- digest: S.optional(S.String),
1984
+ digest: S.optional(S.String.pipe(T.Query())),
1998
1985
  }).pipe(
1999
1986
  T.Http({
2000
1987
  method: "DELETE",
2001
1988
  uri: "/config/tape-backup-job/{id}",
2002
1989
  code: 200,
2003
- contentType: "form-urlencoded",
2004
1990
  }),
2005
1991
  ),
2006
1992
  ).annotate({
@@ -2023,13 +2009,12 @@ export const DeleteConfigTapeEncryptionKeyRequest = /*@__PURE__*/ S.suspend(
2023
2009
  () =>
2024
2010
  S.Struct({
2025
2011
  fingerprint: S.String.pipe(T.Label()),
2026
- digest: S.optional(S.String),
2012
+ digest: S.optional(S.String.pipe(T.Query())),
2027
2013
  }).pipe(
2028
2014
  T.Http({
2029
2015
  method: "DELETE",
2030
2016
  uri: "/config/tape-encryption-keys/{fingerprint}",
2031
2017
  code: 200,
2032
- contentType: "form-urlencoded",
2033
2018
  }),
2034
2019
  ),
2035
2020
  ).annotate({
@@ -2051,13 +2036,12 @@ export interface DeleteConfigTrafficControlRequest {
2051
2036
  export const DeleteConfigTrafficControlRequest = /*@__PURE__*/ S.suspend(() =>
2052
2037
  S.Struct({
2053
2038
  name: S.String.pipe(T.Label()),
2054
- digest: S.optional(S.String),
2039
+ digest: S.optional(S.String.pipe(T.Query())),
2055
2040
  }).pipe(
2056
2041
  T.Http({
2057
2042
  method: "DELETE",
2058
2043
  uri: "/config/traffic-control/{name}",
2059
2044
  code: 200,
2060
- contentType: "form-urlencoded",
2061
2045
  }),
2062
2046
  ),
2063
2047
  ).annotate({
@@ -2079,15 +2063,8 @@ export interface DeleteConfigVerifyRequest {
2079
2063
  export const DeleteConfigVerifyRequest = /*@__PURE__*/ S.suspend(() =>
2080
2064
  S.Struct({
2081
2065
  id: S.String.pipe(T.Label()),
2082
- digest: S.optional(S.String),
2083
- }).pipe(
2084
- T.Http({
2085
- method: "DELETE",
2086
- uri: "/config/verify/{id}",
2087
- code: 200,
2088
- contentType: "form-urlencoded",
2089
- }),
2090
- ),
2066
+ digest: S.optional(S.String.pipe(T.Query())),
2067
+ }).pipe(T.Http({ method: "DELETE", uri: "/config/verify/{id}", code: 200 })),
2091
2068
  ).annotate({
2092
2069
  identifier: "DeleteConfigVerifyRequest",
2093
2070
  }) as any as S.Schema<DeleteConfigVerifyRequest>;
@@ -9239,7 +9216,7 @@ export const getConfigChanger: API.OperationMethod<
9239
9216
  retry: Retry.Retry,
9240
9217
  }));
9241
9218
 
9242
- export type GetConfigDatastoreError = ProxmoxBackupOpError;
9219
+ export type GetConfigDatastoreError = DatastoreNotFound | ProxmoxBackupOpError;
9243
9220
  /** Read a datastore configuration. */
9244
9221
  export const getConfigDatastore: API.OperationMethod<
9245
9222
  GetConfigDatastoreRequest,
@@ -9249,7 +9226,7 @@ export const getConfigDatastore: API.OperationMethod<
9249
9226
  > = /*@__PURE__*/ API.make(() => ({
9250
9227
  input: GetConfigDatastoreRequest,
9251
9228
  output: GetConfigDatastoreResponse,
9252
- errors: [],
9229
+ errors: [DatastoreNotFound],
9253
9230
  protocol: ProxmoxBackupProtocol,
9254
9231
  retry: Retry.Retry,
9255
9232
  }));
@@ -9449,7 +9426,7 @@ export const getConfigNotificationTarget: API.OperationMethod<
9449
9426
  retry: Retry.Retry,
9450
9427
  }));
9451
9428
 
9452
- export type GetConfigPruneError = ProxmoxBackupOpError;
9429
+ export type GetConfigPruneError = PruneJobNotFound | ProxmoxBackupOpError;
9453
9430
  /** Read a prune job configuration. */
9454
9431
  export const getConfigPrune: API.OperationMethod<
9455
9432
  GetConfigPruneRequest,
@@ -9459,7 +9436,7 @@ export const getConfigPrune: API.OperationMethod<
9459
9436
  > = /*@__PURE__*/ API.make(() => ({
9460
9437
  input: GetConfigPruneRequest,
9461
9438
  output: GetConfigPruneResponse,
9462
- errors: [],
9439
+ errors: [PruneJobNotFound],
9463
9440
  protocol: ProxmoxBackupProtocol,
9464
9441
  retry: Retry.Retry,
9465
9442
  }));
@@ -9524,7 +9501,7 @@ export const getConfigS3ListBuckets: API.OperationMethod<
9524
9501
  retry: Retry.Retry,
9525
9502
  }));
9526
9503
 
9527
- export type GetConfigSyncError = ProxmoxBackupOpError;
9504
+ export type GetConfigSyncError = SyncJobNotFound | ProxmoxBackupOpError;
9528
9505
  /** Read a sync job configuration. */
9529
9506
  export const getConfigSync: API.OperationMethod<
9530
9507
  GetConfigSyncRequest,
@@ -9534,7 +9511,7 @@ export const getConfigSync: API.OperationMethod<
9534
9511
  > = /*@__PURE__*/ API.make(() => ({
9535
9512
  input: GetConfigSyncRequest,
9536
9513
  output: GetConfigSyncResponse,
9537
- errors: [],
9514
+ errors: [SyncJobNotFound],
9538
9515
  protocol: ProxmoxBackupProtocol,
9539
9516
  retry: Retry.Retry,
9540
9517
  }));
@@ -9584,7 +9561,7 @@ export const getConfigTrafficControl: API.OperationMethod<
9584
9561
  retry: Retry.Retry,
9585
9562
  }));
9586
9563
 
9587
- export type GetConfigVerifyError = ProxmoxBackupOpError;
9564
+ export type GetConfigVerifyError = VerifyJobNotFound | ProxmoxBackupOpError;
9588
9565
  /** Read a verification job configuration. */
9589
9566
  export const getConfigVerify: API.OperationMethod<
9590
9567
  GetConfigVerifyRequest,
@@ -9594,7 +9571,7 @@ export const getConfigVerify: API.OperationMethod<
9594
9571
  > = /*@__PURE__*/ API.make(() => ({
9595
9572
  input: GetConfigVerifyRequest,
9596
9573
  output: GetConfigVerifyResponse,
9597
- errors: [],
9574
+ errors: [VerifyJobNotFound],
9598
9575
  protocol: ProxmoxBackupProtocol,
9599
9576
  retry: Retry.Retry,
9600
9577
  }));
@@ -558,13 +558,12 @@ export interface DeleteNodeCertificateCustomRequest {
558
558
  export const DeleteNodeCertificateCustomRequest = /*@__PURE__*/ S.suspend(() =>
559
559
  S.Struct({
560
560
  node: S.String.pipe(T.Label()),
561
- restart: S.optional(S.String),
561
+ restart: S.optional(S.String.pipe(T.Query())),
562
562
  }).pipe(
563
563
  T.Http({
564
564
  method: "DELETE",
565
565
  uri: "/nodes/{node}/certificates/custom",
566
566
  code: 200,
567
- contentType: "form-urlencoded",
568
567
  }),
569
568
  ),
570
569
  ).annotate({
@@ -634,13 +633,12 @@ export const DeleteNodeNetwork2Request = /*@__PURE__*/ S.suspend(() =>
634
633
  S.Struct({
635
634
  node: S.String.pipe(T.Label()),
636
635
  iface: S.String.pipe(T.Label()),
637
- digest: S.optional(S.String),
636
+ digest: S.optional(S.String.pipe(T.Query())),
638
637
  }).pipe(
639
638
  T.Http({
640
639
  method: "DELETE",
641
640
  uri: "/nodes/{node}/network/{iface}",
642
641
  code: 200,
643
- contentType: "form-urlencoded",
644
642
  }),
645
643
  ),
646
644
  ).annotate({