@revfleet/hscli 0.8.12 → 0.9.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 (153) hide show
  1. package/CHANGELOG.md +166 -1
  2. package/README.md +220 -10
  3. package/dist/cli.js +27 -3
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/agent/contracts.d.ts +3 -0
  6. package/dist/commands/agent/contracts.js +139 -0
  7. package/dist/commands/agent/contracts.js.map +1 -0
  8. package/dist/commands/agent/index.d.ts +3 -0
  9. package/dist/commands/agent/index.js +188 -0
  10. package/dist/commands/agent/index.js.map +1 -0
  11. package/dist/commands/agent/recipes.d.ts +13 -0
  12. package/dist/commands/agent/recipes.js +108 -0
  13. package/dist/commands/agent/recipes.js.map +1 -0
  14. package/dist/commands/agent/runner.d.ts +16 -0
  15. package/dist/commands/agent/runner.js +165 -0
  16. package/dist/commands/agent/runner.js.map +1 -0
  17. package/dist/commands/auth/index.js +64 -7
  18. package/dist/commands/auth/index.js.map +1 -1
  19. package/dist/commands/automation/index.js +30 -0
  20. package/dist/commands/automation/index.js.map +1 -1
  21. package/dist/commands/backup/index.d.ts +12 -0
  22. package/dist/commands/backup/index.js +459 -0
  23. package/dist/commands/backup/index.js.map +1 -0
  24. package/dist/commands/cms/content-ops.js +1 -1
  25. package/dist/commands/cms/content-ops.js.map +1 -1
  26. package/dist/commands/communication-preferences/index.js +207 -7
  27. package/dist/commands/communication-preferences/index.js.map +1 -1
  28. package/dist/commands/content-permissions/index.d.ts +22 -0
  29. package/dist/commands/content-permissions/index.js +141 -0
  30. package/dist/commands/content-permissions/index.js.map +1 -0
  31. package/dist/commands/context/index.d.ts +3 -0
  32. package/dist/commands/context/index.js +182 -0
  33. package/dist/commands/context/index.js.map +1 -0
  34. package/dist/commands/crm/associations.js +38 -0
  35. package/dist/commands/crm/associations.js.map +1 -1
  36. package/dist/commands/crm/custom-objects.js +39 -2
  37. package/dist/commands/crm/custom-objects.js.map +1 -1
  38. package/dist/commands/crm/dated.js +3 -3
  39. package/dist/commands/crm/dated.js.map +1 -1
  40. package/dist/commands/crm/migration.js +210 -2
  41. package/dist/commands/crm/migration.js.map +1 -1
  42. package/dist/commands/crm/properties.js +2 -1
  43. package/dist/commands/crm/properties.js.map +1 -1
  44. package/dist/commands/crm/property-batch.d.ts +1 -0
  45. package/dist/commands/crm/property-batch.js +44 -5
  46. package/dist/commands/crm/property-batch.js.map +1 -1
  47. package/dist/commands/crm/shared.js +21 -2
  48. package/dist/commands/crm/shared.js.map +1 -1
  49. package/dist/commands/crm/sync.js +1 -1
  50. package/dist/commands/crm/sync.js.map +1 -1
  51. package/dist/commands/doctor/index.js +193 -0
  52. package/dist/commands/doctor/index.js.map +1 -1
  53. package/dist/commands/email-tracking/index.d.ts +16 -0
  54. package/dist/commands/email-tracking/index.js +314 -0
  55. package/dist/commands/email-tracking/index.js.map +1 -0
  56. package/dist/commands/extensions/index.js +1 -1
  57. package/dist/commands/extensions/index.js.map +1 -1
  58. package/dist/commands/forms/index.js +15 -2
  59. package/dist/commands/forms/index.js.map +1 -1
  60. package/dist/commands/forms/legacy-v2.d.ts +7 -2
  61. package/dist/commands/forms/legacy-v2.js +103 -7
  62. package/dist/commands/forms/legacy-v2.js.map +1 -1
  63. package/dist/commands/guide/index.d.ts +1 -1
  64. package/dist/commands/guide/index.js +37 -4
  65. package/dist/commands/guide/index.js.map +1 -1
  66. package/dist/commands/internal/catalog.d.ts +1 -0
  67. package/dist/commands/internal/catalog.js +2 -0
  68. package/dist/commands/internal/catalog.js.map +1 -0
  69. package/dist/commands/internal/index.d.ts +26 -0
  70. package/dist/commands/internal/index.js +823 -0
  71. package/dist/commands/internal/index.js.map +1 -0
  72. package/dist/commands/internal-session.d.ts +15 -0
  73. package/dist/commands/internal-session.js +152 -0
  74. package/dist/commands/internal-session.js.map +1 -0
  75. package/dist/commands/lists/index.js +1 -1
  76. package/dist/commands/lists/index.js.map +1 -1
  77. package/dist/commands/marketing/email-audit.d.ts +32 -0
  78. package/dist/commands/marketing/email-audit.js +121 -0
  79. package/dist/commands/marketing/email-audit.js.map +1 -0
  80. package/dist/commands/marketing/index.js +2 -0
  81. package/dist/commands/marketing/index.js.map +1 -1
  82. package/dist/commands/mcp.js +5 -3
  83. package/dist/commands/mcp.js.map +1 -1
  84. package/dist/commands/playbooks/index.d.ts +3 -0
  85. package/dist/commands/playbooks/index.js +228 -0
  86. package/dist/commands/playbooks/index.js.map +1 -0
  87. package/dist/commands/portals/index.d.ts +3 -0
  88. package/dist/commands/portals/index.js +132 -0
  89. package/dist/commands/portals/index.js.map +1 -0
  90. package/dist/commands/reports/index.d.ts +3 -0
  91. package/dist/commands/reports/index.js +479 -0
  92. package/dist/commands/reports/index.js.map +1 -0
  93. package/dist/commands/sales-content/index.d.ts +13 -0
  94. package/dist/commands/sales-content/index.js +59 -0
  95. package/dist/commands/sales-content/index.js.map +1 -0
  96. package/dist/commands/sales-templates/index.d.ts +3 -0
  97. package/dist/commands/sales-templates/index.js +88 -0
  98. package/dist/commands/sales-templates/index.js.map +1 -0
  99. package/dist/commands/seed/cms.js +28 -45
  100. package/dist/commands/seed/cms.js.map +1 -1
  101. package/dist/commands/sequences/index.d.ts +18 -0
  102. package/dist/commands/sequences/index.js +263 -0
  103. package/dist/commands/sequences/index.js.map +1 -0
  104. package/dist/commands/settings/index.js +450 -102
  105. package/dist/commands/settings/index.js.map +1 -1
  106. package/dist/commands/settings/site-settings.d.ts +3 -0
  107. package/dist/commands/settings/site-settings.js +106 -0
  108. package/dist/commands/settings/site-settings.js.map +1 -0
  109. package/dist/commands/ui/index.js +14 -4
  110. package/dist/commands/ui/index.js.map +1 -1
  111. package/dist/commands/workflows/index.js +2 -0
  112. package/dist/commands/workflows/index.js.map +1 -1
  113. package/dist/commands/workflows/preflight.d.ts +23 -0
  114. package/dist/commands/workflows/preflight.js +295 -0
  115. package/dist/commands/workflows/preflight.js.map +1 -0
  116. package/dist/core/action-contract.d.ts +43 -0
  117. package/dist/core/action-contract.js +207 -0
  118. package/dist/core/action-contract.js.map +1 -0
  119. package/dist/core/auth.d.ts +6 -0
  120. package/dist/core/auth.js +85 -0
  121. package/dist/core/auth.js.map +1 -1
  122. package/dist/core/http.d.ts +8 -0
  123. package/dist/core/http.js +37 -5
  124. package/dist/core/http.js.map +1 -1
  125. package/dist/core/id-maps.d.ts +27 -0
  126. package/dist/core/id-maps.js +204 -0
  127. package/dist/core/id-maps.js.map +1 -0
  128. package/dist/core/output.d.ts +2 -1
  129. package/dist/core/output.js +34 -0
  130. package/dist/core/output.js.map +1 -1
  131. package/dist/mcp/profiles.d.ts +14 -0
  132. package/dist/mcp/profiles.js +68 -0
  133. package/dist/mcp/profiles.js.map +1 -0
  134. package/dist/mcp/server.d.ts +5 -3
  135. package/dist/mcp/server.js +22 -5
  136. package/dist/mcp/server.js.map +1 -1
  137. package/docs/CAPABILITY_LIBRARY.md +29 -8
  138. package/docs/COMMAND_TREE.md +96 -17
  139. package/docs/COMPARISON.md +8 -5
  140. package/docs/COOKBOOK.md +124 -5
  141. package/docs/INTERNAL-ENDPOINTS-DISCOVERY.md +813 -0
  142. package/docs/INTERNAL-ENDPOINTS.md +371 -0
  143. package/docs/INTERNAL_ENDPOINTS.md +243 -0
  144. package/docs/MARKETING_SETUP.md +21 -1
  145. package/docs/MCP.md +28 -89
  146. package/docs/MCP_TOOL_CATALOG.md +192 -0
  147. package/docs/MIGRATION_ADAPTERS.md +115 -0
  148. package/docs/PORTAL_BACKUP.md +212 -0
  149. package/docs/PUBLISHING.md +1 -1
  150. package/docs/SALES_CONTENT_INTERNAL_PUNCH_LIST.md +504 -0
  151. package/docs/TUTORIALS/secure-agent-writes.md +49 -0
  152. package/docs/WHY_HOW_WHAT.md +10 -4
  153. package/package.json +4 -2
