@sendly/cli 3.36.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 (43) 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/keys/rotate.js +7 -12
  21. package/dist/commands/links/create.d.ts +24 -0
  22. package/dist/commands/links/create.js +71 -0
  23. package/dist/commands/links/disable.d.ts +21 -0
  24. package/dist/commands/links/disable.js +55 -0
  25. package/dist/commands/links/list.d.ts +19 -0
  26. package/dist/commands/links/list.js +85 -0
  27. package/dist/commands/numbers/buy.js +15 -1
  28. package/dist/commands/numbers/get.d.ts +20 -0
  29. package/dist/commands/numbers/get.js +52 -0
  30. package/dist/commands/numbers/list.js +18 -1
  31. package/dist/commands/numbers/release.d.ts +23 -0
  32. package/dist/commands/numbers/release.js +67 -0
  33. package/dist/commands/numbers/update.d.ts +25 -0
  34. package/dist/commands/numbers/update.js +70 -0
  35. package/dist/commands/sms/group.d.ts +25 -0
  36. package/dist/commands/sms/group.js +164 -0
  37. package/dist/commands/sms/upload-media.d.ts +1 -1
  38. package/dist/commands/sms/upload-media.js +4 -4
  39. package/dist/commands/templates/enhance.js +3 -3
  40. package/dist/commands/upgrade.d.ts +1 -16
  41. package/dist/commands/upgrade.js +131 -38
  42. package/oclif.manifest.json +3964 -2966
  43. package/package.json +16 -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
