@sendly/cli 3.35.0 → 3.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +204 -1
  2. package/dist/commands/10dlc/assignments/list.d.ts +10 -0
  3. package/dist/commands/10dlc/assignments/list.js +67 -0
  4. package/dist/commands/10dlc/brands/create.d.ts +25 -0
  5. package/dist/commands/10dlc/brands/create.js +89 -0
  6. package/dist/commands/10dlc/brands/get.d.ts +13 -0
  7. package/dist/commands/10dlc/brands/get.js +63 -0
  8. package/dist/commands/10dlc/brands/list.d.ts +10 -0
  9. package/dist/commands/10dlc/brands/list.js +63 -0
  10. package/dist/commands/10dlc/campaigns/assign.d.ts +14 -0
  11. package/dist/commands/10dlc/campaigns/assign.js +64 -0
  12. package/dist/commands/10dlc/campaigns/create.d.ts +24 -0
  13. package/dist/commands/10dlc/campaigns/create.js +118 -0
  14. package/dist/commands/10dlc/campaigns/get.d.ts +13 -0
  15. package/dist/commands/10dlc/campaigns/get.js +84 -0
  16. package/dist/commands/10dlc/campaigns/list.d.ts +10 -0
  17. package/dist/commands/10dlc/campaigns/list.js +70 -0
  18. package/dist/commands/10dlc/qualify.d.ts +14 -0
  19. package/dist/commands/10dlc/qualify.js +56 -0
  20. package/dist/commands/business-upgrade/cancel.d.ts +12 -0
  21. package/dist/commands/business-upgrade/cancel.js +47 -0
  22. package/dist/commands/business-upgrade/disposition.d.ts +13 -0
  23. package/dist/commands/business-upgrade/disposition.js +44 -0
  24. package/dist/commands/business-upgrade/preflight.d.ts +16 -0
  25. package/dist/commands/business-upgrade/preflight.js +82 -0
  26. package/dist/commands/business-upgrade/resubmit.d.ts +24 -0
  27. package/dist/commands/business-upgrade/resubmit.js +109 -0
  28. package/dist/commands/business-upgrade/start.d.ts +38 -0
  29. package/dist/commands/business-upgrade/start.js +142 -0
  30. package/dist/commands/business-upgrade/status.d.ts +11 -0
  31. package/dist/commands/business-upgrade/status.js +38 -0
  32. package/dist/commands/enterprise/verification/get.d.ts +13 -0
  33. package/dist/commands/enterprise/verification/get.js +78 -0
  34. package/dist/commands/enterprise/verification/resubmit.d.ts +41 -0
  35. package/dist/commands/enterprise/verification/resubmit.js +87 -0
  36. package/dist/commands/enterprise/verification/submit.d.ts +77 -0
  37. package/dist/commands/enterprise/verification/submit.js +212 -0
  38. package/dist/commands/keys/rotate.js +7 -12
  39. package/dist/commands/links/create.d.ts +24 -0
  40. package/dist/commands/links/create.js +71 -0
  41. package/dist/commands/links/disable.d.ts +21 -0
  42. package/dist/commands/links/disable.js +55 -0
  43. package/dist/commands/links/list.d.ts +19 -0
  44. package/dist/commands/links/list.js +85 -0
  45. package/dist/commands/numbers/buy.d.ts +31 -0
  46. package/dist/commands/numbers/buy.js +266 -0
  47. package/dist/commands/numbers/get.d.ts +20 -0
  48. package/dist/commands/numbers/get.js +52 -0
  49. package/dist/commands/numbers/list.d.ts +10 -0
  50. package/dist/commands/numbers/list.js +70 -0
  51. package/dist/commands/numbers/release.d.ts +23 -0
  52. package/dist/commands/numbers/release.js +67 -0
  53. package/dist/commands/numbers/search.d.ts +13 -0
  54. package/dist/commands/numbers/search.js +78 -0
  55. package/dist/commands/numbers/update.d.ts +25 -0
  56. package/dist/commands/numbers/update.js +70 -0
  57. package/dist/commands/sms/group.d.ts +25 -0
  58. package/dist/commands/sms/group.js +164 -0
  59. package/dist/commands/sms/upload-media.d.ts +1 -1
  60. package/dist/commands/sms/upload-media.js +4 -4
  61. package/dist/commands/templates/enhance.js +3 -3
  62. package/dist/commands/upgrade.d.ts +1 -16
  63. package/dist/commands/upgrade.js +131 -38
  64. package/dist/lib/auth.js +2 -94
  65. package/dist/lib/config.js +31 -2
  66. package/dist/lib/detect-install-path.d.ts +11 -7
  67. package/dist/lib/detect-install-path.js +25 -9
  68. package/dist/lib/keypress.d.ts +26 -0
  69. package/dist/lib/keypress.js +103 -0
  70. package/oclif.manifest.json +5005 -2698
  71. package/package.json +22 -1
