@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.
- package/README.md +204 -1
- package/dist/commands/10dlc/assignments/list.d.ts +10 -0
- package/dist/commands/10dlc/assignments/list.js +67 -0
- package/dist/commands/10dlc/brands/create.d.ts +25 -0
- package/dist/commands/10dlc/brands/create.js +89 -0
- package/dist/commands/10dlc/brands/get.d.ts +13 -0
- package/dist/commands/10dlc/brands/get.js +63 -0
- package/dist/commands/10dlc/brands/list.d.ts +10 -0
- package/dist/commands/10dlc/brands/list.js +63 -0
- package/dist/commands/10dlc/campaigns/assign.d.ts +14 -0
- package/dist/commands/10dlc/campaigns/assign.js +64 -0
- package/dist/commands/10dlc/campaigns/create.d.ts +24 -0
- package/dist/commands/10dlc/campaigns/create.js +118 -0
- package/dist/commands/10dlc/campaigns/get.d.ts +13 -0
- package/dist/commands/10dlc/campaigns/get.js +84 -0
- package/dist/commands/10dlc/campaigns/list.d.ts +10 -0
- package/dist/commands/10dlc/campaigns/list.js +70 -0
- package/dist/commands/10dlc/qualify.d.ts +14 -0
- package/dist/commands/10dlc/qualify.js +56 -0
- package/dist/commands/business-upgrade/cancel.d.ts +12 -0
- package/dist/commands/business-upgrade/cancel.js +47 -0
- package/dist/commands/business-upgrade/disposition.d.ts +13 -0
- package/dist/commands/business-upgrade/disposition.js +44 -0
- package/dist/commands/business-upgrade/preflight.d.ts +16 -0
- package/dist/commands/business-upgrade/preflight.js +82 -0
- package/dist/commands/business-upgrade/resubmit.d.ts +24 -0
- package/dist/commands/business-upgrade/resubmit.js +109 -0
- package/dist/commands/business-upgrade/start.d.ts +38 -0
- package/dist/commands/business-upgrade/start.js +142 -0
- package/dist/commands/business-upgrade/status.d.ts +11 -0
- package/dist/commands/business-upgrade/status.js +38 -0
- package/dist/commands/enterprise/verification/get.d.ts +13 -0
- package/dist/commands/enterprise/verification/get.js +78 -0
- package/dist/commands/enterprise/verification/resubmit.d.ts +41 -0
- package/dist/commands/enterprise/verification/resubmit.js +87 -0
- package/dist/commands/enterprise/verification/submit.d.ts +77 -0
- package/dist/commands/enterprise/verification/submit.js +212 -0
- package/dist/commands/keys/rotate.js +7 -12
- package/dist/commands/links/create.d.ts +24 -0
- package/dist/commands/links/create.js +71 -0
- package/dist/commands/links/disable.d.ts +21 -0
- package/dist/commands/links/disable.js +55 -0
- package/dist/commands/links/list.d.ts +19 -0
- package/dist/commands/links/list.js +85 -0
- package/dist/commands/numbers/buy.d.ts +31 -0
- package/dist/commands/numbers/buy.js +266 -0
- package/dist/commands/numbers/get.d.ts +20 -0
- package/dist/commands/numbers/get.js +52 -0
- package/dist/commands/numbers/list.d.ts +10 -0
- package/dist/commands/numbers/list.js +70 -0
- package/dist/commands/numbers/release.d.ts +23 -0
- package/dist/commands/numbers/release.js +67 -0
- package/dist/commands/numbers/search.d.ts +13 -0
- package/dist/commands/numbers/search.js +78 -0
- package/dist/commands/numbers/update.d.ts +25 -0
- package/dist/commands/numbers/update.js +70 -0
- package/dist/commands/sms/group.d.ts +25 -0
- package/dist/commands/sms/group.js +164 -0
- package/dist/commands/sms/upload-media.d.ts +1 -1
- package/dist/commands/sms/upload-media.js +4 -4
- package/dist/commands/templates/enhance.js +3 -3
- package/dist/commands/upgrade.d.ts +1 -16
- package/dist/commands/upgrade.js +131 -38
- package/dist/lib/auth.js +2 -94
- package/dist/lib/config.js +31 -2
- package/dist/lib/detect-install-path.d.ts +11 -7
- package/dist/lib/detect-install-path.js +25 -9
- package/dist/lib/keypress.d.ts +26 -0
- package/dist/lib/keypress.js +103 -0
- package/oclif.manifest.json +5005 -2698
- package/package.json +22 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Args, Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../../lib/api-client.js";
|
|
4
|
+
import { json, success, colors, isJsonMode, keyValue, } from "../../../lib/output.js";
|
|
5
|
+
function formatAssignmentStatus(status) {
|
|
6
|
+
switch (status) {
|
|
7
|
+
case "Active":
|
|
8
|
+
return colors.success(status);
|
|
9
|
+
case "Under review":
|
|
10
|
+
return colors.warning(status);
|
|
11
|
+
case "Action needed":
|
|
12
|
+
return colors.error(status);
|
|
13
|
+
default:
|
|
14
|
+
return status;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export default class TendlcCampaignsAssign extends AuthenticatedCommand {
|
|
18
|
+
static description = "Assign a phone number you own to an active campaign, making it sendable";
|
|
19
|
+
static examples = [
|
|
20
|
+
'<%= config.bin %> 10dlc campaigns assign cmp_xxx --number "+15551234567"',
|
|
21
|
+
'<%= config.bin %> 10dlc campaigns assign cmp_xxx --number "+15551234567" --json',
|
|
22
|
+
];
|
|
23
|
+
static args = {
|
|
24
|
+
id: Args.string({
|
|
25
|
+
description: "Campaign ID",
|
|
26
|
+
required: true,
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
29
|
+
static flags = {
|
|
30
|
+
...AuthenticatedCommand.baseFlags,
|
|
31
|
+
number: Flags.string({
|
|
32
|
+
char: "n",
|
|
33
|
+
description: "Phone number to assign (E.164, must be on your account)",
|
|
34
|
+
required: true,
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
async run() {
|
|
38
|
+
const { args, flags } = await this.parse(TendlcCampaignsAssign);
|
|
39
|
+
const response = await apiClient.post(`/api/v1/tendlc/campaigns/${args.id}/assign`, { phoneNumber: flags.number });
|
|
40
|
+
if (isJsonMode()) {
|
|
41
|
+
json(response);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const assignment = response.data;
|
|
45
|
+
success(`Number assigned: ${assignment.phoneNumber}`);
|
|
46
|
+
console.log();
|
|
47
|
+
keyValue([
|
|
48
|
+
["Assignment", assignment.id],
|
|
49
|
+
["Campaign", assignment.campaignId],
|
|
50
|
+
["Status", formatAssignmentStatus(assignment.status)],
|
|
51
|
+
...(assignment.assignedAt
|
|
52
|
+
? [
|
|
53
|
+
[
|
|
54
|
+
"Assigned",
|
|
55
|
+
new Date(assignment.assignedAt).toLocaleString(),
|
|
56
|
+
],
|
|
57
|
+
]
|
|
58
|
+
: []),
|
|
59
|
+
]);
|
|
60
|
+
console.log();
|
|
61
|
+
console.log(colors.dim(`Send from it with: sendly sms send --to "+15559876543" --text "Hi!" --from "${assignment.phoneNumber}"`));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzLzEwZGxjL2NhbXBhaWducy9hc3NpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxJQUFJLEVBQ0osT0FBTyxFQUNQLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sd0JBQXdCLENBQUM7QUFjaEMsU0FBUyxzQkFBc0IsQ0FBQyxNQUFjO0lBQzVDLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLFFBQVE7WUFDWCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsS0FBSyxjQUFjO1lBQ2pCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxLQUFLLGVBQWU7WUFDbEIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCO1lBQ0UsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsT0FBTyxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQUNyRSxNQUFNLENBQUMsV0FBVyxHQUNoQix5RUFBeUUsQ0FBQztJQUU1RSxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDBFQUEwRTtRQUMxRSxpRkFBaUY7S0FDbEYsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNkLFdBQVcsRUFBRSxhQUFhO1lBQzFCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2pDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ25CLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHlEQUF5RDtZQUN0RSxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkMsNEJBQTRCLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFDNUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUM5QixDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUVqQyxPQUFPLENBQUMsb0JBQW9CLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVkLFFBQVEsQ0FBQztZQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDN0IsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxDQUFDLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckQsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVO2dCQUN2QixDQUFDLENBQUM7b0JBQ0U7d0JBQ0UsVUFBVTt3QkFDVixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsY0FBYyxFQUFFO3FCQUM3QjtpQkFDdEI7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNSLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FDUiwrRUFBK0UsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUN6RyxDQUNGLENBQUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAganNvbixcbiAgc3VjY2VzcyxcbiAgY29sb3JzLFxuICBpc0pzb25Nb2RlLFxuICBrZXlWYWx1ZSxcbn0gZnJvbSBcIi4uLy4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIEFzc2lnbm1lbnQge1xuICBpZDogc3RyaW5nO1xuICBjYW1wYWlnbklkOiBzdHJpbmc7XG4gIHBob25lTnVtYmVyOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBhc3NpZ25lZEF0OiBzdHJpbmcgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgQXNzaWduUmVzcG9uc2Uge1xuICBkYXRhOiBBc3NpZ25tZW50O1xufVxuXG5mdW5jdGlvbiBmb3JtYXRBc3NpZ25tZW50U3RhdHVzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwiQWN0aXZlXCI6XG4gICAgICByZXR1cm4gY29sb3JzLnN1Y2Nlc3Moc3RhdHVzKTtcbiAgICBjYXNlIFwiVW5kZXIgcmV2aWV3XCI6XG4gICAgICByZXR1cm4gY29sb3JzLndhcm5pbmcoc3RhdHVzKTtcbiAgICBjYXNlIFwiQWN0aW9uIG5lZWRlZFwiOlxuICAgICAgcmV0dXJuIGNvbG9ycy5lcnJvcihzdGF0dXMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdHVzO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbmRsY0NhbXBhaWduc0Fzc2lnbiBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIkFzc2lnbiBhIHBob25lIG51bWJlciB5b3Ugb3duIHRvIGFuIGFjdGl2ZSBjYW1wYWlnbiwgbWFraW5nIGl0IHNlbmRhYmxlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiAxMGRsYyBjYW1wYWlnbnMgYXNzaWduIGNtcF94eHggLS1udW1iZXIgXCIrMTU1NTEyMzQ1NjdcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IDEwZGxjIGNhbXBhaWducyBhc3NpZ24gY21wX3h4eCAtLW51bWJlciBcIisxNTU1MTIzNDU2N1wiIC0tanNvbicsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgaWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbXBhaWduIElEXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIG51bWJlcjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiblwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUGhvbmUgbnVtYmVyIHRvIGFzc2lnbiAoRS4xNjQsIG11c3QgYmUgb24geW91ciBhY2NvdW50KVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoVGVuZGxjQ2FtcGFpZ25zQXNzaWduKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8QXNzaWduUmVzcG9uc2U+KFxuICAgICAgYC9hcGkvdjEvdGVuZGxjL2NhbXBhaWducy8ke2FyZ3MuaWR9L2Fzc2lnbmAsXG4gICAgICB7IHBob25lTnVtYmVyOiBmbGFncy5udW1iZXIgfSxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXNzaWdubWVudCA9IHJlc3BvbnNlLmRhdGE7XG5cbiAgICBzdWNjZXNzKGBOdW1iZXIgYXNzaWduZWQ6ICR7YXNzaWdubWVudC5waG9uZU51bWJlcn1gKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAga2V5VmFsdWUoW1xuICAgICAgW1wiQXNzaWdubWVudFwiLCBhc3NpZ25tZW50LmlkXSxcbiAgICAgIFtcIkNhbXBhaWduXCIsIGFzc2lnbm1lbnQuY2FtcGFpZ25JZF0sXG4gICAgICBbXCJTdGF0dXNcIiwgZm9ybWF0QXNzaWdubWVudFN0YXR1cyhhc3NpZ25tZW50LnN0YXR1cyldLFxuICAgICAgLi4uKGFzc2lnbm1lbnQuYXNzaWduZWRBdFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJBc3NpZ25lZFwiLFxuICAgICAgICAgICAgICBuZXcgRGF0ZShhc3NpZ25tZW50LmFzc2lnbmVkQXQpLnRvTG9jYWxlU3RyaW5nKCksXG4gICAgICAgICAgICBdIGFzIFtzdHJpbmcsIHN0cmluZ10sXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICBdKTtcblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBjb2xvcnMuZGltKFxuICAgICAgICBgU2VuZCBmcm9tIGl0IHdpdGg6IHNlbmRseSBzbXMgc2VuZCAtLXRvIFwiKzE1NTU5ODc2NTQzXCIgLS10ZXh0IFwiSGkhXCIgLS1mcm9tIFwiJHthc3NpZ25tZW50LnBob25lTnVtYmVyfVwiYCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class TendlcCampaignsCreate extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
brand: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
"use-case": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
description: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
"message-flow": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
sample: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[], import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
"sub-use-case": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
"opt-in-keywords": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
"opt-out-keywords": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
14
|
+
"help-keywords": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
15
|
+
"opt-in-message": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
16
|
+
"opt-out-message": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
17
|
+
"help-message": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
18
|
+
"embedded-link": import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
19
|
+
"embedded-phone": import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
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,118 @@
|
|
|
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, colors, isJsonMode, keyValue, } from "../../../lib/output.js";
|
|
5
|
+
const TEXT_FIELDS = {
|
|
6
|
+
"opt-in-keywords": "optInKeywords",
|
|
7
|
+
"opt-out-keywords": "optOutKeywords",
|
|
8
|
+
"help-keywords": "helpKeywords",
|
|
9
|
+
"opt-in-message": "optInMessage",
|
|
10
|
+
"opt-out-message": "optOutMessage",
|
|
11
|
+
"help-message": "helpMessage",
|
|
12
|
+
};
|
|
13
|
+
export default class TendlcCampaignsCreate extends AuthenticatedCommand {
|
|
14
|
+
static description = "Create a messaging campaign under a verified brand and submit it for carrier review";
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> 10dlc campaigns create --brand brd_xxx --use-case MIXED --description "Order updates and promotions" --message-flow "Customers opt in at checkout" --sample "Your order has shipped!" --sample "20% off this weekend"',
|
|
17
|
+
'<%= config.bin %> 10dlc campaigns create --brand brd_xxx --use-case 2FA --description "Login codes" --message-flow "Users request a code at sign-in" --sample "Your code is {{code}}" --opt-out-keywords "STOP,UNSUBSCRIBE"',
|
|
18
|
+
];
|
|
19
|
+
static flags = {
|
|
20
|
+
...AuthenticatedCommand.baseFlags,
|
|
21
|
+
brand: Flags.string({
|
|
22
|
+
char: "b",
|
|
23
|
+
description: "Brand ID (must be verified)",
|
|
24
|
+
required: true,
|
|
25
|
+
}),
|
|
26
|
+
"use-case": Flags.string({
|
|
27
|
+
description: "Use-case code (e.g. MIXED, MARKETING, ACCOUNT_NOTIFICATION, 2FA)",
|
|
28
|
+
required: true,
|
|
29
|
+
}),
|
|
30
|
+
description: Flags.string({
|
|
31
|
+
char: "d",
|
|
32
|
+
description: "What this campaign sends",
|
|
33
|
+
required: true,
|
|
34
|
+
}),
|
|
35
|
+
"message-flow": Flags.string({
|
|
36
|
+
description: "How recipients opt in to receive messages",
|
|
37
|
+
required: true,
|
|
38
|
+
}),
|
|
39
|
+
sample: Flags.string({
|
|
40
|
+
char: "s",
|
|
41
|
+
description: "Sample message (repeat for up to 5 samples)",
|
|
42
|
+
multiple: true,
|
|
43
|
+
required: true,
|
|
44
|
+
}),
|
|
45
|
+
"sub-use-case": Flags.string({
|
|
46
|
+
description: "Sub use-case code (can specify multiple)",
|
|
47
|
+
multiple: true,
|
|
48
|
+
}),
|
|
49
|
+
"opt-in-keywords": Flags.string({
|
|
50
|
+
description: "Comma-separated opt-in keywords",
|
|
51
|
+
}),
|
|
52
|
+
"opt-out-keywords": Flags.string({
|
|
53
|
+
description: "Comma-separated opt-out keywords",
|
|
54
|
+
}),
|
|
55
|
+
"help-keywords": Flags.string({
|
|
56
|
+
description: "Comma-separated help keywords",
|
|
57
|
+
}),
|
|
58
|
+
"opt-in-message": Flags.string({
|
|
59
|
+
description: "Reply sent on opt-in",
|
|
60
|
+
}),
|
|
61
|
+
"opt-out-message": Flags.string({
|
|
62
|
+
description: "Reply sent on opt-out",
|
|
63
|
+
}),
|
|
64
|
+
"help-message": Flags.string({
|
|
65
|
+
description: "Reply sent on a help keyword",
|
|
66
|
+
}),
|
|
67
|
+
"embedded-link": Flags.boolean({
|
|
68
|
+
description: "Messages include links (default true; disable with --no-embedded-link)",
|
|
69
|
+
allowNo: true,
|
|
70
|
+
}),
|
|
71
|
+
"embedded-phone": Flags.boolean({
|
|
72
|
+
description: "Messages include phone numbers (default false)",
|
|
73
|
+
allowNo: true,
|
|
74
|
+
}),
|
|
75
|
+
};
|
|
76
|
+
async run() {
|
|
77
|
+
const { flags } = await this.parse(TendlcCampaignsCreate);
|
|
78
|
+
const body = {
|
|
79
|
+
brandId: flags.brand,
|
|
80
|
+
useCase: flags["use-case"],
|
|
81
|
+
description: flags.description,
|
|
82
|
+
messageFlow: flags["message-flow"],
|
|
83
|
+
sampleMessages: flags.sample,
|
|
84
|
+
};
|
|
85
|
+
if (flags["sub-use-case"] && flags["sub-use-case"].length > 0) {
|
|
86
|
+
body.subUseCases = flags["sub-use-case"];
|
|
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
|
+
body[wireKey] = v;
|
|
92
|
+
}
|
|
93
|
+
if (flags["embedded-link"] !== undefined) {
|
|
94
|
+
body.embeddedLink = flags["embedded-link"];
|
|
95
|
+
}
|
|
96
|
+
if (flags["embedded-phone"] !== undefined) {
|
|
97
|
+
body.embeddedPhone = flags["embedded-phone"];
|
|
98
|
+
}
|
|
99
|
+
const response = await apiClient.post("/api/v1/tendlc/campaigns", body);
|
|
100
|
+
if (isJsonMode()) {
|
|
101
|
+
json(response);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const campaign = response.data;
|
|
105
|
+
success(`Campaign submitted for carrier review: ${campaign.id}`);
|
|
106
|
+
console.log();
|
|
107
|
+
keyValue([
|
|
108
|
+
["Brand", campaign.brandId],
|
|
109
|
+
["Use case", campaign.useCase],
|
|
110
|
+
["Status", colors.warning(campaign.status)],
|
|
111
|
+
]);
|
|
112
|
+
console.log();
|
|
113
|
+
console.log(colors.dim("Next steps:"));
|
|
114
|
+
console.log(` Check status: ${colors.code(`sendly 10dlc campaigns get ${campaign.id}`)}`);
|
|
115
|
+
console.log(` Once active: ${colors.code(`sendly 10dlc campaigns assign ${campaign.id} --number "+15551234567"`)}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzLzEwZGxjL2NhbXBhaWducy9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUNMLElBQUksRUFDSixPQUFPLEVBQ1AsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEdBQ1QsTUFBTSx3QkFBd0IsQ0FBQztBQWNoQyxNQUFNLFdBQVcsR0FBMkI7SUFDMUMsaUJBQWlCLEVBQUUsZUFBZTtJQUNsQyxrQkFBa0IsRUFBRSxnQkFBZ0I7SUFDcEMsZUFBZSxFQUFFLGNBQWM7SUFDL0IsZ0JBQWdCLEVBQUUsY0FBYztJQUNoQyxpQkFBaUIsRUFBRSxlQUFlO0lBQ2xDLGNBQWMsRUFBRSxhQUFhO0NBQzlCLENBQUM7QUFFRixNQUFNLENBQUMsT0FBTyxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQUNyRSxNQUFNLENBQUMsV0FBVyxHQUNoQixxRkFBcUYsQ0FBQztJQUV4RixNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLHlPQUF5TztRQUN6Tyw2TkFBNk47S0FDOU4sQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDbEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsNkJBQTZCO1lBQzFDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLFdBQVcsRUFBRSxrRUFBa0U7WUFDL0UsUUFBUSxFQUFFLElB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LENBQUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAganNvbixcbiAgc3VjY2VzcyxcbiAgY29sb3JzLFxuICBpc0pzb25Nb2RlLFxuICBrZXlWYWx1ZSxcbn0gZnJvbSBcIi4uLy4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIENhbXBhaWduIHtcbiAgaWQ6IHN0cmluZztcbiAgYnJhbmRJZDogc3RyaW5nO1xuICB1c2VDYXNlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNhbXBhaWduUmVzcG9uc2Uge1xuICBkYXRhOiBDYW1wYWlnbjtcbn1cblxuY29uc3QgVEVYVF9GSUVMRFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFwib3B0LWluLWtleXdvcmRzXCI6IFwib3B0SW5LZXl3b3Jkc1wiLFxuICBcIm9wdC1vdXQta2V5d29yZHNcIjogXCJvcHRPdXRLZXl3b3Jkc1wiLFxuICBcImhlbHAta2V5d29yZHNcIjogXCJoZWxwS2V5d29yZHNcIixcbiAgXCJvcHQtaW4tbWVzc2FnZVwiOiBcIm9wdEluTWVzc2FnZVwiLFxuICBcIm9wdC1vdXQtbWVzc2FnZVwiOiBcIm9wdE91dE1lc3NhZ2VcIixcbiAgXCJoZWxwLW1lc3NhZ2VcIjogXCJoZWxwTWVzc2FnZVwiLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVuZGxjQ2FtcGFpZ25zQ3JlYXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPVxuICAgIFwiQ3JlYXRlIGEgbWVzc2FnaW5nIGNhbXBhaWduIHVuZGVyIGEgdmVyaWZpZWQgYnJhbmQgYW5kIHN1Ym1pdCBpdCBmb3IgY2FycmllciByZXZpZXdcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IDEwZGxjIGNhbXBhaWducyBjcmVhdGUgLS1icmFuZCBicmRfeHh4IC0tdXNlLWNhc2UgTUlYRUQgLS1kZXNjcmlwdGlvbiBcIk9yZGVyIHVwZGF0ZXMgYW5kIHByb21vdGlvbnNcIiAtLW1lc3NhZ2UtZmxvdyBcIkN1c3RvbWVycyBvcHQgaW4gYXQgY2hlY2tvdXRcIiAtLXNhbXBsZSBcIllvdXIgb3JkZXIgaGFzIHNoaXBwZWQhXCIgLS1zYW1wbGUgXCIyMCUgb2ZmIHRoaXMgd2Vla2VuZFwiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gMTBkbGMgY2FtcGFpZ25zIGNyZWF0ZSAtLWJyYW5kIGJyZF94eHggLS11c2UtY2FzZSAyRkEgLS1kZXNjcmlwdGlvbiBcIkxvZ2luIGNvZGVzXCIgLS1tZXNzYWdlLWZsb3cgXCJVc2VycyByZXF1ZXN0IGEgY29kZSBhdCBzaWduLWluXCIgLS1zYW1wbGUgXCJZb3VyIGNvZGUgaXMge3tjb2RlfX1cIiAtLW9wdC1vdXQta2V5d29yZHMgXCJTVE9QLFVOU1VCU0NSSUJFXCInLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgYnJhbmQ6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkJyYW5kIElEIChtdXN0IGJlIHZlcmlmaWVkKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgXCJ1c2UtY2FzZVwiOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiVXNlLWNhc2UgY29kZSAoZS5nLiBNSVhFRCwgTUFSS0VUSU5HLCBBQ0NPVU5UX05PVElGSUNBVElPTiwgMkZBKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgZGVzY3JpcHRpb246IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIldoYXQgdGhpcyBjYW1wYWlnbiBzZW5kc1wiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgXCJtZXNzYWdlLWZsb3dcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkhvdyByZWNpcGllbnRzIG9wdCBpbiB0byByZWNlaXZlIG1lc3NhZ2VzXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgICBzYW1wbGU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInNcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNhbXBsZSBtZXNzYWdlIChyZXBlYXQgZm9yIHVwIHRvIDUgc2FtcGxlcylcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgXCJzdWItdXNlLWNhc2VcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlN1YiB1c2UtY2FzZSBjb2RlIChjYW4gc3BlY2lmeSBtdWx0aXBsZSlcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIH0pLFxuICAgIFwib3B0LWluLWtleXdvcmRzXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJDb21tYS1zZXBhcmF0ZWQgb3B0LWluIGtleXdvcmRzXCIsXG4gICAgfSksXG4gICAgXCJvcHQtb3V0LWtleXdvcmRzXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJDb21tYS1zZXBhcmF0ZWQgb3B0LW91dCBrZXl3b3Jkc1wiLFxuICAgIH0pLFxuICAgIFwiaGVscC1rZXl3b3Jkc1wiOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQ29tbWEtc2VwYXJhdGVkIGhlbHAga2V5d29yZHNcIixcbiAgICB9KSxcbiAgICBcIm9wdC1pbi1tZXNzYWdlXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXBseSBzZW50IG9uIG9wdC1pblwiLFxuICAgIH0pLFxuICAgIFwib3B0LW91dC1tZXNzYWdlXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXBseSBzZW50IG9uIG9wdC1vdXRcIixcbiAgICB9KSxcbiAgICBcImhlbHAtbWVzc2FnZVwiOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiUmVwbHkgc2VudCBvbiBhIGhlbHAga2V5d29yZFwiLFxuICAgIH0pLFxuICAgIFwiZW1iZWRkZWQtbGlua1wiOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk1lc3NhZ2VzIGluY2x1ZGUgbGlua3MgKGRlZmF1bHQgdHJ1ZTsgZGlzYWJsZSB3aXRoIC0tbm8tZW1iZWRkZWQtbGluaylcIixcbiAgICAgIGFsbG93Tm86IHRydWUsXG4gICAgfSksXG4gICAgXCJlbWJlZGRlZC1waG9uZVwiOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk1lc3NhZ2VzIGluY2x1ZGUgcGhvbmUgbnVtYmVycyAoZGVmYXVsdCBmYWxzZSlcIixcbiAgICAgIGFsbG93Tm86IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoVGVuZGxjQ2FtcGFpZ25zQ3JlYXRlKTtcblxuICAgIGNvbnN0IGJvZHk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgYnJhbmRJZDogZmxhZ3MuYnJhbmQsXG4gICAgICB1c2VDYXNlOiBmbGFnc1tcInVzZS1jYXNlXCJdLFxuICAgICAgZGVzY3JpcHRpb246IGZsYWdzLmRlc2NyaXB0aW9uLFxuICAgICAgbWVzc2FnZUZsb3c6IGZsYWdzW1wibWVzc2FnZS1mbG93XCJdLFxuICAgICAgc2FtcGxlTWVzc2FnZXM6IGZsYWdzLnNhbXBsZSxcbiAgICB9O1xuXG4gICAgaWYgKGZsYWdzW1wic3ViLXVzZS1jYXNlXCJdICYmIGZsYWdzW1wic3ViLXVzZS1jYXNlXCJdLmxlbmd0aCA+IDApIHtcbiAgICAgIGJvZHkuc3ViVXNlQ2FzZXMgPSBmbGFnc1tcInN1Yi11c2UtY2FzZVwiXTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBbZmxhZ0tleSwgd2lyZUtleV0gb2YgT2JqZWN0LmVudHJpZXMoVEVYVF9GSUVMRFMpKSB7XG4gICAgICBjb25zdCB2ID0gZmxhZ3NbZmxhZ0tleSBhcyBrZXlvZiB0eXBlb2YgZmxhZ3NdO1xuICAgICAgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiICYmIHYubGVuZ3RoID4gMCkgYm9keVt3aXJlS2V5XSA9IHY7XG4gICAgfVxuICAgIGlmIChmbGFnc1tcImVtYmVkZGVkLWxpbmtcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYm9keS5lbWJlZGRlZExpbmsgPSBmbGFnc1tcImVtYmVkZGVkLWxpbmtcIl07XG4gICAgfVxuICAgIGlmIChmbGFnc1tcImVtYmVkZGVkLXBob25lXCJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJvZHkuZW1iZWRkZWRQaG9uZSA9IGZsYWdzW1wiZW1iZWRkZWQtcGhvbmVcIl07XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxDcmVhdGVDYW1wYWlnblJlc3BvbnNlPihcbiAgICAgIFwiL2FwaS92MS90ZW5kbGMvY2FtcGFpZ25zXCIsXG4gICAgICBib2R5LFxuICAgICk7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjYW1wYWlnbiA9IHJlc3BvbnNlLmRhdGE7XG5cbiAgICBzdWNjZXNzKGBDYW1wYWlnbiBzdWJtaXR0ZWQgZm9yIGNhcnJpZXIgcmV2aWV3OiAke2NhbXBhaWduLmlkfWApO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICBrZXlWYWx1ZShbXG4gICAgICBbXCJCcmFuZFwiLCBjYW1wYWlnbi5icmFuZElkXSxcbiAgICAgIFtcIlVzZSBjYXNlXCIsIGNhbXBhaWduLnVzZUNhc2VdLFxuICAgICAgW1wiU3RhdHVzXCIsIGNvbG9ycy53YXJuaW5nKGNhbXBhaWduLnN0YXR1cyldLFxuICAgIF0pO1xuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiTmV4dCBzdGVwczpcIikpO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCAgQ2hlY2sgc3RhdHVzOiAke2NvbG9ycy5jb2RlKGBzZW5kbHkgMTBkbGMgY2FtcGFpZ25zIGdldCAke2NhbXBhaWduLmlkfWApfWAsXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGAgIE9uY2UgYWN0aXZlOiAgJHtjb2xvcnMuY29kZShgc2VuZGx5IDEwZGxjIGNhbXBhaWducyBhc3NpZ24gJHtjYW1wYWlnbi5pZH0gLS1udW1iZXIgXCIrMTU1NTEyMzQ1NjdcImApfWAsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class TendlcCampaignsGet extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
id: 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
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../../lib/api-client.js";
|
|
4
|
+
import { json, colors, formatStatus, isJsonMode, keyValue, } from "../../../lib/output.js";
|
|
5
|
+
function formatCampaignStatus(status) {
|
|
6
|
+
switch (status) {
|
|
7
|
+
case "suspended":
|
|
8
|
+
return colors.warning(status);
|
|
9
|
+
case "expired":
|
|
10
|
+
return colors.dim(status);
|
|
11
|
+
default:
|
|
12
|
+
return formatStatus(status);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export default class TendlcCampaignsGet extends AuthenticatedCommand {
|
|
16
|
+
static description = "Get campaign details with the latest carrier-review status (run again to refresh)";
|
|
17
|
+
static examples = [
|
|
18
|
+
"<%= config.bin %> 10dlc campaigns get cmp_xxx",
|
|
19
|
+
"<%= config.bin %> 10dlc campaigns get cmp_xxx --json",
|
|
20
|
+
];
|
|
21
|
+
static args = {
|
|
22
|
+
id: Args.string({
|
|
23
|
+
description: "Campaign ID",
|
|
24
|
+
required: true,
|
|
25
|
+
}),
|
|
26
|
+
};
|
|
27
|
+
static flags = {
|
|
28
|
+
...AuthenticatedCommand.baseFlags,
|
|
29
|
+
};
|
|
30
|
+
async run() {
|
|
31
|
+
const { args } = await this.parse(TendlcCampaignsGet);
|
|
32
|
+
const response = await apiClient.get(`/api/v1/tendlc/campaigns/${args.id}`);
|
|
33
|
+
if (isJsonMode()) {
|
|
34
|
+
json(response);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const campaign = response.data;
|
|
38
|
+
console.log();
|
|
39
|
+
console.log(colors.bold(`Campaign: ${campaign.useCase}`));
|
|
40
|
+
console.log();
|
|
41
|
+
keyValue([
|
|
42
|
+
["ID", campaign.id],
|
|
43
|
+
["Brand", campaign.brandId],
|
|
44
|
+
["Status", formatCampaignStatus(campaign.status)],
|
|
45
|
+
...(campaign.subUseCases.length > 0
|
|
46
|
+
? [["Sub use cases", campaign.subUseCases.join(", ")]]
|
|
47
|
+
: []),
|
|
48
|
+
...(campaign.throughput
|
|
49
|
+
? [
|
|
50
|
+
["Throughput tier", campaign.throughput.tier],
|
|
51
|
+
[
|
|
52
|
+
"Carriers ready",
|
|
53
|
+
String(campaign.throughput.carriersReady),
|
|
54
|
+
],
|
|
55
|
+
]
|
|
56
|
+
: []),
|
|
57
|
+
["Created", new Date(campaign.createdAt).toLocaleString()],
|
|
58
|
+
["Updated", new Date(campaign.updatedAt).toLocaleString()],
|
|
59
|
+
]);
|
|
60
|
+
if (campaign.description) {
|
|
61
|
+
console.log();
|
|
62
|
+
console.log(colors.dim("Description:"));
|
|
63
|
+
console.log(` ${campaign.description}`);
|
|
64
|
+
}
|
|
65
|
+
if (campaign.sampleMessages.length > 0) {
|
|
66
|
+
console.log();
|
|
67
|
+
console.log(colors.dim("Sample messages:"));
|
|
68
|
+
campaign.sampleMessages.forEach((m) => console.log(` - ${m}`));
|
|
69
|
+
}
|
|
70
|
+
if (campaign.failureReasons && campaign.failureReasons.length > 0) {
|
|
71
|
+
console.log();
|
|
72
|
+
console.log(colors.error("Failure reasons:"));
|
|
73
|
+
campaign.failureReasons.forEach((r) => console.log(` - ${r}`));
|
|
74
|
+
}
|
|
75
|
+
console.log();
|
|
76
|
+
if (campaign.status === "pending") {
|
|
77
|
+
console.log(colors.dim("Carrier review is in progress — run this command again to refresh."));
|
|
78
|
+
}
|
|
79
|
+
else if (campaign.status === "active") {
|
|
80
|
+
console.log(colors.dim(`Assign a number with: sendly 10dlc campaigns assign ${campaign.id} --number "+15551234567"`));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzLzEwZGxjL2NhbXBhaWducy9nZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUNMLElBQUksRUFDSixNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFDVixRQUFRLEdBQ1QsTUFBTSx3QkFBd0IsQ0FBQztBQXVCaEMsU0FBUyxvQkFBb0IsQ0FBQyxNQUFjO0lBQzFDLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLFdBQVc7WUFDZCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsS0FBSyxTQUFTO1lBQ1osT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCO1lBQ0UsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsT0FBTyxPQUFPLGtCQUFtQixTQUFRLG9CQUFvQjtJQUNsRSxNQUFNLENBQUMsV0FBVyxHQUNoQixtRkFBbUYsQ0FBQztJQUV0RixNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLCtDQUErQztRQUMvQyxzREFBc0Q7S0FDdkQsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNkLFdBQVcsRUFBRSxhQUFhO1lBQzFCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tB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WUFDOUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQ1Isb0VBQW9FLENBQ3JFLENBQ0YsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUNSLHVEQUF1RCxRQUFRLENBQUMsRUFBRSwwQkFBMEIsQ0FDN0YsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIGpzb24sXG4gIGNvbG9ycyxcbiAgZm9ybWF0U3RhdHVzLFxuICBpc0pzb25Nb2RlLFxuICBrZXlWYWx1ZSxcbn0gZnJvbSBcIi4uLy4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIENhbXBhaWduIHtcbiAgaWQ6IHN0cmluZztcbiAgYnJhbmRJZDogc3RyaW5nO1xuICB1c2VDYXNlOiBzdHJpbmc7XG4gIHN1YlVzZUNhc2VzOiBzdHJpbmdbXTtcbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gIHN0YXR1czogc3RyaW5nO1xuICBzYW1wbGVNZXNzYWdlczogc3RyaW5nW107XG4gIHRocm91Z2hwdXQ6IHtcbiAgICB0aWVyOiBzdHJpbmc7XG4gICAgY2FycmllcnNSZWFkeTogbnVtYmVyO1xuICB9IHwgbnVsbDtcbiAgZmFpbHVyZVJlYXNvbnM6IHN0cmluZ1tdIHwgbnVsbDtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgR2V0Q2FtcGFpZ25SZXNwb25zZSB7XG4gIGRhdGE6IENhbXBhaWduO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRDYW1wYWlnblN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBcInN1c3BlbmRlZFwiOlxuICAgICAgcmV0dXJuIGNvbG9ycy53YXJuaW5nKHN0YXR1cyk7XG4gICAgY2FzZSBcImV4cGlyZWRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMuZGltKHN0YXR1cyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXRTdGF0dXMoc3RhdHVzKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW5kbGNDYW1wYWlnbnNHZXQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJHZXQgY2FtcGFpZ24gZGV0YWlscyB3aXRoIHRoZSBsYXRlc3QgY2Fycmllci1yZXZpZXcgc3RhdHVzIChydW4gYWdhaW4gdG8gcmVmcmVzaClcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiAxMGRsYyBjYW1wYWlnbnMgZ2V0IGNtcF94eHhcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IDEwZGxjIGNhbXBhaWducyBnZXQgY21wX3h4eCAtLWpzb25cIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBpZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQ2FtcGFpZ24gSURcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShUZW5kbGNDYW1wYWlnbnNHZXQpO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PEdldENhbXBhaWduUmVzcG9uc2U+KFxuICAgICAgYC9hcGkvdjEvdGVuZGxjL2NhbXBhaWducy8ke2FyZ3MuaWR9YCxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY2FtcGFpZ24gPSByZXNwb25zZS5kYXRhO1xuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChgQ2FtcGFpZ246ICR7Y2FtcGFpZ24udXNlQ2FzZX1gKSk7XG4gICAgY29uc29sZS5sb2coKTtcblxuICAgIGtleVZhbHVlKFtcbiAgICAgIFtcIklEXCIsIGNhbXBhaWduLmlkXSxcbiAgICAgIFtcIkJyYW5kXCIsIGNhbXBhaWduLmJyYW5kSWRdLFxuICAgICAgW1wiU3RhdHVzXCIsIGZvcm1hdENhbXBhaWduU3RhdHVzKGNhbXBhaWduLnN0YXR1cyldLFxuICAgICAgLi4uKGNhbXBhaWduLnN1YlVzZUNhc2VzLmxlbmd0aCA+IDBcbiAgICAgICAgPyBbW1wiU3ViIHVzZSBjYXNlc1wiLCBjYW1wYWlnbi5zdWJVc2VDYXNlcy5qb2luKFwiLCBcIildIGFzIFtzdHJpbmcsIHN0cmluZ11dXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKGNhbXBhaWduLnRocm91Z2hwdXRcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBbXCJUaHJvdWdocHV0IHRpZXJcIiwgY2FtcGFpZ24udGhyb3VnaHB1dC50aWVyXSBhcyBbc3RyaW5nLCBzdHJpbmddLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcIkNhcnJpZXJzIHJlYWR5XCIsXG4gICAgICAgICAgICAgIFN0cmluZyhjYW1wYWlnbi50aHJvdWdocHV0LmNhcnJpZXJzUmVhZHkpLFxuICAgICAgICAgICAgXSBhcyBbc3RyaW5nLCBzdHJpbmddLFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgICBbXCJDcmVhdGVkXCIsIG5ldyBEYXRlKGNhbXBhaWduLmNyZWF0ZWRBdCkudG9Mb2NhbGVTdHJpbmcoKV0sXG4gICAgICBbXCJVcGRhdGVkXCIsIG5ldyBEYXRlKGNhbXBhaWduLnVwZGF0ZWRBdCkudG9Mb2NhbGVTdHJpbmcoKV0sXG4gICAgXSk7XG5cbiAgICBpZiAoY2FtcGFpZ24uZGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiRGVzY3JpcHRpb246XCIpKTtcbiAgICAgIGNvbnNvbGUubG9nKGAgICR7Y2FtcGFpZ24uZGVzY3JpcHRpb259YCk7XG4gICAgfVxuXG4gICAgaWYgKGNhbXBhaWduLnNhbXBsZU1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiU2FtcGxlIG1lc3NhZ2VzOlwiKSk7XG4gICAgICBjYW1wYWlnbi5zYW1wbGVNZXNzYWdlcy5mb3JFYWNoKChtKSA9PiBjb25zb2xlLmxvZyhgICAtICR7bX1gKSk7XG4gICAgfVxuXG4gICAgaWYgKGNhbXBhaWduLmZhaWx1cmVSZWFzb25zICYmIGNhbXBhaWduLmZhaWx1cmVSZWFzb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZXJyb3IoXCJGYWlsdXJlIHJlYXNvbnM6XCIpKTtcbiAgICAgIGNhbXBhaWduLmZhaWx1cmVSZWFzb25zLmZvckVhY2goKHIpID0+IGNvbnNvbGUubG9nKGAgIC0gJHtyfWApKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGlmIChjYW1wYWlnbi5zdGF0dXMgPT09IFwicGVuZGluZ1wiKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICBcIkNhcnJpZXIgcmV2aWV3IGlzIGluIHByb2dyZXNzIOKAlCBydW4gdGhpcyBjb21tYW5kIGFnYWluIHRvIHJlZnJlc2guXCIsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoY2FtcGFpZ24uc3RhdHVzID09PSBcImFjdGl2ZVwiKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICBgQXNzaWduIGEgbnVtYmVyIHdpdGg6IHNlbmRseSAxMGRsYyBjYW1wYWlnbnMgYXNzaWduICR7Y2FtcGFpZ24uaWR9IC0tbnVtYmVyIFwiKzE1NTUxMjM0NTY3XCJgLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class TendlcCampaignsList extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
7
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
import { apiClient } from "../../../lib/api-client.js";
|
|
3
|
+
import { table, json, info, formatStatus, formatRelativeTime, colors, isJsonMode, } from "../../../lib/output.js";
|
|
4
|
+
function formatCampaignStatus(status) {
|
|
5
|
+
switch (status) {
|
|
6
|
+
case "suspended":
|
|
7
|
+
return colors.warning(status);
|
|
8
|
+
case "expired":
|
|
9
|
+
return colors.dim(status);
|
|
10
|
+
default:
|
|
11
|
+
return formatStatus(status);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export default class TendlcCampaignsList extends AuthenticatedCommand {
|
|
15
|
+
static description = "List the messaging campaigns registered for carrier review";
|
|
16
|
+
static examples = [
|
|
17
|
+
"<%= config.bin %> 10dlc campaigns list",
|
|
18
|
+
"<%= config.bin %> 10dlc campaigns list --json",
|
|
19
|
+
];
|
|
20
|
+
static flags = {
|
|
21
|
+
...AuthenticatedCommand.baseFlags,
|
|
22
|
+
};
|
|
23
|
+
async run() {
|
|
24
|
+
await this.parse(TendlcCampaignsList);
|
|
25
|
+
const response = await apiClient.get("/api/v1/tendlc/campaigns");
|
|
26
|
+
if (isJsonMode()) {
|
|
27
|
+
json(response);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (!response.data || response.data.length === 0) {
|
|
31
|
+
info("No campaigns yet. Create one with: sendly 10dlc campaigns create --brand <brandId> ...");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
console.log();
|
|
35
|
+
console.log(colors.dim(`Showing ${response.data.length} campaigns`));
|
|
36
|
+
console.log();
|
|
37
|
+
table(response.data, [
|
|
38
|
+
{
|
|
39
|
+
header: "ID",
|
|
40
|
+
key: "id",
|
|
41
|
+
width: 38,
|
|
42
|
+
formatter: (v) => colors.dim(String(v)),
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
header: "Use case",
|
|
46
|
+
key: "useCase",
|
|
47
|
+
width: 22,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
header: "Status",
|
|
51
|
+
key: "status",
|
|
52
|
+
width: 11,
|
|
53
|
+
formatter: (v) => formatCampaignStatus(String(v)),
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
header: "Throughput",
|
|
57
|
+
key: "throughput",
|
|
58
|
+
width: 13,
|
|
59
|
+
formatter: (v) => v ? v.tier : "-",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
header: "Created",
|
|
63
|
+
key: "createdAt",
|
|
64
|
+
width: 12,
|
|
65
|
+
formatter: (v) => formatRelativeTime(String(v)),
|
|
66
|
+
},
|
|
67
|
+
]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tYW5kcy8xMGRsYy9jYW1wYWlnbnMvbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUNMLEtBQUssRUFDTCxJQUFJLEVBQ0osSUFBSSxFQUNKLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLFVBQVUsR0FDWCxNQUFNLHdCQUF3QixDQUFDO0FBdUJoQyxTQUFTLG9CQUFvQixDQUFDLE1BQWM7SUFDMUMsUUFBUSxNQUFNLEVBQUUsQ0FBQztRQUNmLEtBQUssV0FBVztZQUNkLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxLQUFLLFNBQVM7WUFDWixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUI7WUFDRSxPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sbUJBQW9CLFNBQVEsb0JBQW9CO0lBQ25FLE1BQU0sQ0FBQyxXQUFXLEdBQUcsNERBQTRELENBQUM7SUFFbEYsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQix3Q0FBd0M7UUFDeEMsK0NBQStDO0tBQ2hELENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXRDLE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FDbEMsMEJBQTBCLENBQzNCLENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQ0Ysd0ZBQXdGLENBQ3pGLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVkLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ25CO2dCQUNFLE1BQU0sRUFBRSxJQUFJO2dCQUNaLEdBQUcsRUFBRSxJQUFJO2dCQUNULEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDeEM7WUFDRDtnQkFDRSxNQUFNLEVBQUUsVUFBVTtnQkFDbEIsR0FBRyxFQUFFLFNBQVM7Z0JBQ2QsS0FBSyxFQUFFLEVBQUU7YUFDVjtZQUNEO2dCQUNFLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixHQUFHLEVBQUUsUUFBUTtnQkFDYixLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNsRDtZQUNEO2dCQUNFLE1BQU0sRUFBRSxZQUFZO2dCQUNwQixHQUFHLEVBQUUsWUFBWTtnQkFDakIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDZixDQUFDLENBQUMsQ0FBQyxDQUFFLENBQTZCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO2FBQ2hEO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLEdBQUcsRUFBRSxXQUFXO2dCQUNoQixLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoRDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHRhYmxlLFxuICBqc29uLFxuICBpbmZvLFxuICBmb3JtYXRTdGF0dXMsXG4gIGZvcm1hdFJlbGF0aXZlVGltZSxcbiAgY29sb3JzLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgQ2FtcGFpZ24ge1xuICBpZDogc3RyaW5nO1xuICBicmFuZElkOiBzdHJpbmc7XG4gIHVzZUNhc2U6IHN0cmluZztcbiAgc3ViVXNlQ2FzZXM6IHN0cmluZ1tdO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHNhbXBsZU1lc3NhZ2VzOiBzdHJpbmdbXTtcbiAgdGhyb3VnaHB1dDoge1xuICAgIHRpZXI6IHN0cmluZztcbiAgICBjYXJyaWVyc1JlYWR5OiBudW1iZXI7XG4gIH0gfCBudWxsO1xuICBmYWlsdXJlUmVhc29uczogc3RyaW5nW10gfCBudWxsO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBMaXN0Q2FtcGFpZ25zUmVzcG9uc2Uge1xuICBkYXRhOiBDYW1wYWlnbltdO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRDYW1wYWlnblN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBcInN1c3BlbmRlZFwiOlxuICAgICAgcmV0dXJuIGNvbG9ycy53YXJuaW5nKHN0YXR1cyk7XG4gICAgY2FzZSBcImV4cGlyZWRcIjpcbiAgICAgIHJldHVybiBjb2xvcnMuZGltKHN0YXR1cyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXRTdGF0dXMoc3RhdHVzKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW5kbGNDYW1wYWlnbnNMaXN0IGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkxpc3QgdGhlIG1lc3NhZ2luZyBjYW1wYWlnbnMgcmVnaXN0ZXJlZCBmb3IgY2FycmllciByZXZpZXdcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiAxMGRsYyBjYW1wYWlnbnMgbGlzdFwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gMTBkbGMgY2FtcGFpZ25zIGxpc3QgLS1qc29uXCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5wYXJzZShUZW5kbGNDYW1wYWlnbnNMaXN0KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LmdldDxMaXN0Q2FtcGFpZ25zUmVzcG9uc2U+KFxuICAgICAgXCIvYXBpL3YxL3RlbmRsYy9jYW1wYWlnbnNcIixcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFyZXNwb25zZS5kYXRhIHx8IHJlc3BvbnNlLmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICBpbmZvKFxuICAgICAgICBcIk5vIGNhbXBhaWducyB5ZXQuIENyZWF0ZSBvbmUgd2l0aDogc2VuZGx5IDEwZGxjIGNhbXBhaWducyBjcmVhdGUgLS1icmFuZCA8YnJhbmRJZD4gLi4uXCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmRpbShgU2hvd2luZyAke3Jlc3BvbnNlLmRhdGEubGVuZ3RofSBjYW1wYWlnbnNgKSk7XG4gICAgY29uc29sZS5sb2coKTtcblxuICAgIHRhYmxlKHJlc3BvbnNlLmRhdGEsIFtcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIklEXCIsXG4gICAgICAgIGtleTogXCJpZFwiLFxuICAgICAgICB3aWR0aDogMzgsXG4gICAgICAgIGZvcm1hdHRlcjogKHYpID0+IGNvbG9ycy5kaW0oU3RyaW5nKHYpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJVc2UgY2FzZVwiLFxuICAgICAgICBrZXk6IFwidXNlQ2FzZVwiLFxuICAgICAgICB3aWR0aDogMjIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiU3RhdHVzXCIsXG4gICAgICAgIGtleTogXCJzdGF0dXNcIixcbiAgICAgICAgd2lkdGg6IDExLFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PiBmb3JtYXRDYW1wYWlnblN0YXR1cyhTdHJpbmcodikpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyOiBcIlRocm91Z2hwdXRcIixcbiAgICAgICAga2V5OiBcInRocm91Z2hwdXRcIixcbiAgICAgICAgd2lkdGg6IDEzLFxuICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PlxuICAgICAgICAgIHYgPyAodiBhcyBDYW1wYWlnbltcInRocm91Z2hwdXRcIl0pIS50aWVyIDogXCItXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiQ3JlYXRlZFwiLFxuICAgICAgICBrZXk6IFwiY3JlYXRlZEF0XCIsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT4gZm9ybWF0UmVsYXRpdmVUaW1lKFN0cmluZyh2KSksXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TendlcQualify extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
brand: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
usecase: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { json, success, warn, colors, isJsonMode, keyValue, } from "../../lib/output.js";
|
|
5
|
+
export default class TendlcQualify extends AuthenticatedCommand {
|
|
6
|
+
static description = "Check whether a use case qualifies for a brand on the carrier network before creating a campaign";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> 10dlc qualify brd_xxx MIXED",
|
|
9
|
+
"<%= config.bin %> 10dlc qualify brd_xxx MARKETING --json",
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
brand: Args.string({
|
|
13
|
+
description: "Brand ID",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
usecase: Args.string({
|
|
17
|
+
description: "Use-case code (e.g. MIXED, MARKETING, ACCOUNT_NOTIFICATION, 2FA)",
|
|
18
|
+
required: true,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
static flags = {
|
|
22
|
+
...AuthenticatedCommand.baseFlags,
|
|
23
|
+
};
|
|
24
|
+
async run() {
|
|
25
|
+
const { args } = await this.parse(TendlcQualify);
|
|
26
|
+
const response = await apiClient.get(`/api/v1/tendlc/brands/${args.brand}/qualify/${encodeURIComponent(args.usecase)}`);
|
|
27
|
+
if (isJsonMode()) {
|
|
28
|
+
json(response);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const result = response.data;
|
|
32
|
+
if (result.qualified) {
|
|
33
|
+
success(`${result.useCase} qualifies for this brand`);
|
|
34
|
+
if (result.throughput) {
|
|
35
|
+
console.log();
|
|
36
|
+
keyValue([
|
|
37
|
+
["Throughput tier", result.throughput.tier],
|
|
38
|
+
["Carriers ready", String(result.throughput.carriersReady)],
|
|
39
|
+
]);
|
|
40
|
+
}
|
|
41
|
+
console.log();
|
|
42
|
+
console.log(colors.dim(`Create a campaign with: sendly 10dlc campaigns create --brand ${args.brand} --use-case ${result.useCase} ...`));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
warn(`${result.useCase} does not qualify for this brand`);
|
|
46
|
+
if (result.reason) {
|
|
47
|
+
console.log(` ${colors.dim("reason:")} ${result.reason}`);
|
|
48
|
+
}
|
|
49
|
+
console.log();
|
|
50
|
+
console.log(colors.dim("Try another use case, e.g.: sendly 10dlc qualify " +
|
|
51
|
+
args.brand +
|
|
52
|
+
" MIXED"));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGlmeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy8xMGRsYy9xdWFsaWZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxJQUFJLEVBQ0osT0FBTyxFQUNQLElBQUksRUFDSixNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsR0FDVCxNQUFNLHFCQUFxQixDQUFDO0FBZ0I3QixNQUFNLENBQUMsT0FBTyxPQUFPLGFBQWMsU0FBUSxvQkFBb0I7SUFDN0QsTUFBTSxDQUFDLFdBQVcsR0FDaEIsa0dBQWtHLENBQUM7SUFFckcsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiwrQ0FBK0M7UUFDL0MsMERBQTBEO0tBQzNELENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUFFLFVBQVU7WUFDdkIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDbkIsV0FBVyxFQUFFLGtFQUFrRTtZQUMvRSxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztLQUNsQyxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWpELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FDbEMseUJBQXlCLElBQUksQ0FBQyxLQUFLLFlBQVksa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ2xGLENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBRTdCLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLDJCQUEyQixDQUFDLENBQUM7WUFDdEQsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZCxRQUFRLENBQUM7b0JBQ1AsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDM0MsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDNUQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FDUixpRUFBaUUsSUFBSSxDQUFDLEtBQUssZUFBZSxNQUFNLENBQUMsT0FBTyxNQUFNLENBQy9HLENBQ0YsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sa0NBQWtDLENBQUMsQ0FBQztZQUMxRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtREFBbUQ7Z0JBQzVELElBQUksQ0FBQyxLQUFLO2dCQUNWLFFBQVEsQ0FBQyxDQUNaLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAganNvbixcbiAgc3VjY2VzcyxcbiAgd2FybixcbiAgY29sb3JzLFxuICBpc0pzb25Nb2RlLFxuICBrZXlWYWx1ZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFF1YWxpZnlSZXN1bHQge1xuICB1c2VDYXNlOiBzdHJpbmc7XG4gIHF1YWxpZmllZDogYm9vbGVhbjtcbiAgcmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICB0aHJvdWdocHV0OiB7XG4gICAgdGllcjogc3RyaW5nO1xuICAgIGNhcnJpZXJzUmVhZHk6IG51bWJlcjtcbiAgfSB8IG51bGw7XG59XG5cbmludGVyZmFjZSBRdWFsaWZ5UmVzcG9uc2Uge1xuICBkYXRhOiBRdWFsaWZ5UmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW5kbGNRdWFsaWZ5IGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPVxuICAgIFwiQ2hlY2sgd2hldGhlciBhIHVzZSBjYXNlIHF1YWxpZmllcyBmb3IgYSBicmFuZCBvbiB0aGUgY2FycmllciBuZXR3b3JrIGJlZm9yZSBjcmVhdGluZyBhIGNhbXBhaWduXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gMTBkbGMgcXVhbGlmeSBicmRfeHh4IE1JWEVEXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiAxMGRsYyBxdWFsaWZ5IGJyZF94eHggTUFSS0VUSU5HIC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGJyYW5kOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJCcmFuZCBJRFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgdXNlY2FzZTogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiVXNlLWNhc2UgY29kZSAoZS5nLiBNSVhFRCwgTUFSS0VUSU5HLCBBQ0NPVU5UX05PVElGSUNBVElPTiwgMkZBKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFRlbmRsY1F1YWxpZnkpO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PFF1YWxpZnlSZXNwb25zZT4oXG4gICAgICBgL2FwaS92MS90ZW5kbGMvYnJhbmRzLyR7YXJncy5icmFuZH0vcXVhbGlmeS8ke2VuY29kZVVSSUNvbXBvbmVudChhcmdzLnVzZWNhc2UpfWAsXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLmRhdGE7XG5cbiAgICBpZiAocmVzdWx0LnF1YWxpZmllZCkge1xuICAgICAgc3VjY2VzcyhgJHtyZXN1bHQudXNlQ2FzZX0gcXVhbGlmaWVzIGZvciB0aGlzIGJyYW5kYCk7XG4gICAgICBpZiAocmVzdWx0LnRocm91Z2hwdXQpIHtcbiAgICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgICAga2V5VmFsdWUoW1xuICAgICAgICAgIFtcIlRocm91Z2hwdXQgdGllclwiLCByZXN1bHQudGhyb3VnaHB1dC50aWVyXSxcbiAgICAgICAgICBbXCJDYXJyaWVycyByZWFkeVwiLCBTdHJpbmcocmVzdWx0LnRocm91Z2hwdXQuY2FycmllcnNSZWFkeSldLFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICBgQ3JlYXRlIGEgY2FtcGFpZ24gd2l0aDogc2VuZGx5IDEwZGxjIGNhbXBhaWducyBjcmVhdGUgLS1icmFuZCAke2FyZ3MuYnJhbmR9IC0tdXNlLWNhc2UgJHtyZXN1bHQudXNlQ2FzZX0gLi4uYCxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhcm4oYCR7cmVzdWx0LnVzZUNhc2V9IGRvZXMgbm90IHF1YWxpZnkgZm9yIHRoaXMgYnJhbmRgKTtcbiAgICAgIGlmIChyZXN1bHQucmVhc29uKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y29sb3JzLmRpbShcInJlYXNvbjpcIil9ICR7cmVzdWx0LnJlYXNvbn1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLmRpbShcIlRyeSBhbm90aGVyIHVzZSBjYXNlLCBlLmcuOiBzZW5kbHkgMTBkbGMgcXVhbGlmeSBcIiArXG4gICAgICAgICAgYXJncy5icmFuZCArXG4gICAgICAgICAgXCIgTUlYRURcIiksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class BusinessUpgradeCancel 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
|
+
yes: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
8
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
9
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
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, info, isJsonMode } from "../../lib/output.js";
|
|
5
|
+
export default class BusinessUpgradeCancel extends AuthenticatedCommand {
|
|
6
|
+
static description = "Cancel a pending business entity upgrade. Releases the reserved toll-free number, deletes the new messaging profile + EIN document. Current toll-free number unaffected. Idempotent.";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> business-upgrade cancel --workspace ws_abc",
|
|
9
|
+
"<%= config.bin %> business-upgrade cancel --workspace ws_abc --yes",
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
...AuthenticatedCommand.baseFlags,
|
|
13
|
+
workspace: Flags.string({ required: true }),
|
|
14
|
+
yes: Flags.boolean({
|
|
15
|
+
char: "y",
|
|
16
|
+
description: "Skip the confirmation prompt",
|
|
17
|
+
default: false,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
async run() {
|
|
21
|
+
const { flags } = await this.parse(BusinessUpgradeCancel);
|
|
22
|
+
if (!flags.yes && !flags.json) {
|
|
23
|
+
// Best-effort prompt — oclif's readline-based confirm. Skip if --yes.
|
|
24
|
+
info(`About to cancel the pending upgrade for workspace ${flags.workspace}.`);
|
|
25
|
+
const { default: inquirer } = await import("@inquirer/confirm").catch(() => ({
|
|
26
|
+
default: undefined,
|
|
27
|
+
}));
|
|
28
|
+
if (inquirer) {
|
|
29
|
+
const ok = await inquirer({
|
|
30
|
+
message: "Continue?",
|
|
31
|
+
default: false,
|
|
32
|
+
});
|
|
33
|
+
if (!ok) {
|
|
34
|
+
info("Cancelled — no changes made.");
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const result = await apiClient.post(`/api/v1/workspaces/${encodeURIComponent(flags.workspace)}/upgrade/cancel`, {});
|
|
40
|
+
if (isJsonMode()) {
|
|
41
|
+
json(result);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
success(result.message);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2J1c2luZXNzLXVwZ3JhZGUvY2FuY2VsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxNQUFNLENBQUMsT0FBTyxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQUNyRSxNQUFNLENBQUMsV0FBVyxHQUNoQixzTEFBc0wsQ0FBQztJQUV6TCxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDhEQUE4RDtRQUM5RCxvRUFBb0U7S0FDckUsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsU0FBUyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDM0MsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsOEJBQThCO1lBQzNDLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QixzRUFBc0U7WUFDdEUsSUFBSSxDQUFDLHFEQUFxRCxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUM5RSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzNFLE9BQU8sRUFBRSxTQUFTO2FBQ25CLENBQUMsQ0FBQyxDQUFDO1lBQ0osSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixNQUFNLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FBQztvQkFDeEIsT0FBTyxFQUFFLFdBQVc7b0JBQ3BCLE9BQU8sRUFBRSxLQUFLO2lCQUNmLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ1IsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7b0JBQ3JDLE9BQU87Z0JBQ1QsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUloQyxzQkFBc0Isa0JBQWtCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2IsT0FBTztRQUNULENBQUM7UUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBqc29uLCBzdWNjZXNzLCBpbmZvLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVzaW5lc3NVcGdyYWRlQ2FuY2VsIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPVxuICAgIFwiQ2FuY2VsIGEgcGVuZGluZyBidXNpbmVzcyBlbnRpdHkgdXBncmFkZS4gUmVsZWFzZXMgdGhlIHJlc2VydmVkIHRvbGwtZnJlZSBudW1iZXIsIGRlbGV0ZXMgdGhlIG5ldyBtZXNzYWdpbmcgcHJvZmlsZSArIEVJTiBkb2N1bWVudC4gQ3VycmVudCB0b2xsLWZyZWUgbnVtYmVyIHVuYWZmZWN0ZWQuIElkZW1wb3RlbnQuXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gYnVzaW5lc3MtdXBncmFkZSBjYW5jZWwgLS13b3Jrc3BhY2Ugd3NfYWJjXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBidXNpbmVzcy11cGdyYWRlIGNhbmNlbCAtLXdvcmtzcGFjZSB3c19hYmMgLS15ZXNcIixcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHdvcmtzcGFjZTogRmxhZ3Muc3RyaW5nKHsgcmVxdWlyZWQ6IHRydWUgfSksXG4gICAgeWVzOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGNoYXI6IFwieVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiU2tpcCB0aGUgY29uZmlybWF0aW9uIHByb21wdFwiLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoQnVzaW5lc3NVcGdyYWRlQ2FuY2VsKTtcbiAgICBpZiAoIWZsYWdzLnllcyAmJiAhZmxhZ3MuanNvbikge1xuICAgICAgLy8gQmVzdC1lZmZvcnQgcHJvbXB0IOKAlCBvY2xpZidzIHJlYWRsaW5lLWJhc2VkIGNvbmZpcm0uIFNraXAgaWYgLS15ZXMuXG4gICAgICBpbmZvKGBBYm91dCB0byBjYW5jZWwgdGhlIHBlbmRpbmcgdXBncmFkZSBmb3Igd29ya3NwYWNlICR7ZmxhZ3Mud29ya3NwYWNlfS5gKTtcbiAgICAgIGNvbnN0IHsgZGVmYXVsdDogaW5xdWlyZXIgfSA9IGF3YWl0IGltcG9ydChcIkBpbnF1aXJlci9jb25maXJtXCIpLmNhdGNoKCgpID0+ICh7XG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0pKTtcbiAgICAgIGlmIChpbnF1aXJlcikge1xuICAgICAgICBjb25zdCBvayA9IGF3YWl0IGlucXVpcmVyKHtcbiAgICAgICAgICBtZXNzYWdlOiBcIkNvbnRpbnVlP1wiLFxuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgIGluZm8oXCJDYW5jZWxsZWQg4oCUIG5vIGNoYW5nZXMgbWFkZS5cIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PHtcbiAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgICBjYW5jZWxsZWQ6IGJvb2xlYW47XG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfT4oYC9hcGkvdjEvd29ya3NwYWNlcy8ke2VuY29kZVVSSUNvbXBvbmVudChmbGFncy53b3Jrc3BhY2UpfS91cGdyYWRlL2NhbmNlbGAsIHt9KTtcbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKHJlc3VsdCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN1Y2Nlc3MocmVzdWx0Lm1lc3NhZ2UpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class BusinessUpgradeDisposition 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
|
+
disposition: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
"target-workspace": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
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
|
+
}
|