@@ -1,6 +1,8 @@
1
1
  import { createClient } from "../../core/http.js";
2
- import { printResult } from "../../core/output.js";
2
+ import { loadFlatIdMapFile, stringifyId } from "../../core/id-maps.js";
3
+ import { CliError, printResult } from "../../core/output.js";
3
4
  import { encodePathSegment, maybeWrite, parseJsonPayload } from "../crm/shared.js";
5
+ import { addBrowserSessionOptions, resolveBrowserSession } from "../internal-session.js";
4
6
  export function registerCommunicationPreferences(program, getCtx) {
5
7
  const commPrefs = program.command("communication-preferences").description("HubSpot communication preferences / subscription management");
6
8
  commPrefs
@@ -12,6 +14,64 @@ export function registerCommunicationPreferences(program, getCtx) {
12
14
  const res = await client.request("/communication-preferences/v3/definitions");
13
15
  printResult(ctx, res);
14
16
  });
17
+ const definitions = commPrefs.command("definitions").description("Subscription definition replay helpers");
18
+ definitions
19
+ .command("list")
20
+ .description("List subscription definitions")
21
+ .action(async () => {
22
+ const ctx = getCtx();
23
+ const client = createClient(ctx.profile);
24
+ const res = await client.request("/communication-preferences/v3/definitions");
25
+ printResult(ctx, res);
26
+ });
27
+ definitions
28
+ .command("create")
29
+ .description("Create a subscription definition with optional business-unit ID remapping")
30
+ .requiredOption("--data <payload>", "Subscription definition JSON payload")
31
+ .option("--business-unit-map <file>", "ID map JSON for businessUnitId remapping")
32
+ .option("--business-unit-mode <mode>", "How to handle unmapped businessUnitId: strict|drop|preserve", "strict")
33
+ .option("--skip-existing", "Skip create when a target definition with the same name already exists")
34
+ .action(async (opts) => {
35
+ const ctx = getCtx();
36
+ const client = createClient(ctx.profile);
37
+ const payload = normalizeSubscriptionDefinitionPayload(parseJsonPayload(opts.data), opts.businessUnitMap ? loadFlatIdMapFile(opts.businessUnitMap) : {}, parseBusinessUnitMode(opts.businessUnitMode));
38
+ if (opts.skipExisting) {
39
+ const name = typeof payload.name === "string" ? payload.name : undefined;
40
+ if (!name)
41
+ throw new CliError("INVALID_PAYLOAD", "--skip-existing requires payload.name");
42
+ const existing = await findExistingDefinition(client, payload);
43
+ if (existing) {
44
+ printResult(ctx, { skipped: true, reason: "subscription-definition-exists", matchKey: "name+purpose+communicationMethod+businessUnitId", existing });
45
+ return;
46
+ }
47
+ }
48
+ const res = await maybeWrite(ctx, client, "POST", "/communication-preferences/v3/definitions", payload);
49
+ printResult(ctx, res);
50
+ });
51
+ addBrowserSessionOptions(definitions
52
+ .command("create-internal")
53
+ .description("Create an Email > Subscription Types definition via the internal browser-session endpoint")
54
+ .requiredOption("--data <payload>", "Subscription definition JSON payload")
55
+ .option("--business-unit-map <file>", "ID map JSON for businessUnitId remapping")
56
+ .option("--business-unit-mode <mode>", "How to handle unmapped businessUnitId: strict|drop|preserve", "strict")
57
+ .option("--skip-existing", "Skip create when a target definition with the same composite key already exists")).action(async (opts) => {
58
+ const ctx = getCtx();
59
+ const payload = normalizeSubscriptionDefinitionPayload(parseJsonPayload(opts.data), opts.businessUnitMap ? loadFlatIdMapFile(opts.businessUnitMap) : {}, parseBusinessUnitMode(opts.businessUnitMode));
60
+ assertEmailSubscriptionDefinition(payload);
61
+ const session = resolveBrowserSession(ctx, opts, "Internal subscription-definition commands", true);
62
+ const publicClient = createClient(ctx.profile);
63
+ const internalPayload = buildInternalSubscriptionDefinitionPayload(payload, session.portalId);
64
+ if (opts.skipExisting) {
65
+ const existing = await findExistingDefinition(publicClient, payload);
66
+ if (existing) {
67
+ printResult(ctx, { skipped: true, reason: "subscription-definition-exists", matchKey: "name+purpose+communicationMethod+businessUnitId", existing });
68
+ return;
69
+ }
70
+ }
71
+ const path = `/api/subscriptions/v1/definitions?portalId=${encodeURIComponent(session.portalId)}`;
72
+ const res = await maybeWrite(ctx, session.client, "POST", path, internalPayload);
73
+ printResult(ctx, res);
74
+ });
15
75
  commPrefs
