@amerged/ohmyhost-cli 0.1.10 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/bin.js +1 -1
- package/dist/{chunk-Z75ASLEB.js → chunk-WT2RRQUB.js} +40 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/apps/product-cli/cli.ts +14 -0
- package/src/apps/product-cli/command.ts +14 -0
- package/src/apps/product-cli/product-api.ts +9 -0
- package/src/packages/contracts/credit-pricing.ts +1 -1
- package/src/packages/sdk-ts/generated/index.ts +7 -0
- package/src/packages/sdk-ts/generated/sdk.gen.ts +47 -3
- package/src/packages/sdk-ts/generated/types.gen.ts +77 -4
package/README.md
CHANGED
package/dist/bin.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createRequire as __ohmyhostCreateRequire } from "node:module"; const require = __ohmyhostCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
runProductionCli
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-WT2RRQUB.js";
|
|
6
6
|
import "./chunk-4HFQ54FP.js";
|
|
7
7
|
|
|
8
8
|
// apps/product-cli/dist/bin.js
|
|
@@ -15000,6 +15000,8 @@ var recognizedCommandLabel = (argv) => {
|
|
|
15000
15000
|
return "project notes set";
|
|
15001
15001
|
if (value === "project" && values[0] === "status")
|
|
15002
15002
|
return "project status";
|
|
15003
|
+
if (value === "project" && values[0] === "handle" && values[1] === "check")
|
|
15004
|
+
return "project handle check";
|
|
15003
15005
|
if (value === "project" && values[0] === "dev-access" && values[1] === "create")
|
|
15004
15006
|
return "project dev-access create";
|
|
15005
15007
|
if (value === "database" && values[0] === "compute" && values[1] === "set")
|
|
@@ -15442,6 +15444,12 @@ var parseProductCliCommand = (argv) => {
|
|
|
15442
15444
|
}
|
|
15443
15445
|
if (first === "project") {
|
|
15444
15446
|
const subcommand = values.shift();
|
|
15447
|
+
if (subcommand === "handle" && values.shift() === "check") {
|
|
15448
|
+
if (yes || wait || follow || stdin)
|
|
15449
|
+
throw new InvalidCommandError();
|
|
15450
|
+
const options2 = parseOptions(values, ["--handle"]);
|
|
15451
|
+
return { kind: "project-handle-check", handle: options2["--handle"], credentialStore };
|
|
15452
|
+
}
|
|
15445
15453
|
if (subcommand === "dev-access" && values.shift() === "create") {
|
|
15446
15454
|
if (yes || wait || follow || stdin)
|
|
15447
15455
|
throw new InvalidCommandError();
|
|
@@ -16517,7 +16525,7 @@ function assertOrganizationAccount(value) {
|
|
|
16517
16525
|
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).sort().join(",") !== "as_of,available_micros,monthly_micros,name,next_expiry,one_time_micros,organization_id,paid_until,plan,plan_source,reserved_micros,workos_organization_id")
|
|
16518
16526
|
throw new TypeError("Invalid account fields");
|
|
16519
16527
|
const v = value;
|
|
16520
|
-
if (typeof v["organization_id"] !== "string" || !/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/u.test(v["organization_id"]) || typeof v["name"] !== "string" || v["name"].length > 128 || typeof v["workos_organization_id"] !== "string" || !/^org_[A-Za-z0-9_]+$/u.test(v["workos_organization_id"]) || v["plan"] !== "paid" && v["plan"] !== "free" || !["free", "stripe", "
|
|
16528
|
+
if (typeof v["organization_id"] !== "string" || !/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/u.test(v["organization_id"]) || typeof v["name"] !== "string" || v["name"].length > 128 || typeof v["workos_organization_id"] !== "string" || !/^org_[A-Za-z0-9_]+$/u.test(v["workos_organization_id"]) || v["plan"] !== "paid" && v["plan"] !== "free" || !["free", "stripe", "granted", "manual"].includes(String(v["plan_source"])) || v["plan"] === "free" !== (v["plan_source"] === "free"))
|
|
16521
16529
|
throw new TypeError("Invalid account scope");
|
|
16522
16530
|
for (const field of ["available_micros", "monthly_micros", "one_time_micros", "reserved_micros"])
|
|
16523
16531
|
if (typeof v[field] !== "string" || !/^(0|[1-9][0-9]{0,18})$/u.test(v[field]))
|
|
@@ -17810,7 +17818,7 @@ function exact2(v, keys) {
|
|
|
17810
17818
|
// apps/product-cli/package.json
|
|
17811
17819
|
var package_default = {
|
|
17812
17820
|
name: "@ohmyhost/product-cli",
|
|
17813
|
-
version: "0.1.
|
|
17821
|
+
version: "0.1.11",
|
|
17814
17822
|
private: true,
|
|
17815
17823
|
ohmyhost: {
|
|
17816
17824
|
deployment: "production",
|
|
@@ -18173,6 +18181,7 @@ var HELP_USAGE = Object.freeze({
|
|
|
18173
18181
|
"project notes set": "ohmyhost project notes set --project ULID --version NUMBER --markdown TEXT --idempotency-key KEY --json (no credentials or signed URLs)",
|
|
18174
18182
|
"project status": "ohmyhost project status --project ULID --json",
|
|
18175
18183
|
"project dev-access create": "ohmyhost project dev-access create --project ULID --json",
|
|
18184
|
+
"project handle check": "ohmyhost project handle check --handle HANDLE --json (is this address free? answers with a reason and free alternatives; the address becomes HANDLE.check.omh.st)",
|
|
18176
18185
|
"database compute set": "ohmyhost database compute set --project ULID --environment dev|prod --profile standard|performance --idempotency-key KEY --yes [--wait] --json\n standard: Free 0.25 CU/1 GB/60s idle, Paid 0.5 CU/2 GB/60s idle. performance: Paid 1 CU/4 GB/300s idle, 2.5x database compute credits per equal active minute; longer idle time also consumes credits.",
|
|
18177
18186
|
"database compute get": "ohmyhost database compute get --project ULID [--environment dev|prod] --json",
|
|
18178
18187
|
"database write": "ohmyhost database write --project ULID --environment dev|prod --statement-file PATH --idempotency-key KEY [--parameters-json JSON] --yes --json",
|
|
@@ -18447,6 +18456,8 @@ var ProductCli = class {
|
|
|
18447
18456
|
return await this.createProject(command, signal);
|
|
18448
18457
|
if (command.kind === "project-list")
|
|
18449
18458
|
return await this.listProjects(command, signal);
|
|
18459
|
+
if (command.kind === "project-handle-check")
|
|
18460
|
+
return await this.checkProjectHandle(command, signal);
|
|
18450
18461
|
if (command.kind === "database-compute-set") {
|
|
18451
18462
|
const api = await this.authenticatedApi(command.credentialStore, signal);
|
|
18452
18463
|
let operation = parseOperation(await api.changeDatabaseCompute(command));
|
|
@@ -18786,6 +18797,11 @@ var ProductCli = class {
|
|
|
18786
18797
|
}));
|
|
18787
18798
|
return success("project list", { status: "succeeded", projects });
|
|
18788
18799
|
}
|
|
18800
|
+
async checkProjectHandle(command, signal) {
|
|
18801
|
+
const api = await this.authenticatedApi(command.credentialStore, signal);
|
|
18802
|
+
const handle = await api.checkProjectHandle({ handle: command.handle });
|
|
18803
|
+
return success("project handle check", { status: "succeeded", handle });
|
|
18804
|
+
}
|
|
18789
18805
|
async getProjectStatus(command, signal) {
|
|
18790
18806
|
const api = await this.authenticatedApi(command.credentialStore, signal);
|
|
18791
18807
|
const project = parseProjectStatus(await api.getProjectStatus(command.projectId));
|
|
@@ -19390,6 +19406,8 @@ var parsedCommandName = (command) => {
|
|
|
19390
19406
|
return "project status";
|
|
19391
19407
|
if (command.kind === "project-dev-access-create")
|
|
19392
19408
|
return "project dev-access create";
|
|
19409
|
+
if (command.kind === "project-handle-check")
|
|
19410
|
+
return "project handle check";
|
|
19393
19411
|
if (command.kind === "database-write")
|
|
19394
19412
|
return "database write";
|
|
19395
19413
|
if (command.kind === "database-query")
|
|
@@ -20931,6 +20949,23 @@ var getProjectStatus = (parameters, options) => {
|
|
|
20931
20949
|
...params
|
|
20932
20950
|
});
|
|
20933
20951
|
};
|
|
20952
|
+
var getProjectHandleAvailability = (parameters, options) => {
|
|
20953
|
+
const params = buildClientParams([parameters], [
|
|
20954
|
+
{
|
|
20955
|
+
args: [
|
|
20956
|
+
{ in: "headers", key: "X-Request-Id" },
|
|
20957
|
+
{ in: "path", key: "handle" }
|
|
20958
|
+
]
|
|
20959
|
+
}
|
|
20960
|
+
]);
|
|
20961
|
+
return (options?.client ?? client).get({
|
|
20962
|
+
responseStyle: "data",
|
|
20963
|
+
security: [{ scheme: "bearer", type: "http" }],
|
|
20964
|
+
url: "/v1/project-handles/{handle}",
|
|
20965
|
+
...options,
|
|
20966
|
+
...params
|
|
20967
|
+
});
|
|
20968
|
+
};
|
|
20934
20969
|
var createProjectDevAccessTicket = (parameters, options) => {
|
|
20935
20970
|
const params = buildClientParams([parameters], [
|
|
20936
20971
|
{
|
|
@@ -21817,6 +21852,9 @@ var GeneratedSdkProductApi = class {
|
|
|
21817
21852
|
async listProjects(input) {
|
|
21818
21853
|
return listProjects(input, { client: this.#client });
|
|
21819
21854
|
}
|
|
21855
|
+
async checkProjectHandle(input) {
|
|
21856
|
+
return getProjectHandleAvailability({ handle: input.handle }, { client: this.#client });
|
|
21857
|
+
}
|
|
21820
21858
|
async getProjectStatus(projectId) {
|
|
21821
21859
|
return getProjectStatus({ project_id: projectId }, { client: this.#client });
|
|
21822
21860
|
}
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -310,6 +310,8 @@ const HELP_USAGE = Object.freeze({
|
|
|
310
310
|
"ohmyhost project notes set --project ULID --version NUMBER --markdown TEXT --idempotency-key KEY --json (no credentials or signed URLs)",
|
|
311
311
|
"project status": "ohmyhost project status --project ULID --json",
|
|
312
312
|
"project dev-access create": "ohmyhost project dev-access create --project ULID --json",
|
|
313
|
+
"project handle check":
|
|
314
|
+
"ohmyhost project handle check --handle HANDLE --json (is this address free? answers with a reason and free alternatives; the address becomes HANDLE.check.omh.st)",
|
|
313
315
|
"database compute set":
|
|
314
316
|
"ohmyhost database compute set --project ULID --environment dev|prod --profile standard|performance --idempotency-key KEY --yes [--wait] --json\n" +
|
|
315
317
|
" standard: Free 0.25 CU/1 GB/60s idle, Paid 0.5 CU/2 GB/60s idle. performance: Paid 1 CU/4 GB/300s idle, 2.5x database compute credits per equal active minute; longer idle time also consumes credits.",
|
|
@@ -687,6 +689,8 @@ export class ProductCli {
|
|
|
687
689
|
}
|
|
688
690
|
if (command.kind === "project-create") return await this.createProject(command, signal);
|
|
689
691
|
if (command.kind === "project-list") return await this.listProjects(command, signal);
|
|
692
|
+
if (command.kind === "project-handle-check")
|
|
693
|
+
return await this.checkProjectHandle(command, signal);
|
|
690
694
|
if (command.kind === "database-compute-set") {
|
|
691
695
|
const api = await this.authenticatedApi(command.credentialStore, signal);
|
|
692
696
|
let operation = parseOperation(await api.changeDatabaseCompute(command));
|
|
@@ -1165,6 +1169,15 @@ export class ProductCli {
|
|
|
1165
1169
|
return success("project list", { status: "succeeded", projects });
|
|
1166
1170
|
}
|
|
1167
1171
|
|
|
1172
|
+
private async checkProjectHandle(
|
|
1173
|
+
command: Extract<ProductCliCommand, { kind: "project-handle-check" }>,
|
|
1174
|
+
signal: AbortSignal,
|
|
1175
|
+
): Promise<CliResult> {
|
|
1176
|
+
const api = await this.authenticatedApi(command.credentialStore, signal);
|
|
1177
|
+
const handle = await api.checkProjectHandle({ handle: command.handle });
|
|
1178
|
+
return success("project handle check", { status: "succeeded", handle });
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1168
1181
|
private async getProjectStatus(
|
|
1169
1182
|
command: Extract<ProductCliCommand, { kind: "project-status" }>,
|
|
1170
1183
|
signal: AbortSignal,
|
|
@@ -2115,6 +2128,7 @@ const parsedCommandName = (command: ProductCliCommand): CommandLabel => {
|
|
|
2115
2128
|
if (command.kind === "project-notes-set") return "project notes set";
|
|
2116
2129
|
if (command.kind === "project-status") return "project status";
|
|
2117
2130
|
if (command.kind === "project-dev-access-create") return "project dev-access create";
|
|
2131
|
+
if (command.kind === "project-handle-check") return "project handle check";
|
|
2118
2132
|
if (command.kind === "database-write") return "database write";
|
|
2119
2133
|
if (command.kind === "database-query") return "database query";
|
|
2120
2134
|
if (command.kind === "database-access-create") return "database access create";
|
|
@@ -132,6 +132,12 @@ export type ProductCliCommand =
|
|
|
132
132
|
readonly idempotencyKey: string;
|
|
133
133
|
readonly credentialStore: "native";
|
|
134
134
|
}
|
|
135
|
+
| {
|
|
136
|
+
/** Asks whether a project address is free; the candidate is sent exactly as the agent typed it. */
|
|
137
|
+
readonly kind: "project-handle-check";
|
|
138
|
+
readonly handle: string;
|
|
139
|
+
readonly credentialStore: "native";
|
|
140
|
+
}
|
|
135
141
|
| { readonly kind: "help"; readonly topic?: string }
|
|
136
142
|
| { readonly kind: "version" }
|
|
137
143
|
| { readonly kind: "whoami"; readonly credentialStore: "native" }
|
|
@@ -487,6 +493,7 @@ export type RecognizedCommandLabel =
|
|
|
487
493
|
| "project list"
|
|
488
494
|
| "project status"
|
|
489
495
|
| "project dev-access create"
|
|
496
|
+
| "project handle check"
|
|
490
497
|
| "database write"
|
|
491
498
|
| "database query"
|
|
492
499
|
| "database access create"
|
|
@@ -576,6 +583,8 @@ export const recognizedCommandLabel = (argv: readonly string[]): RecognizedComma
|
|
|
576
583
|
if (value === "project" && values[0] === "notes" && values[1] === "set")
|
|
577
584
|
return "project notes set";
|
|
578
585
|
if (value === "project" && values[0] === "status") return "project status";
|
|
586
|
+
if (value === "project" && values[0] === "handle" && values[1] === "check")
|
|
587
|
+
return "project handle check";
|
|
579
588
|
if (value === "project" && values[0] === "dev-access" && values[1] === "create")
|
|
580
589
|
return "project dev-access create";
|
|
581
590
|
if (value === "database" && values[0] === "compute" && values[1] === "set")
|
|
@@ -1045,6 +1054,11 @@ export const parseProductCliCommand = (argv: readonly string[]): ProductCliComma
|
|
|
1045
1054
|
}
|
|
1046
1055
|
if (first === "project") {
|
|
1047
1056
|
const subcommand = values.shift();
|
|
1057
|
+
if (subcommand === "handle" && values.shift() === "check") {
|
|
1058
|
+
if (yes || wait || follow || stdin) throw new InvalidCommandError();
|
|
1059
|
+
const options = parseOptions(values, ["--handle"]);
|
|
1060
|
+
return { kind: "project-handle-check", handle: options["--handle"], credentialStore };
|
|
1061
|
+
}
|
|
1048
1062
|
if (subcommand === "dev-access" && values.shift() === "create") {
|
|
1049
1063
|
if (yes || wait || follow || stdin) throw new InvalidCommandError();
|
|
1050
1064
|
const options = parseOptions(values, ["--project"]);
|
|
@@ -83,6 +83,7 @@ import {
|
|
|
83
83
|
listEnvironmentSecrets,
|
|
84
84
|
listFunctionRuns,
|
|
85
85
|
listProjects,
|
|
86
|
+
getProjectHandleAvailability,
|
|
86
87
|
planDeployment,
|
|
87
88
|
planPaidProjectDomain,
|
|
88
89
|
planDeploymentRollback,
|
|
@@ -115,6 +116,7 @@ import {
|
|
|
115
116
|
type CurrentIdentity,
|
|
116
117
|
type DevAccessTicket,
|
|
117
118
|
type ProjectPage,
|
|
119
|
+
type ProjectHandleAvailability,
|
|
118
120
|
type ProjectStatus,
|
|
119
121
|
type PaidDomain,
|
|
120
122
|
type PaidDomainPlan,
|
|
@@ -208,6 +210,7 @@ export interface ProductApi {
|
|
|
208
210
|
/** The signed-in user's workspaces; an interactive session is required for this route. */
|
|
209
211
|
getAccountProfile(): Promise<readonly PublicWorkspace[]>;
|
|
210
212
|
listProjects(input: { readonly cursor?: string; readonly limit: number }): Promise<ProjectPage>;
|
|
213
|
+
checkProjectHandle(input: { readonly handle: string }): Promise<ProjectHandleAvailability>;
|
|
211
214
|
getProjectStatus(projectId: string): Promise<ProjectStatus>;
|
|
212
215
|
writeProjectDatabase(
|
|
213
216
|
input: ProjectDatabaseWriteRequest & { projectId: string; idempotencyKey: string },
|
|
@@ -582,6 +585,12 @@ export class GeneratedSdkProductApi implements ProductApi {
|
|
|
582
585
|
return listProjects(input, { client: this.#client });
|
|
583
586
|
}
|
|
584
587
|
|
|
588
|
+
public async checkProjectHandle(input: {
|
|
589
|
+
readonly handle: string;
|
|
590
|
+
}): Promise<ProjectHandleAvailability> {
|
|
591
|
+
return getProjectHandleAvailability({ handle: input.handle }, { client: this.#client });
|
|
592
|
+
}
|
|
593
|
+
|
|
585
594
|
public async getProjectStatus(projectId: string): Promise<ProjectStatus> {
|
|
586
595
|
return getProjectStatus({ project_id: projectId }, { client: this.#client });
|
|
587
596
|
}
|
|
@@ -190,7 +190,7 @@ export function assertOrganizationAccount(value: unknown): void {
|
|
|
190
190
|
typeof v["workos_organization_id"] !== "string" ||
|
|
191
191
|
!/^org_[A-Za-z0-9_]+$/u.test(v["workos_organization_id"]) ||
|
|
192
192
|
(v["plan"] !== "paid" && v["plan"] !== "free") ||
|
|
193
|
-
!["free", "stripe", "
|
|
193
|
+
!["free", "stripe", "granted", "manual"].includes(String(v["plan_source"])) ||
|
|
194
194
|
(v["plan"] === "free") !== (v["plan_source"] === "free")
|
|
195
195
|
)
|
|
196
196
|
throw new TypeError("Invalid account scope");
|
|
@@ -42,6 +42,7 @@ export {
|
|
|
42
42
|
getProjectContext,
|
|
43
43
|
getProjectCreditBudget,
|
|
44
44
|
getProjectExport,
|
|
45
|
+
getProjectHandleAvailability,
|
|
45
46
|
getProjectMailDomain,
|
|
46
47
|
getProjectSource,
|
|
47
48
|
getProjectSourceAutoDeploy,
|
|
@@ -331,6 +332,11 @@ export type {
|
|
|
331
332
|
GetProjectExportErrors,
|
|
332
333
|
GetProjectExportResponse,
|
|
333
334
|
GetProjectExportResponses,
|
|
335
|
+
GetProjectHandleAvailabilityData,
|
|
336
|
+
GetProjectHandleAvailabilityError,
|
|
337
|
+
GetProjectHandleAvailabilityErrors,
|
|
338
|
+
GetProjectHandleAvailabilityResponse,
|
|
339
|
+
GetProjectHandleAvailabilityResponses,
|
|
334
340
|
GetProjectMailDomainData,
|
|
335
341
|
GetProjectMailDomainError,
|
|
336
342
|
GetProjectMailDomainErrors,
|
|
@@ -467,6 +473,7 @@ export type {
|
|
|
467
473
|
ProjectExport,
|
|
468
474
|
ProjectExportArchive,
|
|
469
475
|
ProjectFilter,
|
|
476
|
+
ProjectHandleAvailability,
|
|
470
477
|
ProjectId,
|
|
471
478
|
ProjectLimit,
|
|
472
479
|
ProjectMailDomain,
|
|
@@ -100,6 +100,8 @@ import type {
|
|
|
100
100
|
GetProjectErrors,
|
|
101
101
|
GetProjectExportErrors,
|
|
102
102
|
GetProjectExportResponses,
|
|
103
|
+
GetProjectHandleAvailabilityErrors,
|
|
104
|
+
GetProjectHandleAvailabilityResponses,
|
|
103
105
|
GetProjectMailDomainErrors,
|
|
104
106
|
GetProjectMailDomainResponses,
|
|
105
107
|
GetProjectResponses,
|
|
@@ -447,7 +449,7 @@ export const getFeatureInterests = <ThrowOnError extends boolean = true>(
|
|
|
447
449
|
"data"
|
|
448
450
|
>({
|
|
449
451
|
responseStyle: "data",
|
|
450
|
-
url: "/v1/
|
|
452
|
+
url: "/v1/site/feature-interests",
|
|
451
453
|
...options,
|
|
452
454
|
...params,
|
|
453
455
|
});
|
|
@@ -492,7 +494,7 @@ export const registerFeatureInterest = <ThrowOnError extends boolean = true>(
|
|
|
492
494
|
"data"
|
|
493
495
|
>({
|
|
494
496
|
responseStyle: "data",
|
|
495
|
-
url: "/v1/
|
|
497
|
+
url: "/v1/site/feature-interests",
|
|
496
498
|
...options,
|
|
497
499
|
...params,
|
|
498
500
|
headers: {
|
|
@@ -521,7 +523,7 @@ export const getPublicDeploymentStats = <ThrowOnError extends boolean = true>(
|
|
|
521
523
|
"data"
|
|
522
524
|
>({
|
|
523
525
|
responseStyle: "data",
|
|
524
|
-
url: "/v1/
|
|
526
|
+
url: "/v1/site/stats",
|
|
525
527
|
...options,
|
|
526
528
|
});
|
|
527
529
|
|
|
@@ -1682,6 +1684,48 @@ export const getProjectStatus = <ThrowOnError extends boolean = true>(
|
|
|
1682
1684
|
});
|
|
1683
1685
|
};
|
|
1684
1686
|
|
|
1687
|
+
/**
|
|
1688
|
+
* Check whether a project handle is free
|
|
1689
|
+
*
|
|
1690
|
+
* Reports whether a handle can be used for a project and why not when it cannot, with free alternatives an agent can offer. A handle is one to five lowercase words of letters and digits separated by single hyphens, three to fifty-nine characters, and never one of the reserved words. Availability is answered across all projects without revealing which organization holds a taken handle.
|
|
1691
|
+
*/
|
|
1692
|
+
export const getProjectHandleAvailability = <ThrowOnError extends boolean = true>(
|
|
1693
|
+
parameters: {
|
|
1694
|
+
"X-Request-Id"?: string;
|
|
1695
|
+
handle: string;
|
|
1696
|
+
},
|
|
1697
|
+
options?: Options<never, ThrowOnError>,
|
|
1698
|
+
): RequestResult<
|
|
1699
|
+
GetProjectHandleAvailabilityResponses,
|
|
1700
|
+
GetProjectHandleAvailabilityErrors,
|
|
1701
|
+
ThrowOnError,
|
|
1702
|
+
"data"
|
|
1703
|
+
> => {
|
|
1704
|
+
const params = buildClientParams(
|
|
1705
|
+
[parameters],
|
|
1706
|
+
[
|
|
1707
|
+
{
|
|
1708
|
+
args: [
|
|
1709
|
+
{ in: "headers", key: "X-Request-Id" },
|
|
1710
|
+
{ in: "path", key: "handle" },
|
|
1711
|
+
],
|
|
1712
|
+
},
|
|
1713
|
+
],
|
|
1714
|
+
);
|
|
1715
|
+
return (options?.client ?? client).get<
|
|
1716
|
+
GetProjectHandleAvailabilityResponses,
|
|
1717
|
+
GetProjectHandleAvailabilityErrors,
|
|
1718
|
+
ThrowOnError,
|
|
1719
|
+
"data"
|
|
1720
|
+
>({
|
|
1721
|
+
responseStyle: "data",
|
|
1722
|
+
security: [{ scheme: "bearer", type: "http" }],
|
|
1723
|
+
url: "/v1/project-handles/{handle}",
|
|
1724
|
+
...options,
|
|
1725
|
+
...params,
|
|
1726
|
+
});
|
|
1727
|
+
};
|
|
1728
|
+
|
|
1685
1729
|
/**
|
|
1686
1730
|
* Create a single-use dev access ticket
|
|
1687
1731
|
*
|
|
@@ -807,7 +807,7 @@ export type OrganizationAccount = {
|
|
|
807
807
|
name: string;
|
|
808
808
|
workos_organization_id: string;
|
|
809
809
|
plan: "free" | "paid";
|
|
810
|
-
plan_source: "free" | "stripe" | "
|
|
810
|
+
plan_source: "free" | "stripe" | "granted" | "manual";
|
|
811
811
|
paid_until: string | null;
|
|
812
812
|
available_micros: CreditMicros;
|
|
813
813
|
monthly_micros: CreditMicros;
|
|
@@ -845,6 +845,25 @@ export type ProjectEnvironment = {
|
|
|
845
845
|
name: string;
|
|
846
846
|
};
|
|
847
847
|
|
|
848
|
+
export type ProjectHandleAvailability = {
|
|
849
|
+
/**
|
|
850
|
+
* The handle exactly as it was asked about.
|
|
851
|
+
*/
|
|
852
|
+
handle: string;
|
|
853
|
+
/**
|
|
854
|
+
* True when a project may take this handle now.
|
|
855
|
+
*/
|
|
856
|
+
available: boolean;
|
|
857
|
+
/**
|
|
858
|
+
* Why the handle cannot be used. Absent when it is available.
|
|
859
|
+
*/
|
|
860
|
+
reason?: "taken" | "too_short" | "too_long" | "invalid_shape" | "prohibited_word";
|
|
861
|
+
/**
|
|
862
|
+
* Free handles to offer instead, empty when the handle is available.
|
|
863
|
+
*/
|
|
864
|
+
alternatives: Array<string>;
|
|
865
|
+
};
|
|
866
|
+
|
|
848
867
|
export type ProjectStatus = {
|
|
849
868
|
project_id: Ulid;
|
|
850
869
|
handle: string;
|
|
@@ -1589,7 +1608,7 @@ export type GetFeatureInterestsData = {
|
|
|
1589
1608
|
};
|
|
1590
1609
|
path?: never;
|
|
1591
1610
|
query?: never;
|
|
1592
|
-
url: "/v1/
|
|
1611
|
+
url: "/v1/site/feature-interests";
|
|
1593
1612
|
};
|
|
1594
1613
|
|
|
1595
1614
|
export type GetFeatureInterestsErrors = {
|
|
@@ -1633,7 +1652,7 @@ export type RegisterFeatureInterestData = {
|
|
|
1633
1652
|
};
|
|
1634
1653
|
path?: never;
|
|
1635
1654
|
query?: never;
|
|
1636
|
-
url: "/v1/
|
|
1655
|
+
url: "/v1/site/feature-interests";
|
|
1637
1656
|
};
|
|
1638
1657
|
|
|
1639
1658
|
export type RegisterFeatureInterestErrors = {
|
|
@@ -1683,7 +1702,7 @@ export type GetPublicDeploymentStatsData = {
|
|
|
1683
1702
|
body?: never;
|
|
1684
1703
|
path?: never;
|
|
1685
1704
|
query?: never;
|
|
1686
|
-
url: "/v1/
|
|
1705
|
+
url: "/v1/site/stats";
|
|
1687
1706
|
};
|
|
1688
1707
|
|
|
1689
1708
|
export type GetPublicDeploymentStatsErrors = {
|
|
@@ -3255,6 +3274,60 @@ export type GetProjectStatusResponses = {
|
|
|
3255
3274
|
|
|
3256
3275
|
export type GetProjectStatusResponse = GetProjectStatusResponses[keyof GetProjectStatusResponses];
|
|
3257
3276
|
|
|
3277
|
+
export type GetProjectHandleAvailabilityData = {
|
|
3278
|
+
body?: never;
|
|
3279
|
+
headers?: {
|
|
3280
|
+
/**
|
|
3281
|
+
* Optional caller-provided correlation identifier.
|
|
3282
|
+
*/
|
|
3283
|
+
"X-Request-Id"?: string;
|
|
3284
|
+
};
|
|
3285
|
+
path: {
|
|
3286
|
+
/**
|
|
3287
|
+
* The handle a customer would like to use.
|
|
3288
|
+
*/
|
|
3289
|
+
handle: string;
|
|
3290
|
+
};
|
|
3291
|
+
query?: never;
|
|
3292
|
+
url: "/v1/project-handles/{handle}";
|
|
3293
|
+
};
|
|
3294
|
+
|
|
3295
|
+
export type GetProjectHandleAvailabilityErrors = {
|
|
3296
|
+
/**
|
|
3297
|
+
* The request failed.
|
|
3298
|
+
*/
|
|
3299
|
+
400: ProblemDetails;
|
|
3300
|
+
/**
|
|
3301
|
+
* The request failed.
|
|
3302
|
+
*/
|
|
3303
|
+
401: ProblemDetails;
|
|
3304
|
+
/**
|
|
3305
|
+
* The request failed.
|
|
3306
|
+
*/
|
|
3307
|
+
403: ProblemDetails;
|
|
3308
|
+
/**
|
|
3309
|
+
* The request failed.
|
|
3310
|
+
*/
|
|
3311
|
+
429: ProblemDetails;
|
|
3312
|
+
/**
|
|
3313
|
+
* The request failed.
|
|
3314
|
+
*/
|
|
3315
|
+
503: ProblemDetails;
|
|
3316
|
+
};
|
|
3317
|
+
|
|
3318
|
+
export type GetProjectHandleAvailabilityError =
|
|
3319
|
+
GetProjectHandleAvailabilityErrors[keyof GetProjectHandleAvailabilityErrors];
|
|
3320
|
+
|
|
3321
|
+
export type GetProjectHandleAvailabilityResponses = {
|
|
3322
|
+
/**
|
|
3323
|
+
* Whether the handle is usable, and alternatives when it is not.
|
|
3324
|
+
*/
|
|
3325
|
+
200: ProjectHandleAvailability;
|
|
3326
|
+
};
|
|
3327
|
+
|
|
3328
|
+
export type GetProjectHandleAvailabilityResponse =
|
|
3329
|
+
GetProjectHandleAvailabilityResponses[keyof GetProjectHandleAvailabilityResponses];
|
|
3330
|
+
|
|
3258
3331
|
export type CreateProjectDevAccessTicketData = {
|
|
3259
3332
|
body?: never;
|
|
3260
3333
|
headers?: {
|