@spacefast/wpcloud-sdk 0.0.5 → 0.0.7

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.
@@ -1,4 +1,2 @@
1
- export { makeFakeAtomic, defaultFakeFetch } from "./server.js";
2
- export { FakeAtomicStore, type FakeSite } from "./store.js";
3
- export { routeFakeRequest, type FakeResult } from "./router.js";
1
+ export { makeFakeAtomic, makeFakeAtomicWithStore } from "./server.js";
4
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fake/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fake/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,3 +1 @@
1
- export { makeFakeAtomic, defaultFakeFetch } from "./server.js";
2
- export { FakeAtomicStore } from "./store.js";
3
- export { routeFakeRequest } from "./router.js";
1
+ export { makeFakeAtomic, makeFakeAtomicWithStore } from "./server.js";
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/fake/router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AA0C3D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,UAAU,CAmJZ"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/fake/router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AA6C3D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,UAAU,CAuMZ"}
@@ -10,17 +10,19 @@ const fail = (status, message) => ({
10
10
  body: { message, data: [] },
11
11
  });
12
12
  const RESTRICTED_DOMAINS = new Set(["wordpress.com", "wp.com", "automattic.com"]);
13
- function isRecord(value) {
14
- return Boolean(value) && typeof value === "object" && !Array.isArray(value);
15
- }
16
13
  function asStringMap(value) {
17
14
  const out = {};
18
- if (isRecord(value)) {
15
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
19
16
  for (const [k, v] of Object.entries(value))
20
17
  out[k] = String(v);
21
18
  }
22
19
  return out;
23
20
  }
