@instantkom/cli 3.129.2 → 3.131.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 (162) hide show
  1. package/README.md +29 -0
  2. package/bin/run.js +0 -0
  3. package/dist/api-client.js +28 -5
  4. package/dist/command-helpers/download.d.ts +10 -0
  5. package/dist/command-helpers/download.js +10 -0
  6. package/dist/command-helpers/json.d.ts +4 -0
  7. package/dist/command-helpers/json.js +37 -0
  8. package/dist/commands/account/get.d.ts +14 -0
  9. package/dist/commands/account/get.js +14 -0
  10. package/dist/commands/account/update.d.ts +23 -0
  11. package/dist/commands/account/update.js +37 -0
  12. package/dist/commands/auth/login.js +0 -2
  13. package/dist/commands/auth/logout.js +0 -2
  14. package/dist/commands/auth/tokens/create.js +0 -2
  15. package/dist/commands/auth/tokens/list.js +0 -2
  16. package/dist/commands/auth/tokens/revoke.js +0 -2
  17. package/dist/commands/bots/env-vars/create.d.ts +1 -1
  18. package/dist/commands/bots/env-vars/create.js +18 -11
  19. package/dist/commands/bots/filters/create.d.ts +5 -5
  20. package/dist/commands/bots/filters/create.js +33 -18
  21. package/dist/commands/broadcast/delete.d.ts +20 -0
  22. package/dist/commands/broadcast/delete.js +18 -0
  23. package/dist/commands/broadcast/get.d.ts +20 -0
  24. package/dist/commands/broadcast/get.js +18 -0
  25. package/dist/commands/broadcast/list.d.ts +21 -0
  26. package/dist/commands/broadcast/list.js +39 -0
  27. package/dist/commands/broadcast/send.d.ts +20 -0
  28. package/dist/commands/broadcast/send.js +18 -0
  29. package/dist/commands/broadcast/status.d.ts +20 -0
  30. package/dist/commands/broadcast/status.js +31 -0
  31. package/dist/commands/broadcast/update.d.ts +30 -0
  32. package/dist/commands/broadcast/update.js +47 -0
  33. package/dist/commands/chats/get.d.ts +20 -0
  34. package/dist/commands/chats/get.js +18 -0
  35. package/dist/commands/chats/list.d.ts +22 -0
  36. package/dist/commands/chats/list.js +40 -0
  37. package/dist/commands/config/get.js +0 -2
  38. package/dist/commands/config/set.js +0 -2
  39. package/dist/commands/config/unset.js +0 -2
  40. package/dist/commands/contacts/custom-fields/delete-value.d.ts +24 -0
  41. package/dist/commands/contacts/custom-fields/delete-value.js +32 -0
  42. package/dist/commands/contacts/custom-fields/list.d.ts +20 -0
  43. package/dist/commands/contacts/custom-fields/list.js +24 -0
  44. package/dist/commands/contacts/custom-fields/set-value.d.ts +25 -0
  45. package/dist/commands/contacts/custom-fields/set-value.js +32 -0
  46. package/dist/commands/contacts/custom-fields/set.d.ts +23 -0
  47. package/dist/commands/contacts/custom-fields/set.js +42 -0
  48. package/dist/commands/contacts/tags/add.d.ts +24 -0
  49. package/dist/commands/contacts/tags/add.js +30 -0
  50. package/dist/commands/contacts/tags/list.d.ts +20 -0
  51. package/dist/commands/contacts/tags/list.js +24 -0
  52. package/dist/commands/contacts/tags/remove.d.ts +24 -0
  53. package/dist/commands/contacts/tags/remove.js +32 -0
  54. package/dist/commands/custom-fields/bulk-delete.d.ts +15 -0
  55. package/dist/commands/custom-fields/bulk-delete.js +24 -0
  56. package/dist/commands/custom-fields/create.d.ts +21 -0
  57. package/dist/commands/custom-fields/create.js +47 -0
  58. package/dist/commands/custom-fields/delete.d.ts +20 -0
  59. package/dist/commands/custom-fields/delete.js +18 -0
  60. package/dist/commands/custom-fields/get.d.ts +20 -0
  61. package/dist/commands/custom-fields/get.js +18 -0
  62. package/dist/commands/custom-fields/list.d.ts +14 -0
  63. package/dist/commands/custom-fields/list.js +14 -0
  64. package/dist/commands/custom-fields/reorder.d.ts +15 -0
  65. package/dist/commands/custom-fields/reorder.js +22 -0
  66. package/dist/commands/custom-fields/update.d.ts +27 -0
  67. package/dist/commands/custom-fields/update.js +52 -0
  68. package/dist/commands/doctor.d.ts +14 -0
  69. package/dist/commands/doctor.js +56 -0
  70. package/dist/commands/features.d.ts +14 -0
  71. package/dist/commands/features.js +19 -0
  72. package/dist/commands/messages/bulk-spam.d.ts +16 -0
  73. package/dist/commands/messages/bulk-spam.js +30 -0
  74. package/dist/commands/messages/create-ticket.d.ts +23 -0
  75. package/dist/commands/messages/create-ticket.js +28 -0
  76. package/dist/commands/messages/delete.d.ts +20 -0
  77. package/dist/commands/messages/delete.js +18 -0
  78. package/dist/commands/messages/get.d.ts +20 -0
  79. package/dist/commands/messages/get.js +18 -0
  80. package/dist/commands/messages/list.d.ts +22 -0
  81. package/dist/commands/messages/list.js +35 -0
  82. package/dist/commands/messages/reactions.d.ts +20 -0
  83. package/dist/commands/messages/reactions.js +18 -0
  84. package/dist/commands/messages/spam.d.ts +21 -0
  85. package/dist/commands/messages/spam.js +27 -0
  86. package/dist/commands/messages/unread-count.d.ts +14 -0
  87. package/dist/commands/messages/unread-count.js +14 -0
  88. package/dist/commands/messages/update.d.ts +27 -0
  89. package/dist/commands/messages/update.js +43 -0
  90. package/dist/commands/permissions.d.ts +14 -0
  91. package/dist/commands/permissions.js +14 -0
  92. package/dist/commands/segments/create.d.ts +21 -0
  93. package/dist/commands/segments/create.js +33 -0
  94. package/dist/commands/segments/delete.d.ts +20 -0
  95. package/dist/commands/segments/delete.js +18 -0
  96. package/dist/commands/segments/get.d.ts +20 -0
  97. package/dist/commands/segments/get.js +18 -0
  98. package/dist/commands/segments/list.d.ts +20 -0
  99. package/dist/commands/segments/list.js +34 -0
  100. package/dist/commands/segments/tags/add.d.ts +24 -0
  101. package/dist/commands/segments/tags/add.js +21 -0
  102. package/dist/commands/segments/tags/list.d.ts +20 -0
  103. package/dist/commands/segments/tags/list.js +18 -0
  104. package/dist/commands/segments/tags/remove.d.ts +24 -0
  105. package/dist/commands/segments/tags/remove.js +23 -0
  106. package/dist/commands/segments/update.d.ts +26 -0
  107. package/dist/commands/segments/update.js +34 -0
  108. package/dist/commands/tags/create.d.ts +19 -0
  109. package/dist/commands/tags/create.js +29 -0
  110. package/dist/commands/tags/delete.d.ts +20 -0
  111. package/dist/commands/tags/delete.js +16 -0
  112. package/dist/commands/tags/export.d.ts +15 -0
  113. package/dist/commands/tags/export.js +27 -0
  114. package/dist/commands/tags/get.d.ts +20 -0
  115. package/dist/commands/tags/get.js +16 -0
  116. package/dist/commands/tags/import.d.ts +16 -0
  117. package/dist/commands/tags/import.js +29 -0
  118. package/dist/commands/tags/list.d.ts +18 -0
  119. package/dist/commands/tags/list.js +27 -0
  120. package/dist/commands/tags/recipients/add.d.ts +21 -0
  121. package/dist/commands/tags/recipients/add.js +27 -0
  122. package/dist/commands/tags/recipients/remove.d.ts +21 -0
  123. package/dist/commands/tags/recipients/remove.js +27 -0
  124. package/dist/commands/tags/update.d.ts +25 -0
  125. package/dist/commands/tags/update.js +30 -0
  126. package/dist/commands/tags/validate-import.d.ts +15 -0
  127. package/dist/commands/tags/validate-import.js +21 -0
  128. package/dist/commands/team/create.d.ts +23 -0
  129. package/dist/commands/team/create.js +37 -0
  130. package/dist/commands/team/delete.d.ts +20 -0
  131. package/dist/commands/team/delete.js +18 -0
  132. package/dist/commands/team/list.d.ts +14 -0
  133. package/dist/commands/team/list.js +14 -0
  134. package/dist/commands/templates/create.d.ts +24 -0
  135. package/dist/commands/templates/create.js +63 -0
  136. package/dist/commands/templates/delete.d.ts +20 -0
  137. package/dist/commands/templates/delete.js +18 -0
  138. package/dist/commands/templates/export.d.ts +16 -0
  139. package/dist/commands/templates/export.js +29 -0
  140. package/dist/commands/templates/import.d.ts +17 -0
  141. package/dist/commands/templates/import.js +34 -0
  142. package/dist/commands/templates/update.d.ts +30 -0
  143. package/dist/commands/templates/update.js +61 -0
  144. package/dist/commands/templates/validate-import.d.ts +16 -0
  145. package/dist/commands/templates/validate-import.js +28 -0
  146. package/dist/commands/tickets/reply.d.ts +22 -0
  147. package/dist/commands/tickets/reply.js +36 -0
  148. package/dist/commands/tickets/update.d.ts +2 -0
  149. package/dist/commands/tickets/update.js +16 -0
  150. package/dist/commands/webhooks/events.d.ts +14 -0
  151. package/dist/commands/webhooks/events.js +18 -0
  152. package/dist/commands/webhooks/logs.d.ts +14 -0
  153. package/dist/commands/webhooks/logs.js +11 -0
  154. package/dist/commands/webhooks/test.d.ts +17 -0
  155. package/dist/commands/webhooks/test.js +27 -0
  156. package/dist/commands/whoami.js +0 -2
  157. package/dist/crud/csv.js +2 -1
  158. package/dist/errors/api-error.d.ts +1 -1
  159. package/dist/errors/exit-codes.js +1 -0
  160. package/npm-shrinkwrap.json +2 -2
  161. package/oclif.manifest.json +8672 -1602
  162. package/package.json +38 -5