16
76
  .command("status")
17
77
  .argument("<email>")
@@ -53,7 +113,7 @@ export function registerCommunicationPreferences(program, getCtx) {
53
113
  const ctx = getCtx();
54
114
  const client = createClient(ctx.profile);
55
115
  const payload = parseJsonPayload(opts.data);
56
- const res = await client.request("/communication/preferences/v4/statuses/batch-read", { method: "POST", body: payload });
116
+ const res = await client.request("/communication-preferences/v4/statuses/batch/read", { method: "POST", body: payload, permissionMode: "read" });
57
117
  printResult(ctx, res);
58
118
  });
59
119
  v4.command("status-update-batch")
@@ -63,7 +123,7 @@ export function registerCommunicationPreferences(program, getCtx) {
63
123
  const ctx = getCtx();
64
124
  const client = createClient(ctx.profile);
65
125
  const payload = parseJsonPayload(opts.data);
66
- const res = await maybeWrite(ctx, client, "POST", "/communication/preferences/v4/statuses/batch-update", payload);
126
+ const res = await maybeWrite(ctx, client, "POST", "/communication-preferences/v4/statuses/batch/write", payload);
67
127
  printResult(ctx, res);
68
128
  });
69
129
  v4.command("subscribe-batch")
@@ -73,7 +133,7 @@ export function registerCommunicationPreferences(program, getCtx) {
73
133
  const ctx = getCtx();
74
134
  const client = createClient(ctx.profile);
75
135
  const payload = parseJsonPayload(opts.data);
76
- const res = await maybeWrite(ctx, client, "POST", "/communication/preferences/v4/subscribe-batch", payload);
136
+ const res = await maybeWrite(ctx, client, "POST", "/communication-preferences/v4/statuses/batch/write", payload);
77
137
  printResult(ctx, res);
78
138
  });
79
139
  v4.command("unsubscribe-batch")
@@ -83,7 +143,7 @@ export function registerCommunicationPreferences(program, getCtx) {
83
143
  const ctx = getCtx();
84
144
  const client = createClient(ctx.profile);
85
145
  const payload = parseJsonPayload(opts.data);
86
- const res = await maybeWrite(ctx, client, "POST", "/communication/preferences/v4/unsubscribe-batch", payload);
146
+ const res = await maybeWrite(ctx, client, "POST", "/communication-preferences/v4/statuses/batch/write", payload);
87
147
  printResult(ctx, res);
88
148
  });
89
149
  v4.command("subscriptions-list")
@@ -91,7 +151,7 @@ export function registerCommunicationPreferences(program, getCtx) {
91
151
  .action(async () => {
92
152
  const ctx = getCtx();
93
153
  const client = createClient(ctx.profile);
94
- const res = await client.request("/communication/preferences/v4/subscriptions");
154
+ const res = await client.request("/communication-preferences/v4/definitions");
95
155
  printResult(ctx, res);
96
156
  });
97
157
  v4.command("channels-list")
@@ -99,8 +159,148 @@ export function registerCommunicationPreferences(program, getCtx) {
99
159
  .action(async () => {
100
160
  const ctx = getCtx();
101
161
  const client = createClient(ctx.profile);
102
- const res = await client.request("/communication/preferences/v4/channels");
162
+ const res = await client.request("/communication-preferences/v4/channels");
103
163
  printResult(ctx, res);
104
164
  });
105
165
  }
166
+ function parseBusinessUnitMode(raw) {
167
+ if (raw === undefined || raw === "strict")
168
+ return "strict";
169
+ if (raw === "drop" || raw === "preserve")
170
+ return raw;
171
+ throw new CliError("INVALID_FLAG", "--business-unit-mode must be one of: strict, drop, preserve");
172
+ }
173
+ function normalizeSubscriptionDefinitionPayload(input, businessUnitMap, businessUnitMode) {
174
+ const payload = { ...input };
175
+ delete payload.id;
176
+ delete payload.createdAt;
177
+ delete payload.updatedAt;
178
+ const sourceBusinessUnitId = stringifyId(input.businessUnitId);
179
+ if (!sourceBusinessUnitId) {
180
+ delete payload.businessUnitId;
181
+ return payload;
182
+ }
183
+ const mapped = businessUnitMap[sourceBusinessUnitId];
184
+ if (mapped !== undefined) {
185
+ payload.businessUnitId = toHubSpotIdValue(mapped);
186
+ return payload;
187
+ }
188
+ if (businessUnitMode === "drop") {
189
+ delete payload.businessUnitId;
190
+ return payload;
191
+ }
192
+ if (businessUnitMode === "preserve")
193
+ return payload;
194
+ throw new CliError("BUSINESS_UNIT_REMAP_REQUIRED", `Subscription definition references source businessUnitId ${sourceBusinessUnitId}. Provide --business-unit-map, use --business-unit-mode drop, or use --business-unit-mode preserve.`, undefined, { sourceBusinessUnitId });
195
+ }
196
+ function buildInternalSubscriptionDefinitionPayload(input, portalId) {
197
+ const name = typeof input.name === "string" ? input.name.trim() : "";
198
+ if (!name)
199
+ throw new CliError("INVALID_PAYLOAD", "Internal subscription definition create requires payload.name.");
200
+ const description = typeof input.description === "string" ? input.description : "";
201
+ const primaryLanguage = firstString(typeof input.primaryLanguage === "string" ? input.primaryLanguage : undefined, typeof input.language === "string" ? input.language : undefined, "en");
202
+ return {
203
+ portalId: Number(portalId) || portalId,
204
+ primaryLanguage,
205
+ name,
206
+ description,
207
+ process: valueOrEmpty(input.process ?? input.purpose),
208
+ operation: valueOrEmpty(input.operation),
209
+ ...(input.businessUnitId !== undefined ? { businessUnitId: toHubSpotIdValue(String(input.businessUnitId)) } : {}),
210
+ };
211
+ }
212
+ function assertEmailSubscriptionDefinition(input) {
213
+ const rawChannel = firstString(typeof input.communicationMethod === "string" ? input.communicationMethod : undefined, typeof input.channel === "string" ? input.channel : undefined, typeof input.method === "string" ? input.method : undefined);
214
+ if (!rawChannel)
215
+ return;
216
+ const channel = rawChannel.toUpperCase();
217
+ if (channel === "EMAIL")
218
+ return;
219
+ throw new CliError("UNSUPPORTED_INTERNAL_SUBSCRIPTION_CHANNEL", `create-internal uses HubSpot's Email > Subscription Types endpoint and cannot safely create ${rawChannel} definitions. Probe/add a dedicated internal adapter for that channel.`, undefined, { channel: rawChannel });
220
+ }
221
+ async function findExistingDefinition(client, payload) {
222
+ const res = await client.request("/communication-preferences/v3/definitions");
223
+ const name = typeof payload.name === "string" ? payload.name : undefined;
224
+ if (!name)
225
+ return undefined;
226
+ const candidates = extractDefinitionRecords(res).filter((record) => record.name === name);
227
+ if (candidates.length === 0)
228
+ return undefined;
229
+ const exact = candidates.find((record) => isSameSubscriptionDefinition(record, payload));
230
+ if (exact)
231
+ return exact;
232
+ if (candidates.length === 1 && !hasSubscriptionDisambiguators(payload))
233
+ return candidates[0];
234
+ return undefined;
235
+ }
236
+ function extractDefinitionRecords(raw) {
237
+ if (Array.isArray(raw))
238
+ return raw.filter(isRecord);
239
+ const record = isRecord(raw) ? raw : {};
240
+ const candidates = [
241
+ record.results,
242
+ record.subscriptionDefinitions,
243
+ record.definitions,
244
+ isRecord(record.data) ? record.data.results : undefined,
245
+ isRecord(record.data) ? record.data.subscriptionDefinitions : undefined,
246
+ ];
247
+ for (const candidate of candidates) {
248
+ if (Array.isArray(candidate))
249
+ return candidate.filter(isRecord);
250
+ }
251
+ return [];
252
+ }
253
+ function isRecord(value) {
254
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
255
+ }
256
+ function toHubSpotIdValue(raw) {
257
+ const numeric = Number(raw);
258
+ return Number.isSafeInteger(numeric) && String(numeric) === raw ? numeric : raw;
259
+ }
260
+ function firstString(...values) {
261
+ for (const value of values) {
262
+ const trimmed = value?.trim();
263
+ if (trimmed)
264
+ return trimmed;
265
+ }
266
+ return undefined;
267
+ }
268
+ function valueOrEmpty(value) {
269
+ return typeof value === "string" ? value : "";
270
+ }
271
+ function isSameSubscriptionDefinition(record, payload) {
272
+ if (record.name !== payload.name)
273
+ return false;
274
+ if (normalizeBusinessUnitId(record.businessUnitId) !== normalizeBusinessUnitId(payload.businessUnitId))
275
+ return false;
276
+ const payloadPurpose = firstDefinitionText(payload, ["purpose", "process"]);
277
+ if (payloadPurpose && normalizeText(firstDefinitionText(record, ["purpose", "process"])) !== normalizeText(payloadPurpose))
278
+ return false;
279
+ const payloadMethod = firstDefinitionText(payload, ["communicationMethod", "operation", "channel", "method"]);
280
+ if (payloadMethod && normalizeText(firstDefinitionText(record, ["communicationMethod", "operation", "channel", "method"])) !== normalizeText(payloadMethod))
281
+ return false;
282
+ return true;
283
+ }
284
+ function hasSubscriptionDisambiguators(payload) {
285
+ return payload.businessUnitId !== undefined
286
+ || Boolean(firstDefinitionText(payload, ["purpose", "process"]))
287
+ || Boolean(firstDefinitionText(payload, ["communicationMethod", "operation", "channel", "method"]));
288
+ }
289
+ function normalizeBusinessUnitId(value) {
290
+ return stringifyId(value) ?? "0";
291
+ }
292
+ function hasText(value) {
293
+ return typeof value === "string" && value.trim().length > 0;
294
+ }
295
+ function normalizeText(value) {
296
+ return typeof value === "string" ? value.trim() : "";
297
+ }
298
+ function firstDefinitionText(record, keys) {
299
+ for (const key of keys) {
300
+ const value = record[key];
301
+ if (hasText(value))
302
+ return value.trim();
303
+ }
304
+ return undefined;
305
+ }
106
306
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/communication-preferences/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/communication-preferences/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Command } from "commander";
2
+ import type { HubSpotClient } from "../../core/http.js";
3
+ import type { CliContext } from "../../core/output.js";
4
+ declare const SUPPORTED_OBJECT_TYPES: readonly ["SEQUENCE", "TEMPLATE", "PLAYBOOK", "DOCUMENT", "SNIPPET"];
5
+ type ContentObjectType = (typeof SUPPORTED_OBJECT_TYPES)[number];
6
+ export interface ContentPermissionsInput {
7
+ objectType: ContentObjectType;
8
+ objectIds: number[];
9
+ teamIds: number[];
10
+ userIds: number[];
11
+ visibleToAll: boolean;
12
+ private: boolean;
13
+ }
14
+ /**
15
+ * PUT internal content permissions for a batch of objects. The endpoint
16
+ * is shared across sequences, templates, playbooks, documents and
17
+ * snippets. Body uses replace semantics: TEAM and USER lists overwrite
18
+ * the existing permissions (never additive). Returns 204 on success.
19
+ */
20
+ export declare function setContentPermissions(client: HubSpotClient, portalId: string, input: ContentPermissionsInput): Promise<unknown>;
21
+ export declare function registerContentPermissions(program: Command, getCtx: () => CliContext): void;
22
+ export {};
@@ -0,0 +1,141 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { CliError, printResult } from "../../core/output.js";
3
+ import { addBrowserSessionOptions, resolveBrowserSession } from "../internal-session.js";
4
+ const PERMISSIONS_ENDPOINT = "/api/contentpermissions/v1/permissions";
5
+ const SUPPORTED_OBJECT_TYPES = ["SEQUENCE", "TEMPLATE", "PLAYBOOK", "DOCUMENT", "SNIPPET"];
6
+ /**
7
+ * PUT internal content permissions for a batch of objects. The endpoint
8
+ * is shared across sequences, templates, playbooks, documents and
9
+ * snippets. Body uses replace semantics: TEAM and USER lists overwrite
10
+ * the existing permissions (never additive). Returns 204 on success.
11
+ */
12
+ export async function setContentPermissions(client, portalId, input) {
13
+ const body = {
14
+ objectType: input.objectType,
15
+ objectIds: input.objectIds,
16
+ permissions: { TEAM: input.teamIds, USER: input.userIds },
17
+ visibleToAll: input.visibleToAll,
18
+ private: input.private,
19
+ };
20
+ return client.request(`${PERMISSIONS_ENDPOINT}?portalId=${encodeURIComponent(portalId)}`, {
21
+ method: "PUT",
22
+ body,
23
+ permissionMode: "write",
24
+ });
25
+ }
26
+ export function registerContentPermissions(program, getCtx) {
27
+ const perms = program
28
+ .command("content-permissions")
29
+ .description("Internal HubSpot content permissions for sales-content objects (sequences, templates, playbooks, snippets, documents)");
30
+ addBrowserSessionOptions(perms
31
+ .command("set")
32
+ .description("Replace TEAM + USER permissions on one or more content objects")
33
+ .requiredOption("--type <type>", `Object type: ${SUPPORTED_OBJECT_TYPES.join("|")}`)
34
+ .requiredOption("--ids <ids>", "Comma-separated object IDs")
35
+ .option("--teams <ids>", "Comma-separated team IDs (replaces TEAM list)")
36
+ .option("--users <ids>", "Comma-separated user IDs (replaces USER list)")
37
+ .option("--visible-to-all", "Set visibleToAll=true (default false)")
38
+ .option("--private", "Set private=true (default false)")
39
+ .option("--from-file <path>", "Read full ContentPermissionsInput JSON from file (overrides other flags except --type/--ids)")).action(async (opts) => {
40
+ const ctx = getCtx();
41
+ const session = resolveBrowserSession(ctx, opts, "Set content permissions", true);
42
+ const objectType = parseObjectType(opts.type);
43
+ const objectIds = parseIdList(opts.ids, "--ids");
44
+ let teamIds = [];
45
+ let userIds = [];
46
+ let visibleToAll = Boolean(opts.visibleToAll);
47
+ let priv = Boolean(opts.private);
48
+ if (opts.fromFile) {
49
+ const raw = readFileFlag(opts.fromFile, "--from-file");
50
+ const parsed = parsePermissionsFile(raw);
51
+ teamIds = parsed.teamIds;
52
+ userIds = parsed.userIds;
53
+ visibleToAll = parsed.visibleToAll;
54
+ priv = parsed.private;
55
+ }
56
+ else {
57
+ if (opts.teams)
58
+ teamIds = parseIdList(opts.teams, "--teams");
59
+ if (opts.users)
60
+ userIds = parseIdList(opts.users, "--users");
61
+ }
62
+ const res = await setContentPermissions(session.client, session.portalId, {
63
+ objectType,
64
+ objectIds,
65
+ teamIds,
66
+ userIds,
67
+ visibleToAll,
68
+ private: priv,
69
+ });
70
+ printResult(ctx, res);
71
+ });
72
+ }
73
+ function parseObjectType(raw) {
74
+ const value = raw?.trim().toUpperCase();
75
+ const found = SUPPORTED_OBJECT_TYPES.find((t) => t === value);
76
+ if (!found) {
77
+ throw new CliError("INVALID_FLAG", `--type must be one of ${SUPPORTED_OBJECT_TYPES.join("|")}`);
78
+ }
79
+ return found;
80
+ }
81
+ function parseIdList(raw, flag) {
82
+ const items = raw.split(",").map((s) => s.trim()).filter(Boolean);
83
+ if (!items.length) {
84
+ throw new CliError("INVALID_FLAG", `${flag} must contain at least one numeric ID`);
85
+ }
86
+ return items.map((item) => {
87
+ const n = Number(item);
88
+ if (!Number.isInteger(n) || n <= 0) {
89
+ throw new CliError("INVALID_FLAG", `${flag} entries must be positive integers (got: ${item})`);
90
+ }
91
+ return n;
92
+ });
93
+ }
94
+ function readFileFlag(path, flag) {
95
+ try {
96
+ return readFileSync(path, "utf8");
97
+ }
98
+ catch (err) {
99
+ throw new CliError("INVALID_FLAG", `${flag} cannot read ${path}: ${err instanceof Error ? err.message : String(err)}`);
100
+ }
101
+ }
102
+ function parsePermissionsFile(raw) {
103
+ let value;
104
+ try {
105
+ value = JSON.parse(raw);
106
+ }
107
+ catch {
108
+ throw new CliError("INVALID_JSON", "--from-file payload is not valid JSON");
109
+ }
110
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
111
+ throw new CliError("INVALID_JSON", "--from-file payload must be a JSON object");
112
+ }
113
+ const r = value;
114
+ const permissions = isRecord(r.permissions) ? r.permissions : {};
115
+ const teamIds = asIdArray(permissions.TEAM ?? r.teamIds, "permissions.TEAM");
116
+ const userIds = asIdArray(permissions.USER ?? r.userIds, "permissions.USER");
117
+ return {
118
+ teamIds,
119
+ userIds,
120
+ visibleToAll: Boolean(r.visibleToAll),
121
+ private: Boolean(r.private),
122
+ };
123
+ }
124
+ function asIdArray(value, label) {
125
+ if (value === undefined || value === null)
126
+ return [];
127
+ if (!Array.isArray(value)) {
128
+ throw new CliError("INVALID_JSON", `${label} must be an array of numeric IDs`);
129
+ }
130
+ return value.map((entry) => {
131
+ const n = Number(entry);
132
+ if (!Number.isInteger(n) || n <= 0) {
133
+ throw new CliError("INVALID_JSON", `${label} entries must be positive integers (got: ${String(entry)})`);
134
+ }
135
+ return n;
136
+ });
137
+ }
138
+ function isRecord(value) {
139
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
140
+ }
141
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/content-permissions/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import { type CliContext } from "../../core/output.js";
3
+ export declare function registerContext(program: Command, getCtx: () => CliContext): void;