21
+ /** The `data` form field of `POST /site-persist-data/{site}` — a bag of per-key
22
+ * set/delete operations, matching `FakeAtomicStore#applyPersistentData`. */
23
+ function isPersistDataOperations(value) {
24
+ return typeof value === "object" && value !== null && !Array.isArray(value);
25
+ }
24
26
  const READABLE_CLIENT_META_KEYS = new Set([
25
27
  "webhook_url",
26
28
  "client_ssh_default_from",
@@ -63,9 +65,11 @@ export function routeFakeRequest(store, method, path, body) {
63
65
  return ok([]); // claimable
64
66
  }
65
67
  // --- sites lifecycle ------------------------------------------------------------------------
66
- // GET /get-sites/{client}[/+_data]?limit=… — one page is enough (the client stops below pageSize)
68
+ // GET /get-sites/{client}[/_data]?limit=… — only return requested meta,
69
+ // matching Atomic's slash-delimited additional-meta contract.
67
70
  if (method === "GET" && head === "get-sites") {
68
- return ok(store.list().map((site) => store.listEntry(site)));
71
+ const includeData = seg.slice(2).includes("_data");
72
+ return ok(store.list().map((site) => store.listEntry(site, { includeData })));
69
73
  }
70
74
  // POST /create-site/{client}
71
75
  if (method === "POST" && head === "create-site") {
@@ -89,7 +93,9 @@ export function routeFakeRequest(store, method, path, body) {
89
93
  return ok({ status: "success" });
90
94
  // POST /site-persist-data/{site}
91
95
  if (method === "POST" && head === "site-persist-data") {
92
- const data = isRecord(body.data) ? store.applyPersistentData(seg[1] ?? "", body.data) : null;
96
+ const data = isPersistDataOperations(body.data)
97
+ ? store.applyPersistentData(seg[1] ?? "", body.data)
98
+ : null;
93
99
  if (!data)
94
100
  return fail(404, "Site not found.");
95
101
  return ok({
@@ -126,8 +132,48 @@ export function routeFakeRequest(store, method, path, body) {
126
132
  return ok([]);
127
133
  }
128
134
  }
129
- // /edge-cache/{id}/{op}/{host} — lean: benign success so publish/serve never trips on it.
130
- // Real edge-cache behavior is covered by the gated `direct/` suites, not the fake.
135
+ // /crontab/{site}/add|list|update/{cron_id}|removematches the documented
136
+ // envelope exactly (docs/wpcloud/openapi.json): add/update return
137
+ // {cron_id}, list returns the array of entries verbatim, remove returns [].
138
+ if (head === "crontab") {
139
+ const id = seg[1] ?? "";
140
+ const action = seg[2];
141
+ if (method === "POST" && action === "add") {
142
+ const schedule = String(body.schedule ?? "");
143
+ const command = String(body.command ?? "");
144
+ if (!schedule || !command)
145
+ return fail(400, "Invalid or empty schedule or command.");
146
+ const cron = store.addCron(id, { schedule, command });
147
+ if (!cron)
148
+ return fail(404, "Site not found.");
149
+ return ok({ cron_id: cron.cronId });
150
+ }
151
+ if (method === "GET" && action === "list") {
152
+ if (!store.get(id))
153
+ return fail(404, "Site not found.");
154
+ return ok(store.listCrons(id).map((cron) => ({
155
+ cron_id: cron.cronId,
156
+ schedule: cron.schedule,
157
+ requested_schedule: cron.requestedSchedule,
158
+ command: cron.command,
159
+ })));
160
+ }
161
+ if (method === "POST" && action === "update") {
162
+ const cronId = Number(seg[3] ?? "");
163
+ const command = String(body.command ?? "");
164
+ if (!command)
165
+ return fail(400, "Invalid or empty command.");
166
+ return store.updateCron(id, cronId, command)
167
+ ? ok({ cron_id: cronId })
168
+ : fail(404, "Cron entry not found.");
169
+ }
170
+ if (method === "POST" && action === "remove") {
171
+ const cronId = Number(body.cron_id ?? "");
172
+ return store.removeCron(id, cronId) ? ok([]) : fail(404, "Cron entry not found.");
173
+ }
174
+ }
175
+ // /edge-cache/{id}/{op}/{host} — Atomic falls back to the primary domain
176
+ // when `host` is not attached, so callers must avoid issuing that request.
131
177
  if (head === "edge-cache") {
132
178
  const op = seg[2];
133
179
  if (op === "on" || op === "off" || op === "purge")
@@ -150,7 +196,7 @@ export function routeFakeRequest(store, method, path, body) {
150
196
  if (head === "client-authorized-keys") {
151
197
  const op = seg[2];
152
198
  if (op === "list")
153
- return ok({ keys: [] });
199
+ return ok({});
154
200
  return ok([]); // add / remove
155
201
  }
156
202
  // /client-meta/{client}/{key}/{action}
@@ -183,6 +229,14 @@ export function routeFakeRequest(store, method, path, body) {
183
229
  return ok([]);
184
230
  }
185
231
  }
232
+ // POST /metrics/{type}/{key}[/summarize]
233
+ if (method === "POST" && head === "metrics") {
234
+ const type = decodeURIComponent(seg[1] ?? "");
235
+ const key = decodeURIComponent(seg[2] ?? "");
236
+ const summarize = seg[3] === "summarize";
237
+ store.recordMetricsRequest({ type, key, summarize, body });
238
+ return ok(store.metricsResponse(type, key));
239
+ }
186
240
  // Anything the control plane calls that we don't model: surface it loudly, don't silently pass.
187
241
  return fail(404, `fake_endpoint_not_implemented: ${method} /${path}`);
188
242
  }
@@ -4,6 +4,17 @@
4
4
  * `defaultFakeFetch` is a process-global instance for env-driven `WP_CLOUD_PROVIDER_MODE=fake`.
5
5
  */
6
6
  import type { WpCloudFakeFetch } from "../runtime.js";
7
+ import { FakeAtomicStore } from "./store.js";
8
+ /**
9
+ * Same fake as `makeFakeAtomic()`, but also hands back the underlying store
10
+ * so a test can assert on recorded state directly (house rule: assert the
11
+ * effect, not that a mock was called) — e.g. crontab registration, aliases,
12
+ * persistent data.
13
+ */
14
+ export declare function makeFakeAtomicWithStore(): {
15
+ fetch: WpCloudFakeFetch;
16
+ store: FakeAtomicStore;
17
+ };
7
18
  export declare function makeFakeAtomic(): WpCloudFakeFetch;
8
19
  /** Process-global fake for `WP_CLOUD_PROVIDER_MODE=fake` (no per-suite override installed). */
9
20
  export declare const defaultFakeFetch: WpCloudFakeFetch;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/fake/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA6CtD,wBAAgB,cAAc,IAAI,gBAAgB,CAiBjD;AAED,+FAA+F;AAC/F,eAAO,MAAM,gBAAgB,EAAE,gBAAmC,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/fake/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA2C7C;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAkB7F;AAED,wBAAgB,cAAc,IAAI,gBAAgB,CAEjD;AAED,+FAA+F;AAC/F,eAAO,MAAM,gBAAgB,EAAE,gBAAmC,CAAC"}
@@ -42,9 +42,15 @@ async function readBody(input, init) {
42
42
  }
43
43
  return raw ? parseNestedForm(raw) : {};
44
44
  }
45
- export function makeFakeAtomic() {
45
+ /**
46
+ * Same fake as `makeFakeAtomic()`, but also hands back the underlying store
47
+ * so a test can assert on recorded state directly (house rule: assert the
48
+ * effect, not that a mock was called) — e.g. crontab registration, aliases,
49
+ * persistent data.
50
+ */
51
+ export function makeFakeAtomicWithStore() {
46
52
  const store = new FakeAtomicStore();
47
- return async (input, init) => {
53
+ const fetch = async (input, init) => {
48
54
  const rawUrl = input instanceof Request ? input.url : String(input);
49
55
  const url = new URL(rawUrl);
50
56
  // path after /api/v1.0/, trailing slash trimmed; segments stay encoded (router decodes its own)
@@ -57,6 +63,10 @@ export function makeFakeAtomic() {
57
63
  headers: { "content-type": "application/json" },
58
64
  });
59
65
  };
66
+ return { fetch, store };
67
+ }
68
+ export function makeFakeAtomic() {
69
+ return makeFakeAtomicWithStore().fetch;
60
70
  }
61
71
  /** Process-global fake for `WP_CLOUD_PROVIDER_MODE=fake` (no per-suite override installed). */
62
72
  export const defaultFakeFetch = makeFakeAtomic();
@@ -1,28 +1,46 @@
1
1
  /**
2
2
  * In-memory state for the lean wp.cloud fake. Models only the lifecycle we captured real shapes for
3
- * (sites, jobs, aliases, meta) — see internal-docs/testing-system-plan.html §4. Edge-cache / SSL /
4
- * domain-claim are answered leniently by the router but not modelled here; their real behavior lives
5
- * in the gated `direct/` suites.
3
+ * (sites, jobs, aliases, meta, crontab) — see internal-docs/testing-system-plan.html §4. Edge-cache /
4
+ * SSL / domain-claim are answered leniently by the router but not modelled here; their real behavior
5
+ * lives in the gated `direct/` suites.
6
6
  */
7
+ export type FakeCronEntry = {
8
+ cronId: number;
9
+ schedule: string;
10
+ requestedSchedule: string;
11
+ command: string;
12
+ };
7
13
  export type FakeSite = {
8
14
  atomicSiteId: string;
9
15
  domainName: string;
10
16
  meta: Record<string, string>;
11
17
  persistentData: Record<string, string>;
18
+ persistentDataEnv: Record<string, boolean>;
12
19
  aliases: Set<string>;
20
+ crons: FakeCronEntry[];
13
21
  };
14
22
  export type FakeSiteSnapshot = {
15
23
  atomicSiteId: string;
16
24
  domainName: string;
17
25
  meta: Record<string, string>;
18
26
  persistentData: Record<string, string>;
27
+ persistentDataEnv: Record<string, boolean>;
19
28
  aliases: string[];
20
29
  };
30
+ export type FakeMetricsRequest = {
31
+ type: string;
32
+ key: string;
33
+ summarize: boolean;
34
+ body: Record<string, unknown>;
35
+ };
21
36
  export declare class FakeAtomicStore {
22
37
  private readonly sites;
23
38
  private readonly clientMeta;
39
+ private readonly metricsResponses;
40
+ private readonly metricRequestLog;
24
41
  private siteSeq;
25
42
  private jobSeq;
43
+ private cronSeq;
26
44
  datacenters(): string[];
27
45
  phpVersions(): string[];
28
46
  nextJobId(): number;
@@ -39,6 +57,7 @@ export declare class FakeAtomicStore {
39
57
  domainName: string;
40
58
  meta?: Record<string, string>;
41
59
  persistentData?: Record<string, string>;
60
+ persistentDataEnv?: Record<string, boolean>;
42
61
  aliases?: Iterable<string>;
43
62
  }): FakeSite;
44
63
  snapshot(): FakeSiteSnapshot[];
@@ -52,16 +71,29 @@ export declare class FakeAtomicStore {
52
71
  addAlias(id: string, domain: string): void;
53
72
  removeAlias(id: string, domain: string): void;
54
73
  aliases(id: string): string[];
74
+ addCron(id: string, input: {
75
+ schedule: string;
76
+ command: string;
77
+ }): FakeCronEntry | null;
78
+ listCrons(id: string): FakeCronEntry[];
79
+ updateCron(id: string, cronId: number, command: string): boolean;
80
+ removeCron(id: string, cronId: number): boolean;
55
81
  accessLogs(id: string): Array<Record<string, unknown>> | null;
56
82
  setClientMeta(key: string, value: string): void;
57
83
  getClientMeta(key: string): string | undefined;
58
84
  deleteClientMeta(key: string): boolean;
85
+ setMetricsResponse(type: string, key: string, response: Record<string, unknown>): void;
86
+ metricsResponse(type: string, key: string): Record<string, unknown>;
87
+ recordMetricsRequest(request: FakeMetricsRequest): void;
88
+ metricsRequests(): FakeMetricsRequest[];
59
89
  applyPersistentData(id: string, operations: Record<string, unknown>): Record<string, string> | null;
60
90
  persistentData(id: string): Record<string, string> | null;
61
91
  /** `GET /get-site/{id}/extra` shape — note `_data` is intentionally ABSENT (faithful to the real
62
92
  * endpoint, which omits it; the marker lives only on the list + site-meta endpoints). */
63
93
  siteExtra(site: FakeSite): Record<string, unknown>;
64
- /** `GET /get-sites/{client}?meta=_data` entry shape — carries `_data` so findWpCloudSiteByTargetId works. */
65
- listEntry(site: FakeSite): Record<string, unknown>;
94
+ /** `GET /get-sites/{client}/_data/` entry shape. */
95
+ listEntry(site: FakeSite, options: {
96
+ includeData: boolean;
97
+ }): Record<string, unknown>;
66
98
  }
67
99
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/fake/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/fake/store.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * In-memory state for the lean wp.cloud fake. Models only the lifecycle we captured real shapes for
3
- * (sites, jobs, aliases, meta) — see internal-docs/testing-system-plan.html §4. Edge-cache / SSL /
4
- * domain-claim are answered leniently by the router but not modelled here; their real behavior lives
5
- * in the gated `direct/` suites.
3
+ * (sites, jobs, aliases, meta, crontab) — see internal-docs/testing-system-plan.html §4. Edge-cache /
4
+ * SSL / domain-claim are answered leniently by the router but not modelled here; their real behavior
5
+ * lives in the gated `direct/` suites.
6
6
  */
7
7
  const DATACENTERS = ["ams", "bur", "dca", "dfw"];
8
8
  const PHP_VERSIONS = ["8.2", "8.3", "8.4", "8.5"];
@@ -12,8 +12,11 @@ function formFlag(value) {
12
12
  export class FakeAtomicStore {
13
13
  sites = new Map();
14
14
  clientMeta = new Map();
15
+ metricsResponses = new Map();
16
+ metricRequestLog = [];
15
17
  siteSeq = 151_000_000;
16
18
  jobSeq = 154_000_000;
19
+ cronSeq = 900_000;
17
20
  datacenters() {
18
21
  return [...DATACENTERS];
19
22
  }
@@ -30,7 +33,9 @@ export class FakeAtomicStore {
30
33
  domainName: input.domainName,
31
34
  meta: { ...input.meta },
32
35
  persistentData: {},
36
+ persistentDataEnv: {},
33
37
  aliases: new Set(),
38
+ crons: [],
34
39
  });
35
40
  return {
36
41
  job_id: this.nextJobId(),
@@ -48,7 +53,9 @@ export class FakeAtomicStore {
48
53
  domainName: input.domainName,
49
54
  meta: input.meta ? { ...input.meta } : {},
50
55
  persistentData: input.persistentData ? { ...input.persistentData } : {},
56
+ persistentDataEnv: input.persistentDataEnv ? { ...input.persistentDataEnv } : {},
51
57
  aliases: new Set(input.aliases ?? []),
58
+ crons: [],
52
59
  };
53
60
  this.sites.set(input.atomicSiteId, site);
54
61
  return site;
@@ -59,6 +66,7 @@ export class FakeAtomicStore {
59
66
  domainName: site.domainName,
60
67
  meta: { ...site.meta },
61
68
  persistentData: { ...site.persistentData },
69
+ persistentDataEnv: { ...site.persistentDataEnv },
62
70
  aliases: [...site.aliases],
63
71
  }));
64
72
  }
@@ -89,6 +97,37 @@ export class FakeAtomicStore {
89
97
  aliases(id) {
90
98
  return [...(this.sites.get(id)?.aliases ?? [])];
91
99
  }
100
+ addCron(id, input) {
101
+ const site = this.sites.get(id);
102
+ if (!site)
103
+ return null;
104
+ const cron = {
105
+ cronId: ++this.cronSeq,
106
+ schedule: input.schedule,
107
+ requestedSchedule: input.schedule,
108
+ command: input.command,
109
+ };
110
+ site.crons.push(cron);
111
+ return cron;
112
+ }
113
+ listCrons(id) {
114
+ return [...(this.sites.get(id)?.crons ?? [])];
115
+ }
116
+ updateCron(id, cronId, command) {
117
+ const cron = this.sites.get(id)?.crons.find((entry) => entry.cronId === cronId);
118
+ if (!cron)
119
+ return false;
120
+ cron.command = command;
121
+ return true;
122
+ }
123
+ removeCron(id, cronId) {
124
+ const site = this.sites.get(id);
125
+ if (!site)
126
+ return false;
127
+ const before = site.crons.length;
128
+ site.crons = site.crons.filter((entry) => entry.cronId !== cronId);
129
+ return site.crons.length < before;
130
+ }
92
131
  accessLogs(id) {
93
132
  const site = this.sites.get(id);
94
133
  if (!site)
@@ -114,6 +153,18 @@ export class FakeAtomicStore {
114
153
  deleteClientMeta(key) {
115
154
  return this.clientMeta.delete(key);
116
155
  }
156
+ setMetricsResponse(type, key, response) {
157
+ this.metricsResponses.set(`${type}:${key}`, response);
158
+ }
159
+ metricsResponse(type, key) {
160
+ return this.metricsResponses.get(`${type}:${key}`) ?? { periods: [] };
161
+ }
162
+ recordMetricsRequest(request) {
163
+ this.metricRequestLog.push(request);
164
+ }
165
+ metricsRequests() {
166
+ return [...this.metricRequestLog];
167
+ }
117
168
  applyPersistentData(id, operations) {
118
169
  const site = this.sites.get(id);
119
170
  if (!site)
@@ -124,9 +175,11 @@ export class FakeAtomicStore {
124
175
  const record = operation;
125
176
  if (formFlag(record.delete)) {
126
177
  delete site.persistentData[key];
178
+ delete site.persistentDataEnv[key];
127
179
  continue;
128
180
  }
129
181
  site.persistentData[key] = String(record.value ?? "");
182
+ site.persistentDataEnv[key] = formFlag(record.env);
130
183
  }
131
184
  return this.persistentData(id);
132
185
  }
@@ -163,12 +216,12 @@ export class FakeAtomicStore {
163
216
  wp_version: "latest",
164
217
  };
165
218
  }
166
- /** `GET /get-sites/{client}?meta=_data` entry shape — carries `_data` so findWpCloudSiteByTargetId works. */
167
- listEntry(site) {
219
+ /** `GET /get-sites/{client}/_data/` entry shape. */
220
+ listEntry(site, options) {
168
221
  return {
169
222
  atomic_site_id: Number(site.atomicSiteId),
170
223
  domain_name: site.domainName,
171
- _data: site.meta._data ?? null,
224
+ ...(options.includeData ? { _data: site.meta._data ?? null } : {}),
172
225
  };
173
226
  }
174
227
  }
@@ -1,5 +1,5 @@
1
1
  import { type Options as ClientOptions, type TDataShape, type Client } from "./client";
2
- import type { PostCustomCertificatesSiteCustomCertificateIdActivateData, PostCustomCertificatesSiteCustomCertificateIdActivateResponses, PostCustomCertificatesSiteCustomCertificateIdActivateErrors, PostClientMetaClientKeyAddData, PostClientMetaClientKeyAddResponses, PostClientMetaClientKeyAddErrors, PostCrontabSiteAddData, PostCrontabSiteAddResponses, PostCrontabSiteAddErrors, PostFirewallRulesSiteAddData, PostFirewallRulesSiteAddResponses, PostFirewallRulesSiteAddErrors, PostSitePersistDataSiteData, PostSitePersistDataSiteResponses, PostSitePersistDataSiteErrors, PostSshUserServiceIdentifierAddData, PostSshUserServiceIdentifierAddResponses, PostSshUserServiceIdentifierAddErrors, PostSiteAllowSshMigrationSiteData, PostSiteAllowSshMigrationSiteResponses, PostSiteAllowSshMigrationSiteErrors, GetEdgeCacheSiteDdosUntilData, GetEdgeCacheSiteDdosUntilResponses, GetEdgeCacheSiteDdosUntilErrors, PostEdgeCacheSiteDdosUntilData, PostEdgeCacheSiteDdosUntilResponses, PostEdgeCacheSiteDdosUntilErrors, GetEdgeCacheSiteDdosUntilDomainData, GetEdgeCacheSiteDdosUntilDomainResponses, GetEdgeCacheSiteDdosUntilDomainErrors, PostEdgeCacheSiteDdosUntilDomainData, PostEdgeCacheSiteDdosUntilDomainResponses, PostEdgeCacheSiteDdosUntilDomainErrors, GetSiteConvertDbCharsetServiceIdentifierFromToData, GetSiteConvertDbCharsetServiceIdentifierFromToResponses, GetSiteConvertDbCharsetServiceIdentifierFromToErrors, PostAliasPkeySetClientCategoryNameData, PostAliasPkeySetClientCategoryNameResponses, PostAliasPkeySetClientCategoryNameErrors, PostCreateSiteClientData, PostCreateSiteClientResponses, PostCreateSiteClientErrors, PostTaskCreateClientTypeData, PostTaskCreateClientTypeResponses, PostTaskCreateClientTypeErrors, PostCustomCertificatesSiteIdDeactivateData, PostCustomCertificatesSiteIdDeactivateResponses, PostCustomCertificatesSiteIdDeactivateErrors, PostCustomCertificatesSiteIdDeleteData, PostCustomCertificatesSiteIdDeleteResponses, PostCustomCertificatesSiteIdDeleteErrors, PostDeleteSiteServiceIdentifierData, PostDeleteSiteServiceIdentifierResponses, PostDeleteSiteServiceIdentifierErrors, PostSslHstsPreloadDomainFalseData, PostSslHstsPreloadDomainFalseResponses, PostSslHstsPreloadDomainFalseErrors, PostSslInfoDomainData, PostSslInfoDomainResponses, PostSslInfoDomainErrors, GetGetAvailableDatacentersClientData, GetGetAvailableDatacentersClientResponses, GetGetAvailableDatacentersClientErrors, GetGetIpsClientData, GetGetIpsClientResponses, GetGetIpsClientErrors, GetGetIpsClientDomainData, GetGetIpsClientDomainResponses, GetGetIpsClientDomainErrors, GetClientMetaClientKeyGetData, GetClientMetaClientKeyGetResponses, GetClientMetaClientKeyGetErrors, GetCustomCertificatesSiteData, GetCustomCertificatesSiteResponses, GetCustomCertificatesSiteErrors, GetCustomCertificatesSiteIdData, GetCustomCertificatesSiteIdResponses, GetCustomCertificatesSiteIdErrors, GetGetDomainVerificationCodeClientDomainData, GetGetDomainVerificationCodeClientDomainResponses, GetGetDomainVerificationCodeClientDomainErrors, GetEdgeCacheSiteData, GetEdgeCacheSiteResponses, GetEdgeCacheSiteErrors, GetEdgeCacheSiteActionData, GetEdgeCacheSiteActionResponses, GetEdgeCacheSiteActionErrors, PostEdgeCacheSiteActionData, PostEdgeCacheSiteActionResponses, PostEdgeCacheSiteActionErrors, GetEdgeCacheSiteActionDomainData, GetEdgeCacheSiteActionDomainResponses, GetEdgeCacheSiteActionDomainErrors, PostEdgeCacheSiteActionDomainData, PostEdgeCacheSiteActionDomainResponses, PostEdgeCacheSiteActionDomainErrors, GetJobCompletionIdData, GetJobCompletionIdResponses, GetJobCompletionIdErrors, PostJobCompletionIdData, PostJobCompletionIdResponses, PostJobCompletionIdErrors, GetJobStatusData, GetJobStatusResponses, GetJobStatusErrors, PostJobStatusData, PostJobStatusResponses, PostJobStatusErrors, GetJobStatusIdData, GetJobStatusIdResponses, GetJobStatusIdErrors, PostJobStatusIdData, PostJobStatusIdResponses, PostJobStatusIdErrors, PostResponseTicketMultiStatusData, PostResponseTicketMultiStatusResponses, PostResponseTicketMultiStatusErrors, GetGetPhpVersionsClientVerboseData, GetGetPhpVersionsClientVerboseResponses, GetGetPhpVersionsClientVerboseErrors, GetAliasPkeyGetClientCategoryNameData, GetAliasPkeyGetClientCategoryNameResponses, GetAliasPkeyGetClientCategoryNameErrors, PostResponseTicketGetFullData, PostResponseTicketGetFullResponses, PostResponseTicketGetFullErrors, PostResponseTicketGetSummaryData, PostResponseTicketGetSummaryResponses, PostResponseTicketGetSummaryErrors, GetSiteBackupGetServiceIdentifierBackupIdData, GetSiteBackupGetServiceIdentifierBackupIdResponses, GetSiteBackupGetServiceIdentifierBackupIdErrors, GetSiteBackupInfoServiceIdentifierBackupIdData, GetSiteBackupInfoServiceIdentifierBackupIdResponses, GetSiteBackupInfoServiceIdentifierBackupIdErrors, GetGetSiteSiteExtraData, GetGetSiteSiteExtraResponses, GetGetSiteSiteExtraErrors, PostSiteMetricsSiteSummarizeData, PostSiteMetricsSiteSummarizeResponses, PostSiteMetricsSiteSummarizeErrors, PostSiteErrorLogsSiteData, PostSiteErrorLogsSiteResponses, PostSiteErrorLogsSiteErrors, PostSitePhpmyadminSiteData, PostSitePhpmyadminSiteResponses, PostSitePhpmyadminSiteErrors, GetGetSshUserUsernameData, GetGetSshUserUsernameResponses, GetGetSshUserUsernameErrors, PostTaskGetAtomicTaskIdData, PostTaskGetAtomicTaskIdResponses, PostTaskGetAtomicTaskIdErrors, PostMetricsTypeKeySummarizeData, PostMetricsTypeKeySummarizeResponses, PostMetricsTypeKeySummarizeErrors, PostUsageSiteData, PostUsageSiteResponses, PostUsageSiteErrors, PostSiteLogsSiteData, PostSiteLogsSiteResponses, PostSiteLogsSiteErrors, PostLogsSiteSiteData, PostLogsSiteSiteResponses, PostLogsSiteSiteErrors, PostTaskInterruptTaskIdData, PostTaskInterruptTaskIdResponses, PostTaskInterruptTaskIdErrors, GetGetSitesClientData, GetGetSitesClientResponses, GetGetSitesClientErrors, GetGetSitesClientMetaData, GetGetSitesClientMetaResponses, GetGetSitesClientMetaErrors, GetCrontabSiteListData, GetCrontabSiteListResponses, GetCrontabSiteListErrors, GetCustomCertificatesSiteListData, GetCustomCertificatesSiteListResponses, GetCustomCertificatesSiteListErrors, GetWebhookFailuresClientData, GetWebhookFailuresClientResponses, GetWebhookFailuresClientErrors, GetFirewallRulesSiteListData, GetFirewallRulesSiteListResponses, GetFirewallRulesSiteListErrors, GetAliasPkeyCategoriesClientData, GetAliasPkeyCategoriesClientResponses, GetAliasPkeyCategoriesClientErrors, PostAliasPkeyListClientCategoryData, PostAliasPkeyListClientCategoryResponses, PostAliasPkeyListClientCategoryErrors, GetSiteBackupsListServiceIdentifierData, GetSiteBackupsListServiceIdentifierResponses, GetSiteBackupsListServiceIdentifierErrors, GetSiteBackupsListServiceIdentifierBackupTypeData, GetSiteBackupsListServiceIdentifierBackupTypeResponses, GetSiteBackupsListServiceIdentifierBackupTypeErrors, GetSshUserServiceIdentifierListData, GetSshUserServiceIdentifierListResponses, GetSshUserServiceIdentifierListErrors, GetEmailBlockClientActionTypeData, GetEmailBlockClientActionTypeResponses, GetEmailBlockClientActionTypeErrors, GetClientAuthorizedKeysClientActionData, GetClientAuthorizedKeysClientActionResponses, GetClientAuthorizedKeysClientActionErrors, PostClientAuthorizedKeysClientActionData, PostClientAuthorizedKeysClientActionResponses, PostClientAuthorizedKeysClientActionErrors, GetClientAuthorizedKeysClientActionIdData, GetClientAuthorizedKeysClientActionIdResponses, GetClientAuthorizedKeysClientActionIdErrors, PostClientAuthorizedKeysClientActionIdData, PostClientAuthorizedKeysClientActionIdResponses, PostClientAuthorizedKeysClientActionIdErrors, GetSiteAliasServiceIdentifierActionData, GetSiteAliasServiceIdentifierActionResponses, GetSiteAliasServiceIdentifierActionErrors, GetSiteMetaSiteKeyActionData, GetSiteMetaSiteKeyActionResponses, GetSiteMetaSiteKeyActionErrors, PostSiteMetaSiteKeyActionData, PostSiteMetaSiteKeyActionResponses, PostSiteMetaSiteKeyActionErrors, PostSiteManageSoftwareTypeSiteData, PostSiteManageSoftwareTypeSiteResponses, PostSiteManageSoftwareTypeSiteErrors, GetSshDisconnectAllUsersServiceIdentifierData, GetSshDisconnectAllUsersServiceIdentifierResponses, GetSshDisconnectAllUsersServiceIdentifierErrors, GetClientMetaClientKeyRemoveData, GetClientMetaClientKeyRemoveResponses, GetClientMetaClientKeyRemoveErrors, PostCrontabSiteRemoveData, PostCrontabSiteRemoveResponses, PostCrontabSiteRemoveErrors, PostFirewallRulesSiteRemoveData, PostFirewallRulesSiteRemoveResponses, PostFirewallRulesSiteRemoveErrors, PostAliasPkeyRemoveClientCategoryNameData, PostAliasPkeyRemoveClientCategoryNameResponses, PostAliasPkeyRemoveClientCategoryNameErrors, GetSshUserServiceIdentifierRemoveUsernameData, GetSshUserServiceIdentifierRemoveUsernameResponses, GetSshUserServiceIdentifierRemoveUsernameErrors, PostSshUserServiceIdentifierRemoveUsernameData, PostSshUserServiceIdentifierRemoveUsernameResponses, PostSshUserServiceIdentifierRemoveUsernameErrors, PostOnDemandBackupCreateSiteTypeData, PostOnDemandBackupCreateSiteTypeResponses, PostOnDemandBackupCreateSiteTypeErrors, PostOnDemandBackupDeleteSiteBackupIdData, PostOnDemandBackupDeleteSiteBackupIdResponses, PostOnDemandBackupDeleteSiteBackupIdErrors, PostResetDbPasswordTypeSiteData, PostResetDbPasswordTypeSiteResponses, PostResetDbPasswordTypeSiteErrors, PostResetDbPasswordTypeSiteNewData, PostResetDbPasswordTypeSiteNewResponses, PostResetDbPasswordTypeSiteNewErrors, PostRestoreSiteSiteData, PostRestoreSiteSiteResponses, PostRestoreSiteSiteErrors, PostSslRetryDomainData, PostSslRetryDomainResponses, PostSslRetryDomainErrors, PostMalwareScanSiteData, PostMalwareScanSiteResponses, PostMalwareScanSiteErrors, PostCustomCertificatesSiteStageData, PostCustomCertificatesSiteStageResponses, PostCustomCertificatesSiteStageErrors, PostSslAndroidCompatDomainEnableData, PostSslAndroidCompatDomainEnableResponses, PostSslAndroidCompatDomainEnableErrors, PostSslHstsSubdomainDomainEnableData, PostSslHstsSubdomainDomainEnableResponses, PostSslHstsSubdomainDomainEnableErrors, PostSslSocialCrawlerRedirectDomainEnableData, PostSslSocialCrawlerRedirectDomainEnableResponses, PostSslSocialCrawlerRedirectDomainEnableErrors, PostCustomCertificatesSiteIdUpdateData, PostCustomCertificatesSiteIdUpdateResponses, PostCustomCertificatesSiteIdUpdateErrors, PostClientMetaClientKeyUpdateData, PostClientMetaClientKeyUpdateResponses, PostClientMetaClientKeyUpdateErrors, PostCrontabSiteUpdateCronIdData, PostCrontabSiteUpdateCronIdResponses, PostCrontabSiteUpdateCronIdErrors, PostSiteSetChrootSiteDesiredData, PostSiteSetChrootSiteDesiredResponses, PostSiteSetChrootSiteDesiredErrors, PostUpdateSiteDomainServiceIdentifierDomainData, PostUpdateSiteDomainServiceIdentifierDomainResponses, PostUpdateSiteDomainServiceIdentifierDomainErrors, PostUpdateSiteDomainServiceIdentifierDomainKeepData, PostUpdateSiteDomainServiceIdentifierDomainKeepResponses, PostUpdateSiteDomainServiceIdentifierDomainKeepErrors, PostUpdateSiteOptionsTypeSiteData, PostUpdateSiteOptionsTypeSiteResponses, PostUpdateSiteOptionsTypeSiteErrors, PostSshUserServiceIdentifierUpdateUsernameData, PostSshUserServiceIdentifierUpdateUsernameResponses, PostSshUserServiceIdentifierUpdateUsernameErrors, PostSiteWordpressVersionSiteVersionData, PostSiteWordpressVersionSiteVersionResponses, PostSiteWordpressVersionSiteVersionErrors, PostCustomCertificatesSiteValidateData, PostCustomCertificatesSiteValidateResponses, PostCustomCertificatesSiteValidateErrors, GetCheckCanHostDomainClientDomainData, GetCheckCanHostDomainClientDomainResponses, GetCheckCanHostDomainClientDomainErrors, GetSiteAliasServiceIdentifierActionDomainData, GetSiteAliasServiceIdentifierActionDomainResponses, GetSiteAliasServiceIdentifierActionDomainErrors } from "./types.gen";
2
+ import type { PostCustomCertificatesSiteCustomCertificateIdActivateData, PostCustomCertificatesSiteCustomCertificateIdActivateResponses, PostCustomCertificatesSiteCustomCertificateIdActivateErrors, PostClientMetaClientKeyAddData, PostClientMetaClientKeyAddResponses, PostClientMetaClientKeyAddErrors, PostCrontabSiteAddData, PostCrontabSiteAddResponses, PostCrontabSiteAddErrors, PostFirewallRulesSiteAddData, PostFirewallRulesSiteAddResponses, PostFirewallRulesSiteAddErrors, PostSitePersistDataSiteData, PostSitePersistDataSiteResponses, PostSitePersistDataSiteErrors, PostSshUserServiceIdentifierAddData, PostSshUserServiceIdentifierAddResponses, PostSshUserServiceIdentifierAddErrors, PostSiteAllowSshMigrationSiteData, PostSiteAllowSshMigrationSiteResponses, PostSiteAllowSshMigrationSiteErrors, GetEdgeCacheSiteDdosUntilData, GetEdgeCacheSiteDdosUntilResponses, GetEdgeCacheSiteDdosUntilErrors, PostEdgeCacheSiteDdosUntilData, PostEdgeCacheSiteDdosUntilResponses, PostEdgeCacheSiteDdosUntilErrors, GetEdgeCacheSiteDdosUntilDomainData, GetEdgeCacheSiteDdosUntilDomainResponses, GetEdgeCacheSiteDdosUntilDomainErrors, PostEdgeCacheSiteDdosUntilDomainData, PostEdgeCacheSiteDdosUntilDomainResponses, PostEdgeCacheSiteDdosUntilDomainErrors, GetSiteConvertDbCharsetServiceIdentifierFromToData, GetSiteConvertDbCharsetServiceIdentifierFromToResponses, GetSiteConvertDbCharsetServiceIdentifierFromToErrors, PostAliasPkeySetClientCategoryNameData, PostAliasPkeySetClientCategoryNameResponses, PostAliasPkeySetClientCategoryNameErrors, PostCreateSiteClientData, PostCreateSiteClientResponses, PostCreateSiteClientErrors, PostTaskCreateClientTypeData, PostTaskCreateClientTypeResponses, PostTaskCreateClientTypeErrors, PostCustomCertificatesSiteIdDeactivateData, PostCustomCertificatesSiteIdDeactivateResponses, PostCustomCertificatesSiteIdDeactivateErrors, PostCustomCertificatesSiteIdDeleteData, PostCustomCertificatesSiteIdDeleteResponses, PostCustomCertificatesSiteIdDeleteErrors, PostDeleteSiteServiceIdentifierData, PostDeleteSiteServiceIdentifierResponses, PostDeleteSiteServiceIdentifierErrors, PostSslHstsPreloadDomainFalseData, PostSslHstsPreloadDomainFalseResponses, PostSslHstsPreloadDomainFalseErrors, PostSslInfoDomainData, PostSslInfoDomainResponses, PostSslInfoDomainErrors, GetGetAvailableDatacentersClientData, GetGetAvailableDatacentersClientResponses, GetGetAvailableDatacentersClientErrors, GetGetIpsClientData, GetGetIpsClientResponses, GetGetIpsClientErrors, GetGetIpsClientDomainData, GetGetIpsClientDomainResponses, GetGetIpsClientDomainErrors, GetClientMetaClientKeyGetData, GetClientMetaClientKeyGetResponses, GetClientMetaClientKeyGetErrors, GetCustomCertificatesSiteData, GetCustomCertificatesSiteResponses, GetCustomCertificatesSiteErrors, GetCustomCertificatesSiteIdData, GetCustomCertificatesSiteIdResponses, GetCustomCertificatesSiteIdErrors, GetGetDomainVerificationCodeClientDomainData, GetGetDomainVerificationCodeClientDomainResponses, GetGetDomainVerificationCodeClientDomainErrors, GetEdgeCacheSiteData, GetEdgeCacheSiteResponses, GetEdgeCacheSiteErrors, GetEdgeCacheSiteActionData, GetEdgeCacheSiteActionResponses, GetEdgeCacheSiteActionErrors, PostEdgeCacheSiteActionData, PostEdgeCacheSiteActionResponses, PostEdgeCacheSiteActionErrors, GetEdgeCacheSiteActionDomainData, GetEdgeCacheSiteActionDomainResponses, GetEdgeCacheSiteActionDomainErrors, PostEdgeCacheSiteActionDomainData, PostEdgeCacheSiteActionDomainResponses, PostEdgeCacheSiteActionDomainErrors, GetJobCompletionIdData, GetJobCompletionIdResponses, GetJobCompletionIdErrors, PostJobCompletionIdData, PostJobCompletionIdResponses, PostJobCompletionIdErrors, GetJobStatusData, GetJobStatusResponses, GetJobStatusErrors, PostJobStatusData, PostJobStatusResponses, PostJobStatusErrors, GetJobStatusIdData, GetJobStatusIdResponses, GetJobStatusIdErrors, PostJobStatusIdData, PostJobStatusIdResponses, PostJobStatusIdErrors, PostResponseTicketMultiStatusData, PostResponseTicketMultiStatusResponses, PostResponseTicketMultiStatusErrors, GetAliasPkeyGetClientCategoryNameData, GetAliasPkeyGetClientCategoryNameResponses, GetAliasPkeyGetClientCategoryNameErrors, PostResponseTicketGetFullData, PostResponseTicketGetFullResponses, PostResponseTicketGetFullErrors, PostResponseTicketGetSummaryData, PostResponseTicketGetSummaryResponses, PostResponseTicketGetSummaryErrors, GetSiteBackupGetServiceIdentifierBackupIdData, GetSiteBackupGetServiceIdentifierBackupIdResponses, GetSiteBackupGetServiceIdentifierBackupIdErrors, GetSiteBackupInfoServiceIdentifierBackupIdData, GetSiteBackupInfoServiceIdentifierBackupIdResponses, GetSiteBackupInfoServiceIdentifierBackupIdErrors, GetGetSiteSiteExtraData, GetGetSiteSiteExtraResponses, GetGetSiteSiteExtraErrors, PostSiteMetricsSiteSummarizeData, PostSiteMetricsSiteSummarizeResponses, PostSiteMetricsSiteSummarizeErrors, PostSiteErrorLogsSiteData, PostSiteErrorLogsSiteResponses, PostSiteErrorLogsSiteErrors, PostSitePhpmyadminSiteData, PostSitePhpmyadminSiteResponses, PostSitePhpmyadminSiteErrors, GetGetSshUserUsernameData, GetGetSshUserUsernameResponses, GetGetSshUserUsernameErrors, PostTaskGetAtomicTaskIdData, PostTaskGetAtomicTaskIdResponses, PostTaskGetAtomicTaskIdErrors, PostMetricsTypeKeySummarizeData, PostMetricsTypeKeySummarizeResponses, PostMetricsTypeKeySummarizeErrors, PostUsageSiteData, PostUsageSiteResponses, PostUsageSiteErrors, PostSiteLogsSiteData, PostSiteLogsSiteResponses, PostSiteLogsSiteErrors, PostLogsSiteSiteData, PostLogsSiteSiteResponses, PostLogsSiteSiteErrors, PostTaskInterruptTaskIdData, PostTaskInterruptTaskIdResponses, PostTaskInterruptTaskIdErrors, GetGetSitesClientData, GetGetSitesClientResponses, GetGetSitesClientErrors, GetCrontabSiteListData, GetCrontabSiteListResponses, GetCrontabSiteListErrors, GetCustomCertificatesSiteListData, GetCustomCertificatesSiteListResponses, GetCustomCertificatesSiteListErrors, GetWebhookFailuresClientData, GetWebhookFailuresClientResponses, GetWebhookFailuresClientErrors, GetFirewallRulesSiteListData, GetFirewallRulesSiteListResponses, GetFirewallRulesSiteListErrors, GetAliasPkeyCategoriesClientData, GetAliasPkeyCategoriesClientResponses, GetAliasPkeyCategoriesClientErrors, PostAliasPkeyListClientCategoryData, PostAliasPkeyListClientCategoryResponses, PostAliasPkeyListClientCategoryErrors, GetSiteBackupsListServiceIdentifierData, GetSiteBackupsListServiceIdentifierResponses, GetSiteBackupsListServiceIdentifierErrors, GetSiteBackupsListServiceIdentifierBackupTypeData, GetSiteBackupsListServiceIdentifierBackupTypeResponses, GetSiteBackupsListServiceIdentifierBackupTypeErrors, GetSshUserServiceIdentifierListData, GetSshUserServiceIdentifierListResponses, GetSshUserServiceIdentifierListErrors, GetEmailBlockClientActionTypeData, GetEmailBlockClientActionTypeResponses, GetEmailBlockClientActionTypeErrors, GetClientAuthorizedKeysClientActionData, GetClientAuthorizedKeysClientActionResponses, GetClientAuthorizedKeysClientActionErrors, PostClientAuthorizedKeysClientActionData, PostClientAuthorizedKeysClientActionResponses, PostClientAuthorizedKeysClientActionErrors, GetClientAuthorizedKeysClientActionIdData, GetClientAuthorizedKeysClientActionIdResponses, GetClientAuthorizedKeysClientActionIdErrors, PostClientAuthorizedKeysClientActionIdData, PostClientAuthorizedKeysClientActionIdResponses, PostClientAuthorizedKeysClientActionIdErrors, GetSiteAliasServiceIdentifierActionData, GetSiteAliasServiceIdentifierActionResponses, GetSiteAliasServiceIdentifierActionErrors, GetSiteMetaSiteKeyActionData, GetSiteMetaSiteKeyActionResponses, GetSiteMetaSiteKeyActionErrors, PostSiteMetaSiteKeyActionData, PostSiteMetaSiteKeyActionResponses, PostSiteMetaSiteKeyActionErrors, PostSiteManageSoftwareTypeSiteData, PostSiteManageSoftwareTypeSiteResponses, PostSiteManageSoftwareTypeSiteErrors, GetSshDisconnectAllUsersServiceIdentifierData, GetSshDisconnectAllUsersServiceIdentifierResponses, GetSshDisconnectAllUsersServiceIdentifierErrors, GetClientMetaClientKeyRemoveData, GetClientMetaClientKeyRemoveResponses, GetClientMetaClientKeyRemoveErrors, PostCrontabSiteRemoveData, PostCrontabSiteRemoveResponses, PostCrontabSiteRemoveErrors, PostFirewallRulesSiteRemoveData, PostFirewallRulesSiteRemoveResponses, PostFirewallRulesSiteRemoveErrors, PostAliasPkeyRemoveClientCategoryNameData, PostAliasPkeyRemoveClientCategoryNameResponses, PostAliasPkeyRemoveClientCategoryNameErrors, GetSshUserServiceIdentifierRemoveUsernameData, GetSshUserServiceIdentifierRemoveUsernameResponses, GetSshUserServiceIdentifierRemoveUsernameErrors, PostSshUserServiceIdentifierRemoveUsernameData, PostSshUserServiceIdentifierRemoveUsernameResponses, PostSshUserServiceIdentifierRemoveUsernameErrors, PostOnDemandBackupCreateSiteTypeData, PostOnDemandBackupCreateSiteTypeResponses, PostOnDemandBackupCreateSiteTypeErrors, PostOnDemandBackupDeleteSiteBackupIdData, PostOnDemandBackupDeleteSiteBackupIdResponses, PostOnDemandBackupDeleteSiteBackupIdErrors, PostResetDbPasswordTypeSiteData, PostResetDbPasswordTypeSiteResponses, PostResetDbPasswordTypeSiteErrors, PostResetDbPasswordTypeSiteNewData, PostResetDbPasswordTypeSiteNewResponses, PostResetDbPasswordTypeSiteNewErrors, PostRestoreSiteSiteData, PostRestoreSiteSiteResponses, PostRestoreSiteSiteErrors, PostSslRetryDomainData, PostSslRetryDomainResponses, PostSslRetryDomainErrors, PostMalwareScanSiteData, PostMalwareScanSiteResponses, PostMalwareScanSiteErrors, PostCustomCertificatesSiteStageData, PostCustomCertificatesSiteStageResponses, PostCustomCertificatesSiteStageErrors, PostSslAndroidCompatDomainEnableData, PostSslAndroidCompatDomainEnableResponses, PostSslAndroidCompatDomainEnableErrors, PostSslHstsSubdomainDomainEnableData, PostSslHstsSubdomainDomainEnableResponses, PostSslHstsSubdomainDomainEnableErrors, PostSslSocialCrawlerRedirectDomainEnableData, PostSslSocialCrawlerRedirectDomainEnableResponses, PostSslSocialCrawlerRedirectDomainEnableErrors, PostCustomCertificatesSiteIdUpdateData, PostCustomCertificatesSiteIdUpdateResponses, PostCustomCertificatesSiteIdUpdateErrors, PostClientMetaClientKeyUpdateData, PostClientMetaClientKeyUpdateResponses, PostClientMetaClientKeyUpdateErrors, PostCrontabSiteUpdateCronIdData, PostCrontabSiteUpdateCronIdResponses, PostCrontabSiteUpdateCronIdErrors, PostSiteSetChrootSiteDesiredData, PostSiteSetChrootSiteDesiredResponses, PostSiteSetChrootSiteDesiredErrors, PostUpdateSiteDomainServiceIdentifierDomainData, PostUpdateSiteDomainServiceIdentifierDomainResponses, PostUpdateSiteDomainServiceIdentifierDomainErrors, PostUpdateSiteDomainServiceIdentifierDomainKeepData, PostUpdateSiteDomainServiceIdentifierDomainKeepResponses, PostUpdateSiteDomainServiceIdentifierDomainKeepErrors, PostUpdateSiteOptionsTypeSiteData, PostUpdateSiteOptionsTypeSiteResponses, PostUpdateSiteOptionsTypeSiteErrors, PostSshUserServiceIdentifierUpdateUsernameData, PostSshUserServiceIdentifierUpdateUsernameResponses, PostSshUserServiceIdentifierUpdateUsernameErrors, PostSiteWordpressVersionSiteVersionData, PostSiteWordpressVersionSiteVersionResponses, PostSiteWordpressVersionSiteVersionErrors, PostCustomCertificatesSiteValidateData, PostCustomCertificatesSiteValidateResponses, PostCustomCertificatesSiteValidateErrors, GetCheckCanHostDomainClientDomainData, GetCheckCanHostDomainClientDomainResponses, GetCheckCanHostDomainClientDomainErrors, GetGetPhpVersionsClientData, GetGetPhpVersionsClientResponses, GetGetPhpVersionsClientErrors, GetGetSitesClientMetaData, GetGetSitesClientMetaResponses, GetGetSitesClientMetaErrors, GetSiteAliasServiceIdentifierActionDomainData, GetSiteAliasServiceIdentifierActionDomainResponses, GetSiteAliasServiceIdentifierActionDomainErrors } from "./types.gen";
3
3
  export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = ClientOptions<TData, ThrowOnError> & {
4
4
  /**
5
5
  * You can provide a client instance returned by `createClient()` instead of
@@ -118,7 +118,7 @@ export declare const postAliasPkeySetClientCategoryName: <ThrowOnError extends b
118
118
  * Create Site
119
119
  * Create a WP Cloud site with the following options.
120
120
  */
121
- export declare const postCreateSiteClient: <ThrowOnError extends boolean = true>(options?: Options<PostCreateSiteClientData, ThrowOnError>) => import("./client").RequestResult<PostCreateSiteClientResponses, PostCreateSiteClientErrors, ThrowOnError, "fields">;
121
+ export declare const postCreateSiteClient: <ThrowOnError extends boolean = true>(options: Options<PostCreateSiteClientData, ThrowOnError>) => import("./client").RequestResult<PostCreateSiteClientResponses, PostCreateSiteClientErrors, ThrowOnError, "fields">;
122
122
  /**
123
123
  * Create Task
124
124
  * Create a task that will iterate over all client sites.
@@ -161,7 +161,7 @@ export declare const postSslInfoDomain: <ThrowOnError extends boolean = true>(op
161
161
  * Get Available Datacenters
162
162
  * Get a list of datacenters with available (non-full, active) servers.
163
163
  */
164
- export declare const getGetAvailableDatacentersClient: <ThrowOnError extends boolean = true>(options?: Options<GetGetAvailableDatacentersClientData, ThrowOnError>) => import("./client").RequestResult<GetGetAvailableDatacentersClientResponses, GetGetAvailableDatacentersClientErrors, ThrowOnError, "fields">;
164
+ export declare const getGetAvailableDatacentersClient: <ThrowOnError extends boolean = true>(options: Options<GetGetAvailableDatacentersClientData, ThrowOnError>) => import("./client").RequestResult<GetGetAvailableDatacentersClientResponses, GetGetAvailableDatacentersClientErrors, ThrowOnError, "fields">;
165
165
  /**
166
166
  * Get Client IP Addresses
167
167
  * Get the IPs for a client; if a domain is included, get suggested IPs if possible for the client.
@@ -254,11 +254,6 @@ export declare const postJobStatusId: <ThrowOnError extends boolean = true>(opti
254
254
  * Retrieve the current status of multiple response tickets in a single request. Requires the "response-ticket/multi-status" extended endpoint authorization.
255
255
  */
256
256
  export declare const postResponseTicketMultiStatus: <ThrowOnError extends boolean = true>(options?: Options<PostResponseTicketMultiStatusData, ThrowOnError>) => import("./client").RequestResult<PostResponseTicketMultiStatusResponses, PostResponseTicketMultiStatusErrors, ThrowOnError, "fields">;
257
- /**
258
- * Get PHP Versions
259
- * Get a list of available PHP versions, in either simplified (default) or verbose format.
260
- */
261
- export declare const getGetPhpVersionsClientVerbose: <ThrowOnError extends boolean = true>(options?: Options<GetGetPhpVersionsClientVerboseData, ThrowOnError>) => import("./client").RequestResult<GetGetPhpVersionsClientVerboseResponses, GetGetPhpVersionsClientVerboseErrors, ThrowOnError, "fields">;
262
257
  /**
263
258
  * Get Public Key
264
259
  * Retrieve a single aliasable public key.
@@ -502,29 +497,6 @@ export declare const postTaskInterruptTaskId: <ThrowOnError extends boolean = tr
502
497
  * - `_data`
503
498
  */
504
499
  export declare const getGetSitesClient: <ThrowOnError extends boolean = true>(options: Options<GetGetSitesClientData, ThrowOnError>) => import("./client").RequestResult<GetGetSitesClientResponses, GetGetSitesClientErrors, ThrowOnError, "fields">;
505
- /**
506
- * List Client Sites
507
- * List a client's sites, generally for auditing purposes.
508
- *
509
- * Additional site meta keys can be added to the output by specifying them at the end of the endpoint URI separated by '/'. For example, `/get-sites/:client/php_version` would add each site's `php_version` to the output.
510
- *
511
- * The following additional site meta keys are supported:
512
- * - `wp_version`
513
- * - `php_version`
514
- * - `space_quota`
515
- * - `db_file_size`
516
- * - `static_file_404`
517
- * - `suspended`
518
- * - `suspend_after`
519
- * - `burst_php_conns`
520
- * - `default_php_conns`
521
- * - `php_memory_limit`
522
- * - `opcache_memory_limit_mb`
523
- * - `chroot_path`
524
- * - `chroot_ssh_path`
525
- * - `_data`
526
- */
527
- export declare const getGetSitesClientMeta: <ThrowOnError extends boolean = true>(options: Options<GetGetSitesClientMetaData, ThrowOnError>) => import("./client").RequestResult<GetGetSitesClientMetaResponses, GetGetSitesClientMetaErrors, ThrowOnError, "fields">;
528
500
  /**
529
501
  * List Cron Entries
530
502
  * Returns a list of cron entries for a site.
@@ -832,6 +804,34 @@ export declare const postCustomCertificatesSiteValidate: <ThrowOnError extends b
832
804
  * Check whether a domain can be hosted on WP Cloud. Note that this check will return false for valid domains that are already hosted on WordPress.com or WP Cloud infrastructure.
833
805
  */
834
806
  export declare const getCheckCanHostDomainClientDomain: <ThrowOnError extends boolean = true>(options: Options<GetCheckCanHostDomainClientDomainData, ThrowOnError>) => import("./client").RequestResult<GetCheckCanHostDomainClientDomainResponses, GetCheckCanHostDomainClientDomainErrors, ThrowOnError, "fields">;
807
+ /**
808
+ * Get PHP Versions
809
+ * Get a list of available PHP versions, in either simplified (default) or verbose format.
810
+ */
811
+ export declare const getGetPhpVersionsClient: <ThrowOnError extends boolean = true>(options: Options<GetGetPhpVersionsClientData, ThrowOnError>) => import("./client").RequestResult<GetGetPhpVersionsClientResponses, GetGetPhpVersionsClientErrors, ThrowOnError, "fields">;
812
+ /**
813
+ * List Client Sites
814
+ * List a client's sites, generally for auditing purposes.
815
+ *
816
+ * Additional site meta keys can be added to the output by specifying them at the end of the endpoint URI separated by '/'. For example, `/get-sites/:client/php_version` would add each site's `php_version` to the output.
817
+ *
818
+ * The following additional site meta keys are supported:
819
+ * - `wp_version`
820
+ * - `php_version`
821
+ * - `space_quota`
822
+ * - `db_file_size`
823
+ * - `static_file_404`
824
+ * - `suspended`
825
+ * - `suspend_after`
826
+ * - `burst_php_conns`
827
+ * - `default_php_conns`
828
+ * - `php_memory_limit`
829
+ * - `opcache_memory_limit_mb`
830
+ * - `chroot_path`
831
+ * - `chroot_ssh_path`
832
+ * - `_data`
833
+ */
834
+ export declare const getGetSitesClientMeta: <ThrowOnError extends boolean = true>(options: Options<GetGetSitesClientMetaData, ThrowOnError>) => import("./client").RequestResult<GetGetSitesClientMetaResponses, GetGetSitesClientMetaErrors, ThrowOnError, "fields">;
835
835
  /**
836
836
  * Manage Site Aliases
837
837
  * Manage domain aliases for a site.