@@ -0,0 +1,28 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { mergeData, parseDataFlag } from '../../crud/data.js';
4
+ import { createCliApiClient } from '../../send/api.js';
5
+ export default class MessagesCreateTicket extends BaseCommand {
6
+ static description = 'Create a ticket from a message';
7
+ static args = {
8
+ id: Args.integer({ description: 'Message ID', required: true }),
9
+ };
10
+ static flags = {
11
+ ...BaseCommand.baseFlags,
12
+ subject: Flags.string({ description: 'Ticket subject' }),
13
+ priority: Flags.string({ description: 'Ticket priority' }),
14
+ data: Flags.string({ description: 'Additional JSON object payload' }),
15
+ };
16
+ async run() {
17
+ const { args, flags } = await this.parse(MessagesCreateTicket);
18
+ this.flags = flags;
19
+ const payload = mergeData(parseDataFlag(flags.data), {
20
+ subject: flags.subject,
21
+ priority: flags.priority,
22
+ });
23
+ const client = await createCliApiClient(flags);
24
+ const response = await client.post(`/v1/messages/${args.id}/create-ticket`, payload);
25
+ if (!flags.quiet)
26
+ this.log(this.toFormatted(response));
27
+ }
28
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class MessagesDelete extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<number, {
6
+ max?: number;
7
+ min?: number;
8
+ }>;
9
+ };
10
+ static flags: {
11
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,18 @@
1
+ import { Args } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { createCliApiClient } from '../../send/api.js';
4
+ export default class MessagesDelete extends BaseCommand {
5
+ static description = 'Delete message';
6
+ static args = {
7
+ id: Args.integer({ description: 'message ID', required: true }),
8
+ };
9
+ static flags = { ...BaseCommand.baseFlags };
10
+ async run() {
11
+ const { args, flags } = await this.parse(MessagesDelete);
12
+ this.flags = flags;
13
+ const client = await createCliApiClient(flags);
14
+ await client.delete(`/v1/messages/${args.id}`);
15
+ if (!flags.quiet)
16
+ this.log(this.toFormatted({ deleted: true, id: args.id }));
17
+ }
18
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class MessagesGet extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<number, {
6
+ max?: number;
7
+ min?: number;
8
+ }>;
9
+ };
10
+ static flags: {
11
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,18 @@
1
+ import { Args } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { createCliApiClient } from '../../send/api.js';
4
+ export default class MessagesGet extends BaseCommand {
5
+ static description = 'Get message by ID';
6
+ static args = {
7
+ id: Args.integer({ description: 'message ID', required: true }),
8
+ };
9
+ static flags = { ...BaseCommand.baseFlags };
10
+ async run() {
11
+ const { args, flags } = await this.parse(MessagesGet);
12
+ this.flags = flags;
13
+ const client = await createCliApiClient(flags);
14
+ const response = await client.get(`/v1/messages/${args.id}`);
15
+ if (!flags.quiet)
16
+ this.log(this.toFormatted(response));
17
+ }
18
+ }
@@ -0,0 +1,22 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class MessagesList extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ page: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
6
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
7
+ channel: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ recipient: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ direction: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ search: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ spam: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
15
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
19
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ };
21
+ run(): Promise<void>;
22
+ }
@@ -0,0 +1,35 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { cleanQuery } from '../../crud/data.js';
4
+ import { createCliApiClient } from '../../send/api.js';
5
+ export default class MessagesList extends BaseCommand {
6
+ static description = 'List messages';
7
+ static flags = {
8
+ ...BaseCommand.baseFlags,
9
+ page: Flags.integer({ description: 'Page number', default: 1 }),
10
+ limit: Flags.integer({ description: 'Items per page', default: 20 }),
11
+ channel: Flags.integer({ description: 'Filter by channel ID' }),
12
+ recipient: Flags.integer({ description: 'Filter by recipient ID' }),
13
+ direction: Flags.string({ description: 'Direction', options: ['s', 'r'] }),
14
+ type: Flags.string({ description: 'Message type' }),
15
+ search: Flags.string({ description: 'Search messages' }),
16
+ spam: Flags.boolean({ description: 'Filter spam messages' }),
17
+ };
18
+ async run() {
19
+ const { flags } = await this.parse(MessagesList);
20
+ this.flags = flags;
21
+ const client = await createCliApiClient(flags);
22
+ const response = await client.get('/v1/messages', cleanQuery({
23
+ page: flags.page,
24
+ limit: flags.limit,
25
+ channelId: flags.channel,
26
+ recipientId: flags.recipient,
27
+ direction: flags.direction,
28
+ messageType: flags.type,
29
+ search: flags.search,
30
+ spam: flags.spam,
31
+ }));
32
+ if (!flags.quiet)
33
+ this.log(this.toFormatted(response));
34
+ }
35
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class MessagesReactions extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<number, {
6
+ max?: number;
7
+ min?: number;
8
+ }>;
9
+ };
10
+ static flags: {
11
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,18 @@
1
+ import { Args } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { createCliApiClient } from '../../send/api.js';
4
+ export default class MessagesReactions extends BaseCommand {
5
+ static description = 'Get reactions to a message';
6
+ static args = {
7
+ id: Args.integer({ description: 'Message ID', required: true }),
8
+ };
9
+ static flags = { ...BaseCommand.baseFlags };
10
+ async run() {
11
+ const { args, flags } = await this.parse(MessagesReactions);
12
+ this.flags = flags;
13
+ const client = await createCliApiClient(flags);
14
+ const response = await client.get(`/v1/messages/${args.id}/reactions`);
15
+ if (!flags.quiet)
16
+ this.log(this.toFormatted(response));
17
+ }
18
+ }
@@ -0,0 +1,21 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class MessagesSpam extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<number, {
6
+ max?: number;
7
+ min?: number;
8
+ }>;
9
+ };
10
+ static flags: {
11
+ spam: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
18
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ };
20
+ run(): Promise<void>;
21
+ }
@@ -0,0 +1,27 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { createCliApiClient } from '../../send/api.js';
4
+ export default class MessagesSpam extends BaseCommand {
5
+ static description = 'Mark or unmark a message as spam';
6
+ static args = {
7
+ id: Args.integer({ description: 'Message ID', required: true }),
8
+ };
9
+ static flags = {
10
+ ...BaseCommand.baseFlags,
11
+ spam: Flags.boolean({
12
+ description: 'Mark as spam',
13
+ default: true,
14
+ allowNo: true,
15
+ }),
16
+ };
17
+ async run() {
18
+ const { args, flags } = await this.parse(MessagesSpam);
19
+ this.flags = flags;
20
+ const client = await createCliApiClient(flags);
21
+ const response = await client.put(`/v1/messages/${args.id}/spam`, {
22
+ isSpam: flags.spam,
23
+ });
24
+ if (!flags.quiet)
25
+ this.log(this.toFormatted(response));
26
+ }
27
+ }
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class MessagesUnreadCount extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ import { createCliApiClient } from '../../send/api.js';
3
+ export default class MessagesUnreadCount extends BaseCommand {
4
+ static description = 'Get unread inbox message count';
5
+ static flags = { ...BaseCommand.baseFlags };
6
+ async run() {
7
+ const { flags } = await this.parse(MessagesUnreadCount);
8
+ this.flags = flags;
9
+ const client = await createCliApiClient(flags);
10
+ const response = await client.get('/v1/messages/inbox/unread-count');
11
+ if (!flags.quiet)
12
+ this.log(this.toFormatted(response));
13
+ }
14
+ }
@@ -0,0 +1,27 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class MessagesUpdate extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<number, {
6
+ max?: number;
7
+ min?: number;
8
+ }>;
9
+ };
10
+ static flags: {
11
+ message: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'scheduled-at': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ hidden: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ locked: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ buttons: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ 'header-footer': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ data: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
20
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
21
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
23
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
24
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
25
+ };
26
+ run(): Promise<void>;
27
+ }
@@ -0,0 +1,43 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { mergeData, parseDataFlag } from '../../crud/data.js';
4
+ import { parseJsonValue } from '../../command-helpers/json.js';
5
+ import { createCliApiClient } from '../../send/api.js';
6
+ export default class MessagesUpdate extends BaseCommand {
7
+ static description = 'Update a message';
8
+ static args = {
9
+ id: Args.integer({ description: 'Message ID', required: true }),
10
+ };
11
+ static flags = {
12
+ ...BaseCommand.baseFlags,
13
+ message: Flags.string({ description: 'Message content' }),
14
+ 'scheduled-at': Flags.integer({
15
+ description: 'Unix timestamp for scheduled send',
16
+ }),
17
+ hidden: Flags.boolean({ description: 'Hide message', allowNo: true }),
18
+ locked: Flags.boolean({ description: 'Lock message', allowNo: true }),
19
+ buttons: Flags.string({ description: 'Buttons JSON array' }),
20
+ 'header-footer': Flags.string({ description: 'Header/footer JSON object' }),
21
+ data: Flags.string({ description: 'Additional JSON object payload' }),
22
+ };
23
+ async run() {
24
+ const { args, flags } = await this.parse(MessagesUpdate);
25
+ this.flags = flags;
26
+ const payload = mergeData(parseDataFlag(flags.data), {
27
+ message: flags.message,
28
+ scheduledAt: flags['scheduled-at'],
29
+ isHidden: flags.hidden,
30
+ isLocked: flags.locked,
31
+ buttons: flags.buttons
32
+ ? parseJsonValue(flags.buttons, '--buttons')
33
+ : undefined,
34
+ headerFooter: flags['header-footer']
35
+ ? parseJsonValue(flags['header-footer'], '--header-footer')
36
+ : undefined,
37
+ });
38
+ const client = await createCliApiClient(flags);
39
+ const response = await client.put(`/v1/messages/${args.id}`, payload);
40
+ if (!flags.quiet)
41
+ this.log(this.toFormatted(response));
42
+ }
43
+ }
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../base-command.js';
2
+ export default class Permissions extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../base-command.js';
2
+ import { createCliApiClient } from '../send/api.js';
3
+ export default class Permissions extends BaseCommand {
4
+ static description = 'Show current API token permission context';
5
+ static flags = { ...BaseCommand.baseFlags };
6
+ async run() {
7
+ const { flags } = await this.parse(Permissions);
8
+ this.flags = flags;
9
+ const client = await createCliApiClient(flags);
10
+ const user = await client.get('/v1/users/me');
11
+ if (!flags.quiet)
12
+ this.log(this.toFormatted(user));
13
+ }
14
+ }
@@ -0,0 +1,21 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class SegmentsCreate extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ channel: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
6
+ name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ color: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ tags: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ folder: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ data: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
18
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ };
20
+ run(): Promise<void>;
21
+ }
@@ -0,0 +1,33 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { mergeData, parseDataFlag } from '../../crud/data.js';
4
+ import { createCliApiClient } from '../../send/api.js';
5
+ export default class SegmentsCreate extends BaseCommand {
6
+ static description = 'Create a segment';
7
+ static flags = {
8
+ ...BaseCommand.baseFlags,
9
+ channel: Flags.integer({ description: 'Channel ID', required: true }),
10
+ name: Flags.string({ description: 'Segment name', required: true }),
11
+ description: Flags.string({ description: 'Segment description' }),
12
+ color: Flags.string({ description: 'Segment color as HEX' }),
13
+ tags: Flags.string({ description: 'Tags for filtering recipients' }),
14
+ folder: Flags.integer({ description: 'Object folder ID' }),
15
+ data: Flags.string({ description: 'Additional JSON object payload' }),
16
+ };
17
+ async run() {
18
+ const { flags } = await this.parse(SegmentsCreate);
19
+ this.flags = flags;
20
+ const payload = mergeData(parseDataFlag(flags.data), {
21
+ channelId: flags.channel,
22
+ name: flags.name,
23
+ description: flags.description,
24
+ color: flags.color,
25
+ tags: flags.tags,
26
+ folderId: flags.folder,
27
+ });
28
+ const client = await createCliApiClient(flags);
29
+ const response = await client.post('/v1/segments', payload);
30
+ if (!flags.quiet)
31
+ this.log(this.toFormatted(response));
32
+ }
33
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class SegmentsDelete extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<number, {
6
+ max?: number;
7
+ min?: number;
8
+ }>;
9
+ };
10
+ static flags: {
11
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,18 @@
1
+ import { Args } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { createCliApiClient } from '../../send/api.js';
4
+ export default class SegmentsDelete extends BaseCommand {
5
+ static description = 'Delete segment';
6
+ static args = {
7
+ id: Args.integer({ description: 'segment ID', required: true }),
8
+ };
9
+ static flags = { ...BaseCommand.baseFlags };
10
+ async run() {
11
+ const { args, flags } = await this.parse(SegmentsDelete);
12
+ this.flags = flags;
13
+ const client = await createCliApiClient(flags);
14
+ await client.delete(`/v1/segments/${args.id}`);
15
+ if (!flags.quiet)
16
+ this.log(this.toFormatted({ deleted: true, id: args.id }));
17
+ }
18
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class SegmentsGet extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<number, {
6
+ max?: number;
7
+ min?: number;
8
+ }>;
9
+ };
10
+ static flags: {
11
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,18 @@
1
+ import { Args } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { createCliApiClient } from '../../send/api.js';
4
+ export default class SegmentsGet extends BaseCommand {
5
+ static description = 'Get segment by ID';
6
+ static args = {
7
+ id: Args.integer({ description: 'segment ID', required: true }),
8
+ };
9
+ static flags = { ...BaseCommand.baseFlags };
10
+ async run() {
11
+ const { args, flags } = await this.parse(SegmentsGet);
12
+ this.flags = flags;
13
+ const client = await createCliApiClient(flags);
14
+ const response = await client.get(`/v1/segments/${args.id}`);
15
+ if (!flags.quiet)
16
+ this.log(this.toFormatted(response));
17
+ }
18
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class SegmentsList extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ page: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
6
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
7
+ channel: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ search: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ tags: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'tag-match-mode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,34 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { cleanQuery } from '../../crud/data.js';
4
+ import { createCliApiClient } from '../../send/api.js';
5
+ export default class SegmentsList extends BaseCommand {
6
+ static description = 'List segments';
7
+ static flags = {
8
+ ...BaseCommand.baseFlags,
9
+ page: Flags.integer({ description: 'Page number', default: 1 }),
10
+ limit: Flags.integer({ description: 'Items per page', default: 20 }),
11
+ channel: Flags.integer({ description: 'Filter by channel ID' }),
12
+ search: Flags.string({ description: 'Search by name' }),
13
+ tags: Flags.string({ description: 'Comma-separated tag IDs' }),
14
+ 'tag-match-mode': Flags.string({
15
+ description: 'Tag match mode',
16
+ options: ['any', 'all'],
17
+ }),
18
+ };
19
+ async run() {
20
+ const { flags } = await this.parse(SegmentsList);
21
+ this.flags = flags;
22
+ const client = await createCliApiClient(flags);
23
+ const response = await client.get('/v1/segments', cleanQuery({
24
+ page: flags.page,
25
+ limit: flags.limit,
26
+ channelId: flags.channel,
27
+ search: flags.search,
28
+ tagIds: flags.tags,
29
+ tagMatchMode: flags['tag-match-mode'],
30
+ }));
31
+ if (!flags.quiet)
32
+ this.log(this.toFormatted(response));
33
+ }
34
+ }
@@ -0,0 +1,24 @@
1
+ import { BaseCommand } from '../../../base-command.js';
2
+ export default class SegmentsTagsAdd extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ segmentId: import("@oclif/core/interfaces").Arg<number, {
6
+ max?: number;
7
+ min?: number;
8
+ }>;
9
+ tagId: import("@oclif/core/interfaces").Arg<number, {
10
+ max?: number;
11
+ min?: number;
12
+ }>;
13
+ };
14
+ static flags: {
15
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
21
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
+ };
23
+ run(): Promise<void>;
24
+ }