@@ -20,7 +20,7 @@ export default class KeysRotate extends AuthenticatedCommand {
20
20
  ...AuthenticatedCommand.baseFlags,
21
21
  "grace-period": Flags.integer({
22
22
  char: "g",
23
- description: "Hours to keep old key active (0 = immediate revocation)",
23
+ description: "Hours to keep the old key active during rotation (24-168, default 24)",
24
24
  }),
25
25
  yes: Flags.boolean({
26
26
  char: "y",
@@ -51,24 +51,19 @@ export default class KeysRotate extends AuthenticatedCommand {
51
51
  }
52
52
  const response = await apiClient.post(`/api/v1/account/keys/${args.keyId}/rotate`, body);
53
53
  if (isJsonMode()) {
54
- json({
55
- success: true,
56
- newKeyId: response.newKey.id,
57
- key: response.key,
58
- oldKeyExpiresAt: response.oldKeyExpiresAt,
59
- });
54
+ json(response);
60
55
  return;
61
56
  }
62
57
  success("API key rotated", {
63
58
  "New Key ID": response.newKey.id,
64
- "New Key": colors.highlight(response.key),
59
+ "New Key": colors.highlight(response.newKey.key),
65
60
  Name: response.newKey.name,
66
- ...(response.oldKeyExpiresAt && {
67
- "Old Key Expires": new Date(response.oldKeyExpiresAt).toLocaleString(),
61
+ ...(response.oldKey?.expiresAt && {
62
+ "Old Key Expires": new Date(response.oldKey.expiresAt).toLocaleString(),
68
63
  }),
69
64
  });
70
65
  this.log("");
71
- this.log(colors.warning("Save this key - it won't be shown again!"));
66
+ this.log(colors.warning(response.newKey.warning || "Save this key - it won't be shown again!"));
72
67
  }
73
68
  catch (err) {
74
69
  if (err.message?.includes("not_found") || err.message?.includes("404")) {
@@ -79,4 +74,4 @@ export default class KeysRotate extends AuthenticatedCommand {
79
74
  }
80
75
  }
81
76
  }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2tleXMvcm90YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxNQUFNLENBQUMsT0FBTyxPQUFPLFVBQVcsU0FBUSxvQkFBb0I7SUFDMUQsTUFBTSxDQUFDLFdBQVcsR0FBRyxzRUFBc0UsQ0FBQztJQUU1RixNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDBDQUEwQztRQUMxQyw0REFBNEQ7UUFDNUQsZ0RBQWdEO0tBQ2pELENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUFFLHFDQUFxQztZQUNsRCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxjQUFjLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM1QixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSx5REFBeUQ7U0FDdkUsQ0FBQztRQUNGLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLDBCQUEwQjtZQUN2QyxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2YsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDeEM7b0JBQ0UsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsT0FBTyxFQUFFLG1DQUFtQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0NBQWdDO29CQUNuRyxPQUFPLEVBQUUsS0FBSztpQkFDZjthQUNGLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDYixLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDNUIsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQXdCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUlsQyx3QkFBd0IsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXRELElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDO29CQUNILE9BQU8sRUFBRSxJQUFJO29CQUNiLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQzVCLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRztvQkFDakIsZUFBZSxFQUFFLFFBQVEsQ0FBQyxlQUFlO2lCQUMxQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTztZQUNULENBQUM7WUFFRCxPQUFPLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ3pCLFlBQVksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2hDLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQzFCLEdBQUcsQ0FBQyxRQUFRLENBQUMsZUFBZSxJQUFJO29CQUM5QixpQkFBaUIsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsY0FBYyxFQUFFO2lCQUN2RSxDQUFDO2FBQ0gsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2RSxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztZQUNELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBzdWNjZXNzLCBlcnJvciwganNvbiwgY29sb3JzLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCBpbnF1aXJlciBmcm9tIFwiaW5xdWlyZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgS2V5c1JvdGF0ZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJSb3RhdGUgYW4gQVBJIGtleSAoZ2VuZXJhdGUgbmV3IGtleSwgb3B0aW9uYWxseSBrZWVwIG9sZCBvbmUgYWN0aXZlKVwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGtleXMgcm90YXRlIGtleV9hYmMxMjNcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGtleXMgcm90YXRlIGtleV9hYmMxMjMgLS1ncmFjZS1wZXJpb2QgMjRcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IGtleXMgcm90YXRlIGtleV9hYmMxMjMgLS15ZXNcIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBrZXlJZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiS2V5IElEIHRvIHJvdGF0ZSAoZS5nLiwga2V5X2FiYzEyMylcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgXCJncmFjZS1wZXJpb2RcIjogRmxhZ3MuaW50ZWdlcih7XG4gICAgICBjaGFyOiBcImdcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkhvdXJzIHRvIGtlZXAgb2xkIGtleSBhY3RpdmUgKDAgPSBpbW1lZGlhdGUgcmV2b2NhdGlvbilcIixcbiAgICB9KSxcbiAgICB5ZXM6IEZsYWdzLmJvb2xlYW4oe1xuICAgICAgY2hhcjogXCJ5XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTa2lwIGNvbmZpcm1hdGlvbiBwcm9tcHRcIixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGFyZ3MsIGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEtleXNSb3RhdGUpO1xuXG4gICAgaWYgKCFmbGFncy55ZXMpIHtcbiAgICAgIGNvbnN0IHsgY29uZmlybSB9ID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxuICAgICAgICAgIG5hbWU6IFwiY29uZmlybVwiLFxuICAgICAgICAgIG1lc3NhZ2U6IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcm90YXRlICR7Y29sb3JzLmNvZGUoYXJncy5rZXlJZCl9PyBBIG5ldyBrZXkgd2lsbCBiZSBnZW5lcmF0ZWQuYCxcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuXG4gICAgICBpZiAoIWNvbmZpcm0pIHtcbiAgICAgICAgZXJyb3IoXCJSb3RhdGlvbiBjYW5jZWxsZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgaWYgKGZsYWdzW1wiZ3JhY2UtcGVyaW9kXCJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYm9keS5ncmFjZVBlcmlvZEhvdXJzID0gZmxhZ3NbXCJncmFjZS1wZXJpb2RcIl07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8e1xuICAgICAgICBuZXdLZXk6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBjcmVhdGVkQXQ6IHN0cmluZyB9O1xuICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgb2xkS2V5RXhwaXJlc0F0Pzogc3RyaW5nO1xuICAgICAgfT4oYC9hcGkvdjEvYWNjb3VudC9rZXlzLyR7YXJncy5rZXlJZH0vcm90YXRlYCwgYm9keSk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbih7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBuZXdLZXlJZDogcmVzcG9uc2UubmV3S2V5LmlkLFxuICAgICAgICAgIGtleTogcmVzcG9uc2Uua2V5LFxuICAgICAgICAgIG9sZEtleUV4cGlyZXNBdDogcmVzcG9uc2Uub2xkS2V5RXhwaXJlc0F0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzdWNjZXNzKFwiQVBJIGtleSByb3RhdGVkXCIsIHtcbiAgICAgICAgXCJOZXcgS2V5IElEXCI6IHJlc3BvbnNlLm5ld0tleS5pZCxcbiAgICAgICAgXCJOZXcgS2V5XCI6IGNvbG9ycy5oaWdobGlnaHQocmVzcG9uc2Uua2V5KSxcbiAgICAgICAgTmFtZTogcmVzcG9uc2UubmV3S2V5Lm5hbWUsXG4gICAgICAgIC4uLihyZXNwb25zZS5vbGRLZXlFeHBpcmVzQXQgJiYge1xuICAgICAgICAgIFwiT2xkIEtleSBFeHBpcmVzXCI6IG5ldyBEYXRlKHJlc3BvbnNlLm9sZEtleUV4cGlyZXNBdCkudG9Mb2NhbGVTdHJpbmcoKSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5sb2coXCJcIik7XG4gICAgICB0aGlzLmxvZyhjb2xvcnMud2FybmluZyhcIlNhdmUgdGhpcyBrZXkgLSBpdCB3b24ndCBiZSBzaG93biBhZ2FpbiFcIikpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyLm1lc3NhZ2U/LmluY2x1ZGVzKFwibm90X2ZvdW5kXCIpIHx8IGVyci5tZXNzYWdlPy5pbmNsdWRlcyhcIjQwNFwiKSkge1xuICAgICAgICBlcnJvcihgS2V5IG5vdCBmb3VuZDogJHthcmdzLmtleUlkfWApO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG59XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2tleXMvcm90YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQXNCaEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxVQUFXLFNBQVEsb0JBQW9CO0lBQzFELE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0VBQXNFLENBQUM7SUFFNUYsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiwwQ0FBMEM7UUFDMUMsNERBQTREO1FBQzVELGdEQUFnRDtLQUNqRCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsY0FBYyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDNUIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQ1QsdUVBQXVFO1NBQzFFLENBQUM7UUFDRixHQUFHLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSwwQkFBMEI7WUFDdkMsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO0tBQ0gsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNmLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hDO29CQUNFLElBQUksRUFBRSxTQUFTO29CQUNmLElBQUksRUFBRSxTQUFTO29CQUNmLE9BQU8sRUFBRSxtQ0FBbUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdDQUFnQztvQkFDbkcsT0FBTyxFQUFFLEtBQUs7aUJBQ2Y7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQzVCLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxHQUF3QixFQUFFLENBQUM7WUFDckMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkMsd0JBQXdCLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFDM0MsSUFBSSxDQUNMLENBQUM7WUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDZixPQUFPO1lBQ1QsQ0FBQztZQUVELE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtnQkFDekIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDaEMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQ2hELElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQzFCLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSTtvQkFDaEMsaUJBQWlCLEVBQUUsSUFBSSxJQUFJLENBQ3pCLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUMxQixDQUFDLGNBQWMsRUFBRTtpQkFDbkIsQ0FBQzthQUNILENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDYixJQUFJLENBQUMsR0FBRyxDQUNOLE1BQU0sQ0FBQyxPQUFPLENBQ1osUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksMENBQTBDLENBQ3RFLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkUsS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLENBQUM7WUFDRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncywgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsgc3VjY2VzcywgZXJyb3IsIGpzb24sIGNvbG9ycywgaXNKc29uTW9kZSB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5pbXBvcnQgaW5xdWlyZXIgZnJvbSBcImlucXVpcmVyXCI7XG5cbmludGVyZmFjZSBSb3RhdGVSZXNwb25zZSB7XG4gIG5ld0tleToge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHR5cGU/OiBcInRlc3RcIiB8IFwibGl2ZVwiO1xuICAgIHNjb3Blcz86IHN0cmluZ1tdO1xuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gICAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAvLyBUaGUgcmF3IGBza1/igKZgIHNlY3JldCDigJQgc2hvd24gb25seSBvbiB0aGlzIHJlc3BvbnNlLCBuZXZlciBhZ2Fpbi5cbiAgICBrZXk6IHN0cmluZztcbiAgICB3YXJuaW5nOiBzdHJpbmc7XG4gIH07XG4gIG9sZEtleToge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbDtcbiAgfTtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBLZXlzUm90YXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlJvdGF0ZSBhbiBBUEkga2V5IChnZW5lcmF0ZSBuZXcga2V5LCBvcHRpb25hbGx5IGtlZXAgb2xkIG9uZSBhY3RpdmUpXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4ga2V5cyByb3RhdGUga2V5X2FiYzEyM1wiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4ga2V5cyByb3RhdGUga2V5X2FiYzEyMyAtLWdyYWNlLXBlcmlvZCAyNFwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4ga2V5cyByb3RhdGUga2V5X2FiYzEyMyAtLXllc1wiLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGtleUlkOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJLZXkgSUQgdG8gcm90YXRlIChlLmcuLCBrZXlfYWJjMTIzKVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBcImdyYWNlLXBlcmlvZFwiOiBGbGFncy5pbnRlZ2VyKHtcbiAgICAgIGNoYXI6IFwiZ1wiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiSG91cnMgdG8ga2VlcCB0aGUgb2xkIGtleSBhY3RpdmUgZHVyaW5nIHJvdGF0aW9uICgyNC0xNjgsIGRlZmF1bHQgMjQpXCIsXG4gICAgfSksXG4gICAgeWVzOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGNoYXI6IFwieVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiU2tpcCBjb25maXJtYXRpb24gcHJvbXB0XCIsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShLZXlzUm90YXRlKTtcblxuICAgIGlmICghZmxhZ3MueWVzKSB7XG4gICAgICBjb25zdCB7IGNvbmZpcm0gfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImNvbmZpcm1cIixcbiAgICAgICAgICBuYW1lOiBcImNvbmZpcm1cIixcbiAgICAgICAgICBtZXNzYWdlOiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJvdGF0ZSAke2NvbG9ycy5jb2RlKGFyZ3Mua2V5SWQpfT8gQSBuZXcga2V5IHdpbGwgYmUgZ2VuZXJhdGVkLmAsXG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgICAgaWYgKCFjb25maXJtKSB7XG4gICAgICAgIGVycm9yKFwiUm90YXRpb24gY2FuY2VsbGVkXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJvZHk6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgIGlmIChmbGFnc1tcImdyYWNlLXBlcmlvZFwiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJvZHkuZ3JhY2VQZXJpb2RIb3VycyA9IGZsYWdzW1wiZ3JhY2UtcGVyaW9kXCJdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PFJvdGF0ZVJlc3BvbnNlPihcbiAgICAgICAgYC9hcGkvdjEvYWNjb3VudC9rZXlzLyR7YXJncy5rZXlJZH0vcm90YXRlYCxcbiAgICAgICAgYm9keSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3VjY2VzcyhcIkFQSSBrZXkgcm90YXRlZFwiLCB7XG4gICAgICAgIFwiTmV3IEtleSBJRFwiOiByZXNwb25zZS5uZXdLZXkuaWQsXG4gICAgICAgIFwiTmV3IEtleVwiOiBjb2xvcnMuaGlnaGxpZ2h0KHJlc3BvbnNlLm5ld0tleS5rZXkpLFxuICAgICAgICBOYW1lOiByZXNwb25zZS5uZXdLZXkubmFtZSxcbiAgICAgICAgLi4uKHJlc3BvbnNlLm9sZEtleT8uZXhwaXJlc0F0ICYmIHtcbiAgICAgICAgICBcIk9sZCBLZXkgRXhwaXJlc1wiOiBuZXcgRGF0ZShcbiAgICAgICAgICAgIHJlc3BvbnNlLm9sZEtleS5leHBpcmVzQXQsXG4gICAgICAgICAgKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmxvZyhcIlwiKTtcbiAgICAgIHRoaXMubG9nKFxuICAgICAgICBjb2xvcnMud2FybmluZyhcbiAgICAgICAgICByZXNwb25zZS5uZXdLZXkud2FybmluZyB8fCBcIlNhdmUgdGhpcyBrZXkgLSBpdCB3b24ndCBiZSBzaG93biBhZ2FpbiFcIixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZT8uaW5jbHVkZXMoXCJub3RfZm91bmRcIikgfHwgZXJyLm1lc3NhZ2U/LmluY2x1ZGVzKFwiNDA0XCIpKSB7XG4gICAgICAgIGVycm9yKGBLZXkgbm90IGZvdW5kOiAke2FyZ3Mua2V5SWR9YCk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==