@@ -0,0 +1,44 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
3
+ import { apiClient } from "../../lib/api-client.js";
4
+ import { json, success, error, info, isJsonMode } from "../../lib/output.js";
5
+ export default class BusinessUpgradeDisposition extends AuthenticatedCommand {
6
+ static description = "Choose what happens to the old toll-free number after a successful business entity upgrade — either move it to another workspace you own, or release it back to the carrier pool";
7
+ static examples = [
8
+ "<%= config.bin %> business-upgrade disposition --workspace ws_abc --disposition moved --target-workspace ws_xyz",
9
+ "<%= config.bin %> business-upgrade disposition --workspace ws_abc --disposition released",
10
+ ];
11
+ static flags = {
12
+ ...AuthenticatedCommand.baseFlags,
13
+ workspace: Flags.string({
14
+ required: true,
15
+ description: "Workspace whose upgrade was just approved",
16
+ }),
17
+ disposition: Flags.string({
18
+ required: true,
19
+ options: ["moved", "released"],
20
+ description: "What to do with the old toll-free number",
21
+ }),
22
+ "target-workspace": Flags.string({
23
+ description: "Required when disposition='moved' — workspace to attach old number to",
24
+ }),
25
+ };
26
+ async run() {
27
+ const { flags } = await this.parse(BusinessUpgradeDisposition);
28
+ if (flags.disposition === "moved" && !flags["target-workspace"]) {
29
+ error("--target-workspace is required when --disposition=moved.");
30
+ this.exit(1);
31
+ }
32
+ const result = await apiClient.post(`/api/v1/workspaces/${encodeURIComponent(flags.workspace)}/upgrade/disposition`, {
33
+ disposition: flags.disposition,
34
+ targetOrgId: flags["target-workspace"],
35
+ });
36
+ if (isJsonMode()) {
37
+ json(result);
38
+ return;
39
+ }
40
+ success(result.message);
41
+ info(`Superseded verification: ${result.supersededVerificationId}`);
42
+ }
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvYnVzaW5lc3MtdXBncmFkZS9kaXNwb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdFLE1BQU0sQ0FBQyxPQUFPLE9BQU8sMEJBQTJCLFNBQVEsb0JBQW9CO0lBQzFFLE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLGtMQUFrTCxDQUFDO0lBRXJMLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsaUhBQWlIO1FBQ2pILDBGQUEwRjtLQUMzRixDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFBRSwyQ0FBMkM7U0FDekQsQ0FBQztRQUNGLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztZQUM5QixXQUFXLEVBQUUsMENBQTBDO1NBQ3hELENBQUM7UUFDRixrQkFBa0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQy9CLFdBQVcsRUFBRSx1RUFBdUU7U0FDckYsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUMvRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUNoRSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FNakMsc0JBQXNCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQy9FO1lBQ0UsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUM7U0FDdkMsQ0FDRixDQUFDO1FBQ0YsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNiLE9BQU87UUFDVCxDQUFDO1FBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsNEJBQTRCLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IGpzb24sIHN1Y2Nlc3MsIGVycm9yLCBpbmZvLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVzaW5lc3NVcGdyYWRlRGlzcG9zaXRpb24gZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJDaG9vc2Ugd2hhdCBoYXBwZW5zIHRvIHRoZSBvbGQgdG9sbC1mcmVlIG51bWJlciBhZnRlciBhIHN1Y2Nlc3NmdWwgYnVzaW5lc3MgZW50aXR5IHVwZ3JhZGUg4oCUIGVpdGhlciBtb3ZlIGl0IHRvIGFub3RoZXIgd29ya3NwYWNlIHlvdSBvd24sIG9yIHJlbGVhc2UgaXQgYmFjayB0byB0aGUgY2FycmllciBwb29sXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gYnVzaW5lc3MtdXBncmFkZSBkaXNwb3NpdGlvbiAtLXdvcmtzcGFjZSB3c19hYmMgLS1kaXNwb3NpdGlvbiBtb3ZlZCAtLXRhcmdldC13b3Jrc3BhY2Ugd3NfeHl6XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBidXNpbmVzcy11cGdyYWRlIGRpc3Bvc2l0aW9uIC0td29ya3NwYWNlIHdzX2FiYyAtLWRpc3Bvc2l0aW9uIHJlbGVhc2VkXCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICB3b3Jrc3BhY2U6IEZsYWdzLnN0cmluZyh7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIldvcmtzcGFjZSB3aG9zZSB1cGdyYWRlIHdhcyBqdXN0IGFwcHJvdmVkXCIsXG4gICAgfSksXG4gICAgZGlzcG9zaXRpb246IEZsYWdzLnN0cmluZyh7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIG9wdGlvbnM6IFtcIm1vdmVkXCIsIFwicmVsZWFzZWRcIl0sXG4gICAgICBkZXNjcmlwdGlvbjogXCJXaGF0IHRvIGRvIHdpdGggdGhlIG9sZCB0b2xsLWZyZWUgbnVtYmVyXCIsXG4gICAgfSksXG4gICAgXCJ0YXJnZXQtd29ya3NwYWNlXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXF1aXJlZCB3aGVuIGRpc3Bvc2l0aW9uPSdtb3ZlZCcg4oCUIHdvcmtzcGFjZSB0byBhdHRhY2ggb2xkIG51bWJlciB0b1wiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEJ1c2luZXNzVXBncmFkZURpc3Bvc2l0aW9uKTtcbiAgICBpZiAoZmxhZ3MuZGlzcG9zaXRpb24gPT09IFwibW92ZWRcIiAmJiAhZmxhZ3NbXCJ0YXJnZXQtd29ya3NwYWNlXCJdKSB7XG4gICAgICBlcnJvcihcIi0tdGFyZ2V0LXdvcmtzcGFjZSBpcyByZXF1aXJlZCB3aGVuIC0tZGlzcG9zaXRpb249bW92ZWQuXCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGlDbGllbnQucG9zdDx7XG4gICAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgICAgZGlzcG9zaXRpb246IHN0cmluZztcbiAgICAgIHN1cGVyc2VkZWRWZXJpZmljYXRpb25JZDogc3RyaW5nO1xuICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIH0+KFxuICAgICAgYC9hcGkvdjEvd29ya3NwYWNlcy8ke2VuY29kZVVSSUNvbXBvbmVudChmbGFncy53b3Jrc3BhY2UpfS91cGdyYWRlL2Rpc3Bvc2l0aW9uYCxcbiAgICAgIHtcbiAgICAgICAgZGlzcG9zaXRpb246IGZsYWdzLmRpc3Bvc2l0aW9uLFxuICAgICAgICB0YXJnZXRPcmdJZDogZmxhZ3NbXCJ0YXJnZXQtd29ya3NwYWNlXCJdLFxuICAgICAgfSxcbiAgICApO1xuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzdWx0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3VjY2VzcyhyZXN1bHQubWVzc2FnZSk7XG4gICAgaW5mbyhgU3VwZXJzZWRlZCB2ZXJpZmljYXRpb246ICR7cmVzdWx0LnN1cGVyc2VkZWRWZXJpZmljYXRpb25JZH1gKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class BusinessUpgradePreflight extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ "business-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
+ brn: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
+ "brn-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
+ "brn-country": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
+ "entity-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ candidate: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
13
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,82 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { readFileSync } from "node:fs";
3
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
4
+ import { apiClient } from "../../lib/api-client.js";
5
+ import { json, info, error, isJsonMode, colors } from "../../lib/output.js";
6
+ export default class BusinessUpgradePreflight extends AuthenticatedCommand {
7
+ static description = "Dry-run a business entity upgrade and surface issues + auto-fix suggestions before submitting";
8
+ static examples = [
9
+ '<%= config.bin %> business-upgrade preflight --business-name "Acme LLC" --brn "12-3456789" --brn-type EIN --entity-type PRIVATE_PROFIT',
10
+ "<%= config.bin %> business-upgrade preflight --candidate ./candidate.json --json",
11
+ ];
12
+ static flags = {
13
+ ...AuthenticatedCommand.baseFlags,
14
+ "business-name": Flags.string({
15
+ description: "Legal business name of the new entity",
16
+ }),
17
+ brn: Flags.string({
18
+ description: "Business registration number (EIN/SSN/etc.)",
19
+ }),
20
+ "brn-type": Flags.string({
21
+ description: "Registration type (EIN, SSN, DUNS, CRA, VAT, LEI, OTHER)",
22
+ }),
23
+ "brn-country": Flags.string({
24
+ description: "Registration issuing country (ISO 3166-1 alpha-2)",
25
+ default: "US",
26
+ }),
27
+ "entity-type": Flags.string({
28
+ description: "Entity type (SOLE_PROPRIETOR, PRIVATE_PROFIT, PUBLIC_PROFIT, NON_PROFIT, GOVERNMENT)",
29
+ default: "PRIVATE_PROFIT",
30
+ }),
31
+ candidate: Flags.string({
32
+ description: "Path to a JSON file with the full candidate payload",
33
+ }),
34
+ };
35
+ async run() {
36
+ const { flags } = await this.parse(BusinessUpgradePreflight);
37
+ let candidate = {};
38
+ if (flags.candidate) {
39
+ candidate = JSON.parse(readFileSync(flags.candidate, "utf8"));
40
+ }
41
+ else {
42
+ candidate = {
43
+ businessName: flags["business-name"],
44
+ brn: flags.brn,
45
+ brnType: flags["brn-type"],
46
+ brnCountry: flags["brn-country"],
47
+ entityType: flags["entity-type"],
48
+ };
49
+ }
50
+ if (!candidate.businessName || !candidate.brn) {
51
+ error("Provide --business-name and --brn (or pass --candidate <file>).");
52
+ this.exit(1);
53
+ }
54
+ const report = await apiClient.post("/api/v1/verification/preflight", candidate);
55
+ if (isJsonMode()) {
56
+ json(report);
57
+ return;
58
+ }
59
+ const verdictColor = report.verdict === "blocked"
60
+ ? colors.error
61
+ : report.verdict === "warnings"
62
+ ? colors.warning
63
+ : colors.success;
64
+ info(`Verdict: ${verdictColor(report.verdict)} (${report.country})`);
65
+ if (report.issues.length === 0) {
66
+ info(colors.success("No issues. Ready to submit."));
67
+ return;
68
+ }
69
+ info("");
70
+ for (const issue of report.issues) {
71
+ const sevColor = issue.severity === "blocker"
72
+ ? colors.error
73
+ : issue.severity === "warning"
74
+ ? colors.warning
75
+ : colors.dim;
76
+ info(`${sevColor(issue.severity.toUpperCase())} ${issue.field} — ${issue.message}`);
77
+ if (issue.suggestion)
78
+ info(` ${colors.dim("→ " + issue.suggestion)}`);
79
+ }
80
+ }
81
+ }
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmxpZ2h0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2J1c2luZXNzLXVwZ3JhZGUvcHJlZmxpZ2h0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQWlCNUUsTUFBTSxDQUFDLE9BQU8sT0FBTyx3QkFBeUIsU0FBUSxvQkFBb0I7SUFDeEUsTUFBTSxDQUFDLFdBQVcsR0FDaEIsK0ZBQStGLENBQUM7SUFFbEcsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQix3SUFBd0k7UUFDeEksa0ZBQWtGO0tBQ25GLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2pDLGVBQWUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVCLFdBQVcsRUFBRSx1Q0FBdUM7U0FDckQsQ0FBQztRQUNGLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2hCLFdBQVcsRUFBRSw2Q0FBNkM7U0FDM0QsQ0FBQztRQUNGLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLFdBQVcsRUFBRSwwREFBMEQ7U0FDeEUsQ0FBQztRQUNGLGFBQWEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzFCLFdBQVcsRUFBRSxtREFBbUQ7WUFDaEUsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO1FBQ0YsYUFBYSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDMUIsV0FBVyxFQUNULHNGQUFzRjtZQUN4RixPQUFPLEVBQUUsZ0JBQWdCO1NBQzFCLENBQUM7UUFDRixTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixXQUFXLEVBQUUscURBQXFEO1NBQ25FLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFN0QsSUFBSSxTQUFTLEdBQTRCLEVBQUUsQ0FBQztRQUM1QyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHO2dCQUNWLFlBQVksRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDO2dCQUNwQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7Z0JBQ2QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQzFCLFVBQVUsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDO2dCQUNoQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQzthQUNqQyxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzlDLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUNqQyxnQ0FBZ0MsRUFDaEMsU0FBUyxDQUNWLENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2IsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFlBQVksR0FDaEIsTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTO1lBQzFCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSztZQUNkLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLFVBQVU7Z0JBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNyRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztZQUNwRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNULEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sUUFBUSxHQUNaLEtBQUssQ0FBQyxRQUFRLEtBQUssU0FBUztnQkFDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUNkLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVM7b0JBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTztvQkFDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDbkIsSUFBSSxDQUNGLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FDOUUsQ0FBQztZQUNGLElBQUksS0FBSyxDQUFDLFVBQVU7Z0JBQUUsSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBqc29uLCBpbmZvLCBlcnJvciwgaXNKc29uTW9kZSwgY29sb3JzIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFByZWZsaWdodElzc3VlIHtcbiAgc2V2ZXJpdHk6IFwiYmxvY2tlclwiIHwgXCJ3YXJuaW5nXCIgfCBcImluZm9cIjtcbiAgZmllbGQ6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHN1Z2dlc3Rpb24/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQcmVmbGlnaHRSZXBvcnQge1xuICB2ZXJkaWN0OiBcInJlYWR5XCIgfCBcIndhcm5pbmdzXCIgfCBcImJsb2NrZWRcIjtcbiAgY291bnRyeTogc3RyaW5nO1xuICBpc3N1ZXM6IFByZWZsaWdodElzc3VlW107XG4gIHByb3Bvc2VkRml4ZXM6IEFycmF5PHsgZmllbGQ6IHN0cmluZzsgcHJvcG9zZWQ6IHVua25vd247IHJlYXNvbjogc3RyaW5nIH0+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdXNpbmVzc1VwZ3JhZGVQcmVmbGlnaHQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJEcnktcnVuIGEgYnVzaW5lc3MgZW50aXR5IHVwZ3JhZGUgYW5kIHN1cmZhY2UgaXNzdWVzICsgYXV0by1maXggc3VnZ2VzdGlvbnMgYmVmb3JlIHN1Ym1pdHRpbmdcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IGJ1c2luZXNzLXVwZ3JhZGUgcHJlZmxpZ2h0IC0tYnVzaW5lc3MtbmFtZSBcIkFjbWUgTExDXCIgLS1icm4gXCIxMi0zNDU2Nzg5XCIgLS1icm4tdHlwZSBFSU4gLS1lbnRpdHktdHlwZSBQUklWQVRFX1BST0ZJVCcsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBidXNpbmVzcy11cGdyYWRlIHByZWZsaWdodCAtLWNhbmRpZGF0ZSAuL2NhbmRpZGF0ZS5qc29uIC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgXCJidXNpbmVzcy1uYW1lXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJMZWdhbCBidXNpbmVzcyBuYW1lIG9mIHRoZSBuZXcgZW50aXR5XCIsXG4gICAgfSksXG4gICAgYnJuOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQnVzaW5lc3MgcmVnaXN0cmF0aW9uIG51bWJlciAoRUlOL1NTTi9ldGMuKVwiLFxuICAgIH0pLFxuICAgIFwiYnJuLXR5cGVcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJlZ2lzdHJhdGlvbiB0eXBlIChFSU4sIFNTTiwgRFVOUywgQ1JBLCBWQVQsIExFSSwgT1RIRVIpXCIsXG4gICAgfSksXG4gICAgXCJicm4tY291bnRyeVwiOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiUmVnaXN0cmF0aW9uIGlzc3VpbmcgY291bnRyeSAoSVNPIDMxNjYtMSBhbHBoYS0yKVwiLFxuICAgICAgZGVmYXVsdDogXCJVU1wiLFxuICAgIH0pLFxuICAgIFwiZW50aXR5LXR5cGVcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkVudGl0eSB0eXBlIChTT0xFX1BST1BSSUVUT1IsIFBSSVZBVEVfUFJPRklULCBQVUJMSUNfUFJPRklULCBOT05fUFJPRklULCBHT1ZFUk5NRU5UKVwiLFxuICAgICAgZGVmYXVsdDogXCJQUklWQVRFX1BST0ZJVFwiLFxuICAgIH0pLFxuICAgIGNhbmRpZGF0ZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlBhdGggdG8gYSBKU09OIGZpbGUgd2l0aCB0aGUgZnVsbCBjYW5kaWRhdGUgcGF5bG9hZFwiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEJ1c2luZXNzVXBncmFkZVByZWZsaWdodCk7XG5cbiAgICBsZXQgY2FuZGlkYXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgIGlmIChmbGFncy5jYW5kaWRhdGUpIHtcbiAgICAgIGNhbmRpZGF0ZSA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKGZsYWdzLmNhbmRpZGF0ZSwgXCJ1dGY4XCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FuZGlkYXRlID0ge1xuICAgICAgICBidXNpbmVzc05hbWU6IGZsYWdzW1wiYnVzaW5lc3MtbmFtZVwiXSxcbiAgICAgICAgYnJuOiBmbGFncy5icm4sXG4gICAgICAgIGJyblR5cGU6IGZsYWdzW1wiYnJuLXR5cGVcIl0sXG4gICAgICAgIGJybkNvdW50cnk6IGZsYWdzW1wiYnJuLWNvdW50cnlcIl0sXG4gICAgICAgIGVudGl0eVR5cGU6IGZsYWdzW1wiZW50aXR5LXR5cGVcIl0sXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoIWNhbmRpZGF0ZS5idXNpbmVzc05hbWUgfHwgIWNhbmRpZGF0ZS5icm4pIHtcbiAgICAgIGVycm9yKFwiUHJvdmlkZSAtLWJ1c2luZXNzLW5hbWUgYW5kIC0tYnJuIChvciBwYXNzIC0tY2FuZGlkYXRlIDxmaWxlPikuXCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcG9ydCA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PFByZWZsaWdodFJlcG9ydD4oXG4gICAgICBcIi9hcGkvdjEvdmVyaWZpY2F0aW9uL3ByZWZsaWdodFwiLFxuICAgICAgY2FuZGlkYXRlLFxuICAgICk7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKHJlcG9ydCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmVyZGljdENvbG9yID1cbiAgICAgIHJlcG9ydC52ZXJkaWN0ID09PSBcImJsb2NrZWRcIlxuICAgICAgICA/IGNvbG9ycy5lcnJvclxuICAgICAgICA6IHJlcG9ydC52ZXJkaWN0ID09PSBcIndhcm5pbmdzXCJcbiAgICAgICAgICA/IGNvbG9ycy53YXJuaW5nXG4gICAgICAgICAgOiBjb2xvcnMuc3VjY2VzcztcbiAgICBpbmZvKGBWZXJkaWN0OiAke3ZlcmRpY3RDb2xvcihyZXBvcnQudmVyZGljdCl9ICgke3JlcG9ydC5jb3VudHJ5fSlgKTtcbiAgICBpZiAocmVwb3J0Lmlzc3Vlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGluZm8oY29sb3JzLnN1Y2Nlc3MoXCJObyBpc3N1ZXMuIFJlYWR5IHRvIHN1Ym1pdC5cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbmZvKFwiXCIpO1xuICAgIGZvciAoY29uc3QgaXNzdWUgb2YgcmVwb3J0Lmlzc3Vlcykge1xuICAgICAgY29uc3Qgc2V2Q29sb3IgPVxuICAgICAgICBpc3N1ZS5zZXZlcml0eSA9PT0gXCJibG9ja2VyXCJcbiAgICAgICAgICA/IGNvbG9ycy5lcnJvclxuICAgICAgICAgIDogaXNzdWUuc2V2ZXJpdHkgPT09IFwid2FybmluZ1wiXG4gICAgICAgICAgICA/IGNvbG9ycy53YXJuaW5nXG4gICAgICAgICAgICA6IGNvbG9ycy5kaW07XG4gICAgICBpbmZvKFxuICAgICAgICBgJHtzZXZDb2xvcihpc3N1ZS5zZXZlcml0eS50b1VwcGVyQ2FzZSgpKX0gJHtpc3N1ZS5maWVsZH0g4oCUICR7aXNzdWUubWVzc2FnZX1gLFxuICAgICAgKTtcbiAgICAgIGlmIChpc3N1ZS5zdWdnZXN0aW9uKSBpbmZvKGAgICR7Y29sb3JzLmRpbShcIuKGkiBcIiArIGlzc3VlLnN1Z2dlc3Rpb24pfWApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class BusinessUpgradeResubmit extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ workspace: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
+ "business-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
+ brn: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
+ "brn-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
+ "brn-country": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ "entity-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ "monthly-volume": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
13
+ "use-case": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
14
+ "use-case-summary": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
15
+ "sample-messages": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
16
+ "opt-in-workflow": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
17
+ "privacy-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
18
+ "terms-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
19
+ "ein-doc": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
20
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
21
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
22
+ };
23
+ run(): Promise<void>;
24
+ }
@@ -0,0 +1,109 @@
1
+ import { Flags } from "@oclif/core";
2
+ import * as fs from "node:fs";
3
+ import * as path from "node:path";
4
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
5
+ import { getAuthToken, getConfigValue, getEffectiveValue, } from "../../lib/config.js";
6
+ import { ApiError, AuthenticationError } from "../../lib/api-client.js";
7
+ import { json, success, info, isJsonMode } from "../../lib/output.js";
8
+ const TEXT_FIELDS = {
9
+ "business-name": "businessName",
10
+ brn: "brn",
11
+ "brn-type": "brnType",
12
+ "brn-country": "brnCountry",
13
+ "entity-type": "entityType",
14
+ "monthly-volume": "monthlyVolume",
15
+ "use-case": "useCase",
16
+ "use-case-summary": "useCaseSummary",
17
+ "sample-messages": "sampleMessages",
18
+ "opt-in-workflow": "optInWorkflow",
19
+ "privacy-url": "privacyUrl",
20
+ "terms-url": "termsUrl",
21
+ };
22
+ export default class BusinessUpgradeResubmit extends AuthenticatedCommand {
23
+ static description = "Resubmit a previously rejected (or waiting-for-customer) business entity upgrade with corrected fields and optionally a new EIN document";
24
+ static examples = [
25
+ '<%= config.bin %> business-upgrade resubmit --workspace ws_abc --business-name "Acme Holdings LLC" --ein-doc ./CP-575-v2.pdf',
26
+ ];
27
+ static flags = {
28
+ ...AuthenticatedCommand.baseFlags,
29
+ workspace: Flags.string({ required: true }),
30
+ "business-name": Flags.string(),
31
+ brn: Flags.string(),
32
+ "brn-type": Flags.string(),
33
+ "brn-country": Flags.string(),
34
+ "entity-type": Flags.string(),
35
+ "monthly-volume": Flags.string(),
36
+ "use-case": Flags.string(),
37
+ "use-case-summary": Flags.string(),
38
+ "sample-messages": Flags.string(),
39
+ "opt-in-workflow": Flags.string(),
40
+ "privacy-url": Flags.string(),
41
+ "terms-url": Flags.string(),
42
+ "ein-doc": Flags.string(),
43
+ };
44
+ async run() {
45
+ const { flags } = await this.parse(BusinessUpgradeResubmit);
46
+ const boundary = `----FormBoundary${Date.now()}${Math.random()
47
+ .toString(36)
48
+ .substring(2)}`;
49
+ const parts = [];
50
+ const appendField = (name, value) => {
51
+ parts.push(Buffer.from(`--${boundary}\r\n` +
52
+ `Content-Disposition: form-data; name="${name}"\r\n\r\n` +
53
+ value +
54
+ "\r\n"));
55
+ };
56
+ for (const [flagKey, wireKey] of Object.entries(TEXT_FIELDS)) {
57
+ const v = flags[flagKey];
58
+ if (typeof v === "string" && v.length > 0)
59
+ appendField(wireKey, v);
60
+ }
61
+ if (flags["ein-doc"]) {
62
+ const filePath = flags["ein-doc"];
63
+ if (!fs.existsSync(filePath)) {
64
+ this.error(`File not found: ${filePath}`);
65
+ }
66
+ const filename = path.basename(filePath);
67
+ const fileBuffer = fs.readFileSync(filePath);
68
+ parts.push(Buffer.from(`--${boundary}\r\n` +
69
+ `Content-Disposition: form-data; name="einDoc"; filename="${filename}"\r\n` +
70
+ `Content-Type: application/pdf\r\n\r\n`));
71
+ parts.push(fileBuffer);
72
+ parts.push(Buffer.from("\r\n"));
73
+ }
74
+ parts.push(Buffer.from(`--${boundary}--\r\n`));
75
+ const body = Buffer.concat(parts);
76
+ const token = getAuthToken();
77
+ if (!token)
78
+ throw new AuthenticationError();
79
+ const baseUrl = getConfigValue("baseUrl") || "https://sendly.live";
80
+ const timeout = getEffectiveValue("timeout");
81
+ const url = `${baseUrl}/api/v1/workspaces/${encodeURIComponent(flags.workspace)}/upgrade/resubmit`;
82
+ const controller = new AbortController();
83
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
84
+ const resp = await fetch(url, {
85
+ method: "POST",
86
+ headers: {
87
+ "Content-Type": `multipart/form-data; boundary=${boundary}`,
88
+ Accept: "application/json",
89
+ Authorization: `Bearer ${token}`,
90
+ },
91
+ body,
92
+ signal: controller.signal,
93
+ });
94
+ clearTimeout(timeoutId);
95
+ const data = (await resp
96
+ .json()
97
+ .catch(() => ({})));
98
+ if (!resp.ok) {
99
+ throw new ApiError(data.error || "resubmit_error", data.message || `HTTP ${resp.status}`, resp.status);
100
+ }
101
+ if (isJsonMode()) {
102
+ json(data);
103
+ return;
104
+ }
105
+ success("Resubmitted to carrier.");
106
+ info(data.message);
107
+ }
108
+ }
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWJtaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvYnVzaW5lc3MtdXBncmFkZS9yZXN1Ym1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLGlCQUFpQixHQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsTUFBTSxXQUFXLEdBQTJCO0lBQzFDLGVBQWUsRUFBRSxjQUFjO0lBQy9CLEdBQUcsRUFBRSxLQUFLO0lBQ1YsVUFBVSxFQUFFLFNBQVM7SUFDckIsYUFBYSxFQUFFLFlBQVk7SUFDM0IsYUFBYSxFQUFFLFlBQVk7SUFDM0IsZ0JBQWdCLEVBQUUsZUFBZTtJQUNqQyxVQUFVLEVBQUUsU0FBUztJQUNyQixrQkFBa0IsRUFBRSxnQkFBZ0I7SUFDcEMsaUJBQWlCLEVBQUUsZ0JBQWdCO0lBQ25DLGlCQUFpQixFQUFFLGVBQWU7SUFDbEMsYUFBYSxFQUFFLFlBQVk7SUFDM0IsV0FBVyxFQUFFLFVBQVU7Q0FDeEIsQ0FBQztBQVNGLE1BQU0sQ0FBQyxPQUFPLE9BQU8sdUJBQXdCLFNBQVEsb0JBQW9CO0lBQ3ZFLE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLDBJQUEwSSxDQUFDO0lBRTdJLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIs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Q3JCLElBQUksRUFBRTthQUNOLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQTRCLENBQUM7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxRQUFRLENBQ2hCLElBQUksQ0FBQyxLQUFLLElBQUksZ0JBQWdCLEVBQzlCLElBQUksQ0FBQyxPQUFPLElBQUksUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ3JDLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7UUFDRCxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHtcbiAgZ2V0QXV0aFRva2VuLFxuICBnZXRDb25maWdWYWx1ZSxcbiAgZ2V0RWZmZWN0aXZlVmFsdWUsXG59IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5pbXBvcnQgeyBBcGlFcnJvciwgQXV0aGVudGljYXRpb25FcnJvciB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgc3VjY2VzcywgaW5mbywgaXNKc29uTW9kZSB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmNvbnN0IFRFWFRfRklFTERTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcImJ1c2luZXNzLW5hbWVcIjogXCJidXNpbmVzc05hbWVcIixcbiAgYnJuOiBcImJyblwiLFxuICBcImJybi10eXBlXCI6IFwiYnJuVHlwZVwiLFxuICBcImJybi1jb3VudHJ5XCI6IFwiYnJuQ291bnRyeVwiLFxuICBcImVudGl0eS10eXBlXCI6IFwiZW50aXR5VHlwZVwiLFxuICBcIm1vbnRobHktdm9sdW1lXCI6IFwibW9udGhseVZvbHVtZVwiLFxuICBcInVzZS1jYXNlXCI6IFwidXNlQ2FzZVwiLFxuICBcInVzZS1jYXNlLXN1bW1hcnlcIjogXCJ1c2VDYXNlU3VtbWFyeVwiLFxuICBcInNhbXBsZS1tZXNzYWdlc1wiOiBcInNhbXBsZU1lc3NhZ2VzXCIsXG4gIFwib3B0LWluLXdvcmtmbG93XCI6IFwib3B0SW5Xb3JrZmxvd1wiLFxuICBcInByaXZhY3ktdXJsXCI6IFwicHJpdmFjeVVybFwiLFxuICBcInRlcm1zLXVybFwiOiBcInRlcm1zVXJsXCIsXG59O1xuXG5pbnRlcmZhY2UgUmVzdWJtaXRVcGdyYWRlUmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBwZW5kaW5nVmVyaWZpY2F0aW9uSWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBlcnJvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVzaW5lc3NVcGdyYWRlUmVzdWJtaXQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJSZXN1Ym1pdCBhIHByZXZpb3VzbHkgcmVqZWN0ZWQgKG9yIHdhaXRpbmctZm9yLWN1c3RvbWVyKSBidXNpbmVzcyBlbnRpdHkgdXBncmFkZSB3aXRoIGNvcnJlY3RlZCBmaWVsZHMgYW5kIG9wdGlvbmFsbHkgYSBuZXcgRUlOIGRvY3VtZW50XCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBidXNpbmVzcy11cGdyYWRlIHJlc3VibWl0IC0td29ya3NwYWNlIHdzX2FiYyAtLWJ1c2luZXNzLW5hbWUgXCJBY21lIEhvbGRpbmdzIExMQ1wiIC0tZWluLWRvYyAuL0NQLTU3NS12Mi5wZGYnLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgd29ya3NwYWNlOiBGbGFncy5zdHJpbmcoeyByZXF1aXJlZDogdHJ1ZSB9KSxcbiAgICBcImJ1c2luZXNzLW5hbWVcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgYnJuOiBGbGFncy5zdHJpbmcoKSxcbiAgICBcImJybi10eXBlXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiYnJuLWNvdW50cnlcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJlbnRpdHktdHlwZVwiOiBGbGFncy5zdHJpbmcoKSxcbiAgICBcIm1vbnRobHktdm9sdW1lXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwidXNlLWNhc2VcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJ1c2UtY2FzZS1zdW1tYXJ5XCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwic2FtcGxlLW1lc3NhZ2VzXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwib3B0LWluLXdvcmtmbG93XCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwicHJpdmFjeS11cmxcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJ0ZXJtcy11cmxcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJlaW4tZG9jXCI6IEZsYWdzLnN0cmluZygpLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEJ1c2luZXNzVXBncmFkZVJlc3VibWl0KTtcblxuICAgIGNvbnN0IGJvdW5kYXJ5ID0gYC0tLS1Gb3JtQm91bmRhcnkke0RhdGUubm93KCl9JHtNYXRoLnJhbmRvbSgpXG4gICAgICAudG9TdHJpbmcoMzYpXG4gICAgICAuc3Vic3RyaW5nKDIpfWA7XG4gICAgY29uc3QgcGFydHM6IEJ1ZmZlcltdID0gW107XG4gICAgY29uc3QgYXBwZW5kRmllbGQgPSAobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICBCdWZmZXIuZnJvbShcbiAgICAgICAgICBgLS0ke2JvdW5kYXJ5fVxcclxcbmAgK1xuICAgICAgICAgICAgYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cIiR7bmFtZX1cIlxcclxcblxcclxcbmAgK1xuICAgICAgICAgICAgdmFsdWUgK1xuICAgICAgICAgICAgXCJcXHJcXG5cIixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgW2ZsYWdLZXksIHdpcmVLZXldIG9mIE9iamVjdC5lbnRyaWVzKFRFWFRfRklFTERTKSkge1xuICAgICAgY29uc3QgdiA9IGZsYWdzW2ZsYWdLZXkgYXMga2V5b2YgdHlwZW9mIGZsYWdzXTtcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiAmJiB2Lmxlbmd0aCA+IDApIGFwcGVuZEZpZWxkKHdpcmVLZXksIHYpO1xuICAgIH1cblxuICAgIGlmIChmbGFnc1tcImVpbi1kb2NcIl0pIHtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gZmxhZ3NbXCJlaW4tZG9jXCJdO1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgICB0aGlzLmVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtmaWxlUGF0aH1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XG4gICAgICBjb25zdCBmaWxlQnVmZmVyID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoKTtcbiAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgIEJ1ZmZlci5mcm9tKFxuICAgICAgICAgIGAtLSR7Ym91bmRhcnl9XFxyXFxuYCArXG4gICAgICAgICAgICBgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwiZWluRG9jXCI7IGZpbGVuYW1lPVwiJHtmaWxlbmFtZX1cIlxcclxcbmAgK1xuICAgICAgICAgICAgYENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vcGRmXFxyXFxuXFxyXFxuYCxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICBwYXJ0cy5wdXNoKGZpbGVCdWZmZXIpO1xuICAgICAgcGFydHMucHVzaChCdWZmZXIuZnJvbShcIlxcclxcblwiKSk7XG4gICAgfVxuICAgIHBhcnRzLnB1c2goQnVmZmVyLmZyb20oYC0tJHtib3VuZGFyeX0tLVxcclxcbmApKTtcblxuICAgIGNvbnN0IGJvZHkgPSBCdWZmZXIuY29uY2F0KHBhcnRzKTtcbiAgICBjb25zdCB0b2tlbiA9IGdldEF1dGhUb2tlbigpO1xuICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKCk7XG5cbiAgICBjb25zdCBiYXNlVXJsID0gZ2V0Q29uZmlnVmFsdWUoXCJiYXNlVXJsXCIpIHx8IFwiaHR0cHM6Ly9zZW5kbHkubGl2ZVwiO1xuICAgIGNvbnN0IHRpbWVvdXQgPSBnZXRFZmZlY3RpdmVWYWx1ZShcInRpbWVvdXRcIik7XG4gICAgY29uc3QgdXJsID0gYCR7YmFzZVVybH0vYXBpL3YxL3dvcmtzcGFjZXMvJHtlbmNvZGVVUklDb21wb25lbnQoZmxhZ3Mud29ya3NwYWNlKX0vdXBncmFkZS9yZXN1Ym1pdGA7XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCB0aW1lb3V0KTtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBgbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9JHtib3VuZGFyeX1gLFxuICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICAgIH0sXG4gICAgICBib2R5LFxuICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcblxuICAgIGNvbnN0IGRhdGEgPSAoYXdhaXQgcmVzcFxuICAgICAgLmpzb24oKVxuICAgICAgLmNhdGNoKCgpID0+ICh7fSkpKSBhcyBSZXN1Ym1pdFVwZ3JhZGVSZXNwb25zZTtcbiAgICBpZiAoIXJlc3Aub2spIHtcbiAgICAgIHRocm93IG5ldyBBcGlFcnJvcihcbiAgICAgICAgZGF0YS5lcnJvciB8fCBcInJlc3VibWl0X2Vycm9yXCIsXG4gICAgICAgIGRhdGEubWVzc2FnZSB8fCBgSFRUUCAke3Jlc3Auc3RhdHVzfWAsXG4gICAgICAgIHJlc3Auc3RhdHVzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKGRhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdWNjZXNzKFwiUmVzdWJtaXR0ZWQgdG8gY2Fycmllci5cIik7XG4gICAgaW5mbyhkYXRhLm1lc3NhZ2UpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class BusinessUpgradeStart extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ workspace: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
+ "business-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
+ brn: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
+ "brn-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
+ "brn-country": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ "entity-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
+ "doing-business-as": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
13
+ website: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
14
+ address1: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
15
+ address2: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
16
+ city: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
17
+ state: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
18
+ zip: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
19
+ "address-country": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
20
+ "contact-first-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
21
+ "contact-last-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
22
+ "contact-email": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
23
+ "contact-phone": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
24
+ "monthly-volume": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
25
+ "use-case": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
26
+ "use-case-summary": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
27
+ "sample-messages": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
28
+ "opt-in-workflow": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
29
+ "privacy-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
30
+ "terms-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
31
+ "additional-information": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
32
+ "age-gated-content": import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
33
+ "ein-doc": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
34
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
35
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
36
+ };
37
+ run(): Promise<void>;
38
+ }
@@ -0,0 +1,142 @@
1
+ import { Flags } from "@oclif/core";
2
+ import * as fs from "node:fs";
3
+ import * as path from "node:path";
4
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
5
+ import { getAuthToken, getConfigValue, getEffectiveValue, } from "../../lib/config.js";
6
+ import { ApiError, AuthenticationError } from "../../lib/api-client.js";
7
+ import { json, info, success, isJsonMode } from "../../lib/output.js";
8
+ const TEXT_FIELDS = {
9
+ "business-name": "businessName",
10
+ brn: "brn",
11
+ "brn-type": "brnType",
12
+ "brn-country": "brnCountry",
13
+ "entity-type": "entityType",
14
+ "doing-business-as": "doingBusinessAs",
15
+ website: "website",
16
+ address1: "address1",
17
+ address2: "address2",
18
+ city: "city",
19
+ state: "state",
20
+ zip: "zip",
21
+ "address-country": "addressCountry",
22
+ "contact-first-name": "contactFirstName",
23
+ "contact-last-name": "contactLastName",
24
+ "contact-email": "contactEmail",
25
+ "contact-phone": "contactPhone",
26
+ "monthly-volume": "monthlyVolume",
27
+ "use-case": "useCase",
28
+ "use-case-summary": "useCaseSummary",
29
+ "sample-messages": "sampleMessages",
30
+ "opt-in-workflow": "optInWorkflow",
31
+ "privacy-url": "privacyUrl",
32
+ "terms-url": "termsUrl",
33
+ "additional-information": "additionalInformation",
34
+ };
35
+ export default class BusinessUpgradeStart extends AuthenticatedCommand {
36
+ static description = "Start a business entity upgrade — auto-provisions a new toll-free number under the new entity and submits to the carrier for review";
37
+ static examples = [
38
+ '<%= config.bin %> business-upgrade start --workspace ws_abc --business-name "Acme Holdings LLC" --brn "12-3456789" --brn-type EIN --entity-type PRIVATE_PROFIT --ein-doc ./CP-575.pdf',
39
+ ];
40
+ static flags = {
41
+ ...AuthenticatedCommand.baseFlags,
42
+ workspace: Flags.string({
43
+ description: "Workspace ID being upgraded",
44
+ required: true,
45
+ }),
46
+ "business-name": Flags.string({ required: true }),
47
+ brn: Flags.string({ required: true }),
48
+ "brn-type": Flags.string({ required: true, default: "EIN" }),
49
+ "brn-country": Flags.string({ default: "US" }),
50
+ "entity-type": Flags.string({ required: true, default: "PRIVATE_PROFIT" }),
51
+ "doing-business-as": Flags.string(),
52
+ website: Flags.string(),
53
+ address1: Flags.string(),
54
+ address2: Flags.string(),
55
+ city: Flags.string(),
56
+ state: Flags.string(),
57
+ zip: Flags.string(),
58
+ "address-country": Flags.string(),
59
+ "contact-first-name": Flags.string(),
60
+ "contact-last-name": Flags.string(),
61
+ "contact-email": Flags.string(),
62
+ "contact-phone": Flags.string(),
63
+ "monthly-volume": Flags.string(),
64
+ "use-case": Flags.string(),
65
+ "use-case-summary": Flags.string(),
66
+ "sample-messages": Flags.string(),
67
+ "opt-in-workflow": Flags.string(),
68
+ "privacy-url": Flags.string(),
69
+ "terms-url": Flags.string(),
70
+ "additional-information": Flags.string(),
71
+ "age-gated-content": Flags.boolean({ default: false }),
72
+ "ein-doc": Flags.string({
73
+ description: "Path to the IRS letter (CP-575 or 147C) PDF",
74
+ }),
75
+ };
76
+ async run() {
77
+ const { flags } = await this.parse(BusinessUpgradeStart);
78
+ const boundary = `----FormBoundary${Date.now()}${Math.random()
79
+ .toString(36)
80
+ .substring(2)}`;
81
+ const parts = [];
82
+ const appendField = (name, value) => {
83
+ parts.push(Buffer.from(`--${boundary}\r\n` +
84
+ `Content-Disposition: form-data; name="${name}"\r\n\r\n` +
85
+ value +
86
+ "\r\n"));
87
+ };
88
+ for (const [flagKey, wireKey] of Object.entries(TEXT_FIELDS)) {
89
+ const v = flags[flagKey];
90
+ if (typeof v === "string" && v.length > 0)
91
+ appendField(wireKey, v);
92
+ }
93
+ appendField("ageGatedContent", flags["age-gated-content"] ? "true" : "false");
94
+ if (flags["ein-doc"]) {
95
+ const filePath = flags["ein-doc"];
96
+ if (!fs.existsSync(filePath)) {
97
+ this.error(`File not found: ${filePath}`);
98
+ }
99
+ const filename = path.basename(filePath);
100
+ const fileBuffer = fs.readFileSync(filePath);
101
+ parts.push(Buffer.from(`--${boundary}\r\n` +
102
+ `Content-Disposition: form-data; name="einDoc"; filename="${filename}"\r\n` +
103
+ `Content-Type: application/pdf\r\n\r\n`));
104
+ parts.push(fileBuffer);
105
+ parts.push(Buffer.from("\r\n"));
106
+ }
107
+ parts.push(Buffer.from(`--${boundary}--\r\n`));
108
+ const body = Buffer.concat(parts);
109
+ const token = getAuthToken();
110
+ if (!token)
111
+ throw new AuthenticationError();
112
+ const baseUrl = getConfigValue("baseUrl") || "https://sendly.live";
113
+ const timeout = getEffectiveValue("timeout");
114
+ const url = `${baseUrl}/api/v1/workspaces/${encodeURIComponent(flags.workspace)}/upgrade`;
115
+ const controller = new AbortController();
116
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
117
+ const resp = await fetch(url, {
118
+ method: "POST",
119
+ headers: {
120
+ "Content-Type": `multipart/form-data; boundary=${boundary}`,
121
+ Accept: "application/json",
122
+ Authorization: `Bearer ${token}`,
123
+ },
124
+ body,
125
+ signal: controller.signal,
126
+ });
127
+ clearTimeout(timeoutId);
128
+ const data = (await resp.json().catch(() => ({})));
129
+ if (!resp.ok) {
130
+ throw new ApiError(data.error || "upgrade_error", data.message || `HTTP ${resp.status}`, resp.status);
131
+ }
132
+ if (isJsonMode()) {
133
+ json(data);
134
+ return;
135
+ }
136
+ success("Upgrade submitted to carrier.");
137
+ info(`Pending verification: ${data.pendingVerificationId}`);
138
+ info(`New toll-free number (reserved): ${data.tollFreeNumber}`);
139
+ info(data.message);
140
+ }
141
+ }
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvYnVzaW5lc3MtdXBncmFkZS9zdGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLGlCQUFpQixHQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFXdEUsTUFBTSxXQUFXLEdBQTJCO0lBQzFDLGVBQWUsRUFBRSxjQUFjO0lBQy9CLEdBQUcsRUFBRSxLQUFLO0lBQ1YsVUFBVSxFQUFFLFNBQVM7SUFDckIsYUFBYSxFQUFFLFlBQVk7SUFDM0IsYUFBYSxFQUFFLFlBQVk7SUFDM0IsbUJBQW1CLEVBQUUsaUJBQWlCO0lBQ3RDLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87SUFDZCxHQUFHLEVBQUUsS0FBSztJQUNWLGlCQUFpQixFQUFFLGdCQUFnQjtJQUNuQyxvQkFBb0IsRUFBRSxrQkFBa0I7SUFDeEMsbUJBQW1CLEVBQUUsaUJBQWlCO0lBQ3RDLGVBQWUsRUFBRSxjQUFjO0lBQy9CLGVBQWUsRUFBRSxjQUFjO0lBQy9CLGdCQUFnQixFQUFFLGVBQWU7SUFD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LEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLGlDQUFpQyxRQUFRLEVBQUU7Z0JBQzNELE1BQU0sRUFBRSxrQkFBa0I7Z0JBQzFCLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRTthQUNqQztZQUNELElBQUk7WUFDSixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhCLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBeUIsQ0FBQztRQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLFFBQVEsQ0FDaEIsSUFBSSxDQUFDLEtBQUssSUFBSSxlQUFlLEVBQzdCLElBQUksQ0FBQyxPQUFPLElBQUksUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ3JDLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7UUFDRCxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMseUJBQXlCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLG9DQUFvQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHtcbiAgZ2V0QXV0aFRva2VuLFxuICBnZXRDb25maWdWYWx1ZSxcbiAgZ2V0RWZmZWN0aXZlVmFsdWUsXG59IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5pbXBvcnQgeyBBcGlFcnJvciwgQXV0aGVudGljYXRpb25FcnJvciB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgaW5mbywgc3VjY2VzcywgaXNKc29uTW9kZSB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBTdGFydFVwZ3JhZGVSZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHBlbmRpbmdWZXJpZmljYXRpb25JZDogc3RyaW5nO1xuICB0ZWxueXhWZXJpZmljYXRpb25JZDogc3RyaW5nO1xuICB0b2xsRnJlZU51bWJlcjogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG5jb25zdCBURVhUX0ZJRUxEUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgXCJidXNpbmVzcy1uYW1lXCI6IFwiYnVzaW5lc3NOYW1lXCIsXG4gIGJybjogXCJicm5cIixcbiAgXCJicm4tdHlwZVwiOiBcImJyblR5cGVcIixcbiAgXCJicm4tY291bnRyeVwiOiBcImJybkNvdW50cnlcIixcbiAgXCJlbnRpdHktdHlwZVwiOiBcImVudGl0eVR5cGVcIixcbiAgXCJkb2luZy1idXNpbmVzcy1hc1wiOiBcImRvaW5nQnVzaW5lc3NBc1wiLFxuICB3ZWJzaXRlOiBcIndlYnNpdGVcIixcbiAgYWRkcmVzczE6IFwiYWRkcmVzczFcIixcbiAgYWRkcmVzczI6IFwiYWRkcmVzczJcIixcbiAgY2l0eTogXCJjaXR5XCIsXG4gIHN0YXRlOiBcInN0YXRlXCIsXG4gIHppcDogXCJ6aXBcIixcbiAgXCJhZGRyZXNzLWNvdW50cnlcIjogXCJhZGRyZXNzQ291bnRyeVwiLFxuICBcImNvbnRhY3QtZmlyc3QtbmFtZVwiOiBcImNvbnRhY3RGaXJzdE5hbWVcIixcbiAgXCJjb250YWN0LWxhc3QtbmFtZVwiOiBcImNvbnRhY3RMYXN0TmFtZVwiLFxuICBcImNvbnRhY3QtZW1haWxcIjogXCJjb250YWN0RW1haWxcIixcbiAgXCJjb250YWN0LXBob25lXCI6IFwiY29udGFjdFBob25lXCIsXG4gIFwibW9udGhseS12b2x1bWVcIjogXCJtb250aGx5Vm9sdW1lXCIsXG4gIFwidXNlLWNhc2VcIjogXCJ1c2VDYXNlXCIsXG4gIFwidXNlLWNhc2Utc3VtbWFyeVwiOiBcInVzZUNhc2VTdW1tYXJ5XCIsXG4gIFwic2FtcGxlLW1lc3NhZ2VzXCI6IFwic2FtcGxlTWVzc2FnZXNcIixcbiAgXCJvcHQtaW4td29ya2Zsb3dcIjogXCJvcHRJbldvcmtmbG93XCIsXG4gIFwicHJpdmFjeS11cmxcIjogXCJwcml2YWN5VXJsXCIsXG4gIFwidGVybXMtdXJsXCI6IFwidGVybXNVcmxcIixcbiAgXCJhZGRpdGlvbmFsLWluZm9ybWF0aW9uXCI6IFwiYWRkaXRpb25hbEluZm9ybWF0aW9uXCIsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdXNpbmVzc1VwZ3JhZGVTdGFydCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIlN0YXJ0IGEgYnVzaW5lc3MgZW50aXR5IHVwZ3JhZGUg4oCUIGF1dG8tcHJvdmlzaW9ucyBhIG5ldyB0b2xsLWZyZWUgbnVtYmVyIHVuZGVyIHRoZSBuZXcgZW50aXR5IGFuZCBzdWJtaXRzIHRvIHRoZSBjYXJyaWVyIGZvciByZXZpZXdcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IGJ1c2luZXNzLXVwZ3JhZGUgc3RhcnQgLS13b3Jrc3BhY2Ugd3NfYWJjIC0tYnVzaW5lc3MtbmFtZSBcIkFjbWUgSG9sZGluZ3MgTExDXCIgLS1icm4gXCIxMi0zNDU2Nzg5XCIgLS1icm4tdHlwZSBFSU4gLS1lbnRpdHktdHlwZSBQUklWQVRFX1BST0ZJVCAtLWVpbi1kb2MgLi9DUC01NzUucGRmJyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHdvcmtzcGFjZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIldvcmtzcGFjZSBJRCBiZWluZyB1cGdyYWRlZFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgXCJidXNpbmVzcy1uYW1lXCI6IEZsYWdzLnN0cmluZyh7IHJlcXVpcmVkOiB0cnVlIH0pLFxuICAgIGJybjogRmxhZ3Muc3RyaW5nKHsgcmVxdWlyZWQ6IHRydWUgfSksXG4gICAgXCJicm4tdHlwZVwiOiBGbGFncy5zdHJpbmcoeyByZXF1aXJlZDogdHJ1ZSwgZGVmYXVsdDogXCJFSU5cIiB9KSxcbiAgICBcImJybi1jb3VudHJ5XCI6IEZsYWdzLnN0cmluZyh7IGRlZmF1bHQ6IFwiVVNcIiB9KSxcbiAgICBcImVudGl0eS10eXBlXCI6IEZsYWdzLnN0cmluZyh7IHJlcXVpcmVkOiB0cnVlLCBkZWZhdWx0OiBcIlBSSVZBVEVfUFJPRklUXCIgfSksXG4gICAgXCJkb2luZy1idXNpbmVzcy1hc1wiOiBGbGFncy5zdHJpbmcoKSxcbiAgICB3ZWJzaXRlOiBGbGFncy5zdHJpbmcoKSxcbiAgICBhZGRyZXNzMTogRmxhZ3Muc3RyaW5nKCksXG4gICAgYWRkcmVzczI6IEZsYWdzLnN0cmluZygpLFxuICAgIGNpdHk6IEZsYWdzLnN0cmluZygpLFxuICAgIHN0YXRlOiBGbGFncy5zdHJpbmcoKSxcbiAgICB6aXA6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiYWRkcmVzcy1jb3VudHJ5XCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiY29udGFjdC1maXJzdC1uYW1lXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiY29udGFjdC1sYXN0LW5hbWVcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJjb250YWN0LWVtYWlsXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiY29udGFjdC1waG9uZVwiOiBGbGFncy5zdHJpbmcoKSxcbiAgICBcIm1vbnRobHktdm9sdW1lXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwidXNlLWNhc2VcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJ1c2UtY2FzZS1zdW1tYXJ5XCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwic2FtcGxlLW1lc3NhZ2VzXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwib3B0LWluLXdvcmtmbG93XCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwicHJpdmFjeS11cmxcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJ0ZXJtcy11cmxcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJhZGRpdGlvbmFsLWluZm9ybWF0aW9uXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiYWdlLWdhdGVkLWNvbnRlbnRcIjogRmxhZ3MuYm9vbGVhbih7IGRlZmF1bHQ6IGZhbHNlIH0pLFxuICAgIFwiZWluLWRvY1wiOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiUGF0aCB0byB0aGUgSVJTIGxldHRlciAoQ1AtNTc1IG9yIDE0N0MpIFBERlwiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEJ1c2luZXNzVXBncmFkZVN0YXJ0KTtcblxuICAgIGNvbnN0IGJvdW5kYXJ5ID0gYC0tLS1Gb3JtQm91bmRhcnkke0RhdGUubm93KCl9JHtNYXRoLnJhbmRvbSgpXG4gICAgICAudG9TdHJpbmcoMzYpXG4gICAgICAuc3Vic3RyaW5nKDIpfWA7XG4gICAgY29uc3QgcGFydHM6IEJ1ZmZlcltdID0gW107XG5cbiAgICBjb25zdCBhcHBlbmRGaWVsZCA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgIEJ1ZmZlci5mcm9tKFxuICAgICAgICAgIGAtLSR7Ym91bmRhcnl9XFxyXFxuYCArXG4gICAgICAgICAgICBgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwiJHtuYW1lfVwiXFxyXFxuXFxyXFxuYCArXG4gICAgICAgICAgICB2YWx1ZSArXG4gICAgICAgICAgICBcIlxcclxcblwiLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBbZmxhZ0tleSwgd2lyZUtleV0gb2YgT2JqZWN0LmVudHJpZXMoVEVYVF9GSUVMRFMpKSB7XG4gICAgICBjb25zdCB2ID0gZmxhZ3NbZmxhZ0tleSBhcyBrZXlvZiB0eXBlb2YgZmxhZ3NdO1xuICAgICAgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiICYmIHYubGVuZ3RoID4gMCkgYXBwZW5kRmllbGQod2lyZUtleSwgdik7XG4gICAgfVxuICAgIGFwcGVuZEZpZWxkKFwiYWdlR2F0ZWRDb250ZW50XCIsIGZsYWdzW1wiYWdlLWdhdGVkLWNvbnRlbnRcIl0gPyBcInRydWVcIiA6IFwiZmFsc2VcIik7XG5cbiAgICBpZiAoZmxhZ3NbXCJlaW4tZG9jXCJdKSB7XG4gICAgICBjb25zdCBmaWxlUGF0aCA9IGZsYWdzW1wiZWluLWRvY1wiXTtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgICAgdGhpcy5lcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZVBhdGh9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWxlbmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZVBhdGgpO1xuICAgICAgY29uc3QgZmlsZUJ1ZmZlciA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCk7XG4gICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICBCdWZmZXIuZnJvbShcbiAgICAgICAgICBgLS0ke2JvdW5kYXJ5fVxcclxcbmAgK1xuICAgICAgICAgICAgYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cImVpbkRvY1wiOyBmaWxlbmFtZT1cIiR7ZmlsZW5hbWV9XCJcXHJcXG5gICtcbiAgICAgICAgICAgIGBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3BkZlxcclxcblxcclxcbmAsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgcGFydHMucHVzaChmaWxlQnVmZmVyKTtcbiAgICAgIHBhcnRzLnB1c2goQnVmZmVyLmZyb20oXCJcXHJcXG5cIikpO1xuICAgIH1cbiAgICBwYXJ0cy5wdXNoKEJ1ZmZlci5mcm9tKGAtLSR7Ym91bmRhcnl9LS1cXHJcXG5gKSk7XG5cbiAgICBjb25zdCBib2R5ID0gQnVmZmVyLmNvbmNhdChwYXJ0cyk7XG4gICAgY29uc3QgdG9rZW4gPSBnZXRBdXRoVG9rZW4oKTtcbiAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcigpO1xuXG4gICAgY29uc3QgYmFzZVVybCA9IGdldENvbmZpZ1ZhbHVlKFwiYmFzZVVybFwiKSB8fCBcImh0dHBzOi8vc2VuZGx5LmxpdmVcIjtcbiAgICBjb25zdCB0aW1lb3V0ID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJ0aW1lb3V0XCIpO1xuICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L2FwaS92MS93b3Jrc3BhY2VzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGZsYWdzLndvcmtzcGFjZSl9L3VwZ3JhZGVgO1xuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgdGltZW91dCk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogYG11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSR7Ym91bmRhcnl9YCxcbiAgICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgICB9LFxuICAgICAgYm9keSxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG5cbiAgICBjb25zdCBkYXRhID0gKGF3YWl0IHJlc3AuanNvbigpLmNhdGNoKCgpID0+ICh7fSkpKSBhcyBTdGFydFVwZ3JhZGVSZXNwb25zZTtcbiAgICBpZiAoIXJlc3Aub2spIHtcbiAgICAgIHRocm93IG5ldyBBcGlFcnJvcihcbiAgICAgICAgZGF0YS5lcnJvciB8fCBcInVwZ3JhZGVfZXJyb3JcIixcbiAgICAgICAgZGF0YS5tZXNzYWdlIHx8IGBIVFRQICR7cmVzcC5zdGF0dXN9YCxcbiAgICAgICAgcmVzcC5zdGF0dXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN1Y2Nlc3MoXCJVcGdyYWRlIHN1Ym1pdHRlZCB0byBjYXJyaWVyLlwiKTtcbiAgICBpbmZvKGBQZW5kaW5nIHZlcmlmaWNhdGlvbjogJHtkYXRhLnBlbmRpbmdWZXJpZmljYXRpb25JZH1gKTtcbiAgICBpbmZvKGBOZXcgdG9sbC1mcmVlIG51bWJlciAocmVzZXJ2ZWQpOiAke2RhdGEudG9sbEZyZWVOdW1iZXJ9YCk7XG4gICAgaW5mbyhkYXRhLm1lc3NhZ2UpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
2
+ export default class BusinessUpgradeStatus extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ workspace: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
8
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
@@ -0,0 +1,38 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
3
+ import { apiClient } from "../../lib/api-client.js";
4
+ import { json, info, isJsonMode, colors } from "../../lib/output.js";
5
+ export default class BusinessUpgradeStatus extends AuthenticatedCommand {
6
+ static description = "Show the status of any pending business entity upgrade for a workspace";
7
+ static examples = [
8
+ "<%= config.bin %> business-upgrade status --workspace ws_abc",
9
+ "<%= config.bin %> business-upgrade status --workspace ws_abc --json",
10
+ ];
11
+ static flags = {
12
+ ...AuthenticatedCommand.baseFlags,
13
+ workspace: Flags.string({
14
+ description: "Workspace ID to check",
15
+ required: true,
16
+ }),
17
+ };
18
+ async run() {
19
+ const { flags } = await this.parse(BusinessUpgradeStatus);
20
+ const data = await apiClient.get(`/api/v1/workspaces/${encodeURIComponent(flags.workspace)}/upgrade/status`);
21
+ if (isJsonMode()) {
22
+ json(data);
23
+ return;
24
+ }
25
+ if (!data.pending) {
26
+ info("No upgrade in flight for this workspace.");
27
+ return;
28
+ }
29
+ info(`${colors.bold(data.pending.businessName)} · status: ${data.pending.status}`);
30
+ if (data.pending.tollFreeNumber)
31
+ info(`Reserved number: ${data.pending.tollFreeNumber}`);
32
+ if (data.pending.rejectionReason) {
33
+ info(colors.warning(`Carrier feedback: ${data.pending.rejectionReason}`));
34
+ }
35
+ info(colors.dim(`Submitted ${data.pending.createdAt}`));
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2J1c2luZXNzLXVwZ3JhZGUvc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVlyRSxNQUFNLENBQUMsT0FBTyxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQUNyRSxNQUFNLENBQUMsV0FBVyxHQUFHLHdFQUF3RSxDQUFDO0lBRTlGLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsOERBQThEO1FBQzlELHFFQUFxRTtLQUN0RSxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixXQUFXLEVBQUUsdUJBQXVCO1lBQ3BDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxRCxNQUFNLElBQUksR0FBRyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQzlCLHNCQUFzQixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUMzRSxDQUFDO1FBQ0YsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztZQUNqRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNyRixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztZQUFFLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IGpzb24sIGluZm8sIGlzSnNvbk1vZGUsIGNvbG9ycyB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBQZW5kaW5nUm93IHtcbiAgaWQ6IHN0cmluZztcbiAgYnVzaW5lc3NOYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b2xsRnJlZU51bWJlcjogc3RyaW5nIHwgbnVsbDtcbiAgcmVqZWN0aW9uUmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1c2luZXNzVXBncmFkZVN0YXR1cyBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTaG93IHRoZSBzdGF0dXMgb2YgYW55IHBlbmRpbmcgYnVzaW5lc3MgZW50aXR5IHVwZ3JhZGUgZm9yIGEgd29ya3NwYWNlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gYnVzaW5lc3MtdXBncmFkZSBzdGF0dXMgLS13b3Jrc3BhY2Ugd3NfYWJjXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBidXNpbmVzcy11cGdyYWRlIHN0YXR1cyAtLXdvcmtzcGFjZSB3c19hYmMgLS1qc29uXCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICB3b3Jrc3BhY2U6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJXb3Jrc3BhY2UgSUQgdG8gY2hlY2tcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEJ1c2luZXNzVXBncmFkZVN0YXR1cyk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8eyBwZW5kaW5nOiBQZW5kaW5nUm93IHwgbnVsbCB9PihcbiAgICAgIGAvYXBpL3YxL3dvcmtzcGFjZXMvJHtlbmNvZGVVUklDb21wb25lbnQoZmxhZ3Mud29ya3NwYWNlKX0vdXBncmFkZS9zdGF0dXNgLFxuICAgICk7XG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihkYXRhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFkYXRhLnBlbmRpbmcpIHtcbiAgICAgIGluZm8oXCJObyB1cGdyYWRlIGluIGZsaWdodCBmb3IgdGhpcyB3b3Jrc3BhY2UuXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbmZvKGAke2NvbG9ycy5ib2xkKGRhdGEucGVuZGluZy5idXNpbmVzc05hbWUpfSAgwrcgIHN0YXR1czogJHtkYXRhLnBlbmRpbmcuc3RhdHVzfWApO1xuICAgIGlmIChkYXRhLnBlbmRpbmcudG9sbEZyZWVOdW1iZXIpIGluZm8oYFJlc2VydmVkIG51bWJlcjogJHtkYXRhLnBlbmRpbmcudG9sbEZyZWVOdW1iZXJ9YCk7XG4gICAgaWYgKGRhdGEucGVuZGluZy5yZWplY3Rpb25SZWFzb24pIHtcbiAgICAgIGluZm8oY29sb3JzLndhcm5pbmcoYENhcnJpZXIgZmVlZGJhY2s6ICR7ZGF0YS5wZW5kaW5nLnJlamVjdGlvblJlYXNvbn1gKSk7XG4gICAgfVxuICAgIGluZm8oY29sb3JzLmRpbShgU3VibWl0dGVkICR7ZGF0YS5wZW5kaW5nLmNyZWF0ZWRBdH1gKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { AuthenticatedCommand } from "../../../lib/base-command.js";
2
+ export default class EnterpriseVerificationGet extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ workspaceId: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
+ quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }