@revfleet/hscli 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +466 -0
- package/LICENSE +21 -0
- package/README.md +287 -0
- package/SECURITY.md +68 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +192 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/account/index.d.ts +3 -0
- package/dist/commands/account/index.js +65 -0
- package/dist/commands/account/index.js.map +1 -0
- package/dist/commands/api/index.d.ts +3 -0
- package/dist/commands/api/index.js +35 -0
- package/dist/commands/api/index.js.map +1 -0
- package/dist/commands/auth/index.d.ts +3 -0
- package/dist/commands/auth/index.js +229 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/automation/index.d.ts +3 -0
- package/dist/commands/automation/index.js +119 -0
- package/dist/commands/automation/index.js.map +1 -0
- package/dist/commands/cms/blog-settings.d.ts +3 -0
- package/dist/commands/cms/blog-settings.js +70 -0
- package/dist/commands/cms/blog-settings.js.map +1 -0
- package/dist/commands/cms/content-ops.d.ts +13 -0
- package/dist/commands/cms/content-ops.js +262 -0
- package/dist/commands/cms/content-ops.js.map +1 -0
- package/dist/commands/cms/hubdb.d.ts +3 -0
- package/dist/commands/cms/hubdb.js +55 -0
- package/dist/commands/cms/hubdb.js.map +1 -0
- package/dist/commands/cms/index.d.ts +3 -0
- package/dist/commands/cms/index.js +119 -0
- package/dist/commands/cms/index.js.map +1 -0
- package/dist/commands/cms/source-code.d.ts +3 -0
- package/dist/commands/cms/source-code.js +101 -0
- package/dist/commands/cms/source-code.js.map +1 -0
- package/dist/commands/communication-preferences/index.d.ts +3 -0
- package/dist/commands/communication-preferences/index.js +107 -0
- package/dist/commands/communication-preferences/index.js.map +1 -0
- package/dist/commands/conversations/index.d.ts +3 -0
- package/dist/commands/conversations/index.js +233 -0
- package/dist/commands/conversations/index.js.map +1 -0
- package/dist/commands/crm/associations.d.ts +3 -0
- package/dist/commands/crm/associations.js +180 -0
- package/dist/commands/crm/associations.js.map +1 -0
- package/dist/commands/crm/cards.d.ts +3 -0
- package/dist/commands/crm/cards.js +72 -0
- package/dist/commands/crm/cards.js.map +1 -0
- package/dist/commands/crm/carts.d.ts +3 -0
- package/dist/commands/crm/carts.js +5 -0
- package/dist/commands/crm/carts.js.map +1 -0
- package/dist/commands/crm/communications.d.ts +3 -0
- package/dist/commands/crm/communications.js +5 -0
- package/dist/commands/crm/communications.js.map +1 -0
- package/dist/commands/crm/companies.d.ts +3 -0
- package/dist/commands/crm/companies.js +5 -0
- package/dist/commands/crm/companies.js.map +1 -0
- package/dist/commands/crm/contacts.d.ts +3 -0
- package/dist/commands/crm/contacts.js +5 -0
- package/dist/commands/crm/contacts.js.map +1 -0
- package/dist/commands/crm/custom-objects.d.ts +3 -0
- package/dist/commands/crm/custom-objects.js +83 -0
- package/dist/commands/crm/custom-objects.js.map +1 -0
- package/dist/commands/crm/dated.d.ts +9 -0
- package/dist/commands/crm/dated.js +247 -0
- package/dist/commands/crm/dated.js.map +1 -0
- package/dist/commands/crm/deals.d.ts +3 -0
- package/dist/commands/crm/deals.js +5 -0
- package/dist/commands/crm/deals.js.map +1 -0
- package/dist/commands/crm/describe.d.ts +3 -0
- package/dist/commands/crm/describe.js +89 -0
- package/dist/commands/crm/describe.js.map +1 -0
- package/dist/commands/crm/discounts.d.ts +3 -0
- package/dist/commands/crm/discounts.js +5 -0
- package/dist/commands/crm/discounts.js.map +1 -0
- package/dist/commands/crm/engagements.d.ts +3 -0
- package/dist/commands/crm/engagements.js +8 -0
- package/dist/commands/crm/engagements.js.map +1 -0
- package/dist/commands/crm/fees.d.ts +3 -0
- package/dist/commands/crm/fees.js +5 -0
- package/dist/commands/crm/fees.js.map +1 -0
- package/dist/commands/crm/goals.d.ts +3 -0
- package/dist/commands/crm/goals.js +30 -0
- package/dist/commands/crm/goals.js.map +1 -0
- package/dist/commands/crm/imports.d.ts +3 -0
- package/dist/commands/crm/imports.js +45 -0
- package/dist/commands/crm/imports.js.map +1 -0
- package/dist/commands/crm/index.d.ts +3 -0
- package/dist/commands/crm/index.js +64 -0
- package/dist/commands/crm/index.js.map +1 -0
- package/dist/commands/crm/invoices.d.ts +3 -0
- package/dist/commands/crm/invoices.js +5 -0
- package/dist/commands/crm/invoices.js.map +1 -0
- package/dist/commands/crm/leads.d.ts +3 -0
- package/dist/commands/crm/leads.js +5 -0
- package/dist/commands/crm/leads.js.map +1 -0
- package/dist/commands/crm/line-items.d.ts +3 -0
- package/dist/commands/crm/line-items.js +5 -0
- package/dist/commands/crm/line-items.js.map +1 -0
- package/dist/commands/crm/orders.d.ts +3 -0
- package/dist/commands/crm/orders.js +5 -0
- package/dist/commands/crm/orders.js.map +1 -0
- package/dist/commands/crm/owners.d.ts +3 -0
- package/dist/commands/crm/owners.js +22 -0
- package/dist/commands/crm/owners.js.map +1 -0
- package/dist/commands/crm/payments.d.ts +3 -0
- package/dist/commands/crm/payments.js +5 -0
- package/dist/commands/crm/payments.js.map +1 -0
- package/dist/commands/crm/pipelines.d.ts +3 -0
- package/dist/commands/crm/pipelines.js +70 -0
- package/dist/commands/crm/pipelines.js.map +1 -0
- package/dist/commands/crm/products.d.ts +3 -0
- package/dist/commands/crm/products.js +5 -0
- package/dist/commands/crm/products.js.map +1 -0
- package/dist/commands/crm/properties.d.ts +3 -0
- package/dist/commands/crm/properties.js +103 -0
- package/dist/commands/crm/properties.js.map +1 -0
- package/dist/commands/crm/quotes.d.ts +3 -0
- package/dist/commands/crm/quotes.js +5 -0
- package/dist/commands/crm/quotes.js.map +1 -0
- package/dist/commands/crm/shared.d.ts +17 -0
- package/dist/commands/crm/shared.js +256 -0
- package/dist/commands/crm/shared.js.map +1 -0
- package/dist/commands/crm/subscriptions.d.ts +3 -0
- package/dist/commands/crm/subscriptions.js +5 -0
- package/dist/commands/crm/subscriptions.js.map +1 -0
- package/dist/commands/crm/sync.d.ts +3 -0
- package/dist/commands/crm/sync.js +116 -0
- package/dist/commands/crm/sync.js.map +1 -0
- package/dist/commands/crm/taxes.d.ts +3 -0
- package/dist/commands/crm/taxes.js +5 -0
- package/dist/commands/crm/taxes.js.map +1 -0
- package/dist/commands/crm/tickets.d.ts +3 -0
- package/dist/commands/crm/tickets.js +5 -0
- package/dist/commands/crm/tickets.js.map +1 -0
- package/dist/commands/crm/users.d.ts +3 -0
- package/dist/commands/crm/users.js +5 -0
- package/dist/commands/crm/users.js.map +1 -0
- package/dist/commands/doctor/index.d.ts +3 -0
- package/dist/commands/doctor/index.js +232 -0
- package/dist/commands/doctor/index.js.map +1 -0
- package/dist/commands/domains/shared.d.ts +13 -0
- package/dist/commands/domains/shared.js +56 -0
- package/dist/commands/domains/shared.js.map +1 -0
- package/dist/commands/email-events/index.d.ts +3 -0
- package/dist/commands/email-events/index.js +77 -0
- package/dist/commands/email-events/index.js.map +1 -0
- package/dist/commands/events/index.d.ts +3 -0
- package/dist/commands/events/index.js +80 -0
- package/dist/commands/events/index.js.map +1 -0
- package/dist/commands/exports/index.d.ts +3 -0
- package/dist/commands/exports/index.js +45 -0
- package/dist/commands/exports/index.js.map +1 -0
- package/dist/commands/extensions/index.d.ts +3 -0
- package/dist/commands/extensions/index.js +118 -0
- package/dist/commands/extensions/index.js.map +1 -0
- package/dist/commands/feature-flags/index.d.ts +3 -0
- package/dist/commands/feature-flags/index.js +65 -0
- package/dist/commands/feature-flags/index.js.map +1 -0
- package/dist/commands/files/folders.d.ts +3 -0
- package/dist/commands/files/folders.js +74 -0
- package/dist/commands/files/folders.js.map +1 -0
- package/dist/commands/files/index.d.ts +3 -0
- package/dist/commands/files/index.js +30 -0
- package/dist/commands/files/index.js.map +1 -0
- package/dist/commands/forms/index.d.ts +3 -0
- package/dist/commands/forms/index.js +37 -0
- package/dist/commands/forms/index.js.map +1 -0
- package/dist/commands/integrations/index.d.ts +3 -0
- package/dist/commands/integrations/index.js +64 -0
- package/dist/commands/integrations/index.js.map +1 -0
- package/dist/commands/integrators/index.d.ts +3 -0
- package/dist/commands/integrators/index.js +79 -0
- package/dist/commands/integrators/index.js.map +1 -0
- package/dist/commands/legacy/index.d.ts +13 -0
- package/dist/commands/legacy/index.js +254 -0
- package/dist/commands/legacy/index.js.map +1 -0
- package/dist/commands/legacy-v1/index.d.ts +29 -0
- package/dist/commands/legacy-v1/index.js +568 -0
- package/dist/commands/legacy-v1/index.js.map +1 -0
- package/dist/commands/lists/index.d.ts +3 -0
- package/dist/commands/lists/index.js +148 -0
- package/dist/commands/lists/index.js.map +1 -0
- package/dist/commands/marketing/ads.d.ts +3 -0
- package/dist/commands/marketing/ads.js +45 -0
- package/dist/commands/marketing/ads.js.map +1 -0
- package/dist/commands/marketing/behavioral-events.d.ts +3 -0
- package/dist/commands/marketing/behavioral-events.js +38 -0
- package/dist/commands/marketing/behavioral-events.js.map +1 -0
- package/dist/commands/marketing/events.d.ts +3 -0
- package/dist/commands/marketing/events.js +69 -0
- package/dist/commands/marketing/events.js.map +1 -0
- package/dist/commands/marketing/index.d.ts +3 -0
- package/dist/commands/marketing/index.js +55 -0
- package/dist/commands/marketing/index.js.map +1 -0
- package/dist/commands/marketing/landing-pages.d.ts +3 -0
- package/dist/commands/marketing/landing-pages.js +48 -0
- package/dist/commands/marketing/landing-pages.js.map +1 -0
- package/dist/commands/marketing/seo.d.ts +3 -0
- package/dist/commands/marketing/seo.js +35 -0
- package/dist/commands/marketing/seo.js.map +1 -0
- package/dist/commands/marketing/social.d.ts +3 -0
- package/dist/commands/marketing/social.js +45 -0
- package/dist/commands/marketing/social.js.map +1 -0
- package/dist/commands/marketing/subscriptions.d.ts +3 -0
- package/dist/commands/marketing/subscriptions.js +27 -0
- package/dist/commands/marketing/subscriptions.js.map +1 -0
- package/dist/commands/marketing/transactional.d.ts +3 -0
- package/dist/commands/marketing/transactional.js +30 -0
- package/dist/commands/marketing/transactional.js.map +1 -0
- package/dist/commands/marketing-emails-v1/index.d.ts +3 -0
- package/dist/commands/marketing-emails-v1/index.js +72 -0
- package/dist/commands/marketing-emails-v1/index.js.map +1 -0
- package/dist/commands/mcp.d.ts +2 -0
- package/dist/commands/mcp.js +10 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/media-bridge/index.d.ts +3 -0
- package/dist/commands/media-bridge/index.js +209 -0
- package/dist/commands/media-bridge/index.js.map +1 -0
- package/dist/commands/reporting/index.d.ts +3 -0
- package/dist/commands/reporting/index.js +73 -0
- package/dist/commands/reporting/index.js.map +1 -0
- package/dist/commands/sales/calling.d.ts +3 -0
- package/dist/commands/sales/calling.js +32 -0
- package/dist/commands/sales/calling.js.map +1 -0
- package/dist/commands/sales/index.d.ts +3 -0
- package/dist/commands/sales/index.js +10 -0
- package/dist/commands/sales/index.js.map +1 -0
- package/dist/commands/sales/meetings.d.ts +3 -0
- package/dist/commands/sales/meetings.js +37 -0
- package/dist/commands/sales/meetings.js.map +1 -0
- package/dist/commands/sales/sequences.d.ts +3 -0
- package/dist/commands/sales/sequences.js +78 -0
- package/dist/commands/sales/sequences.js.map +1 -0
- package/dist/commands/seed/cms.d.ts +6 -0
- package/dist/commands/seed/cms.js +204 -0
- package/dist/commands/seed/cms.js.map +1 -0
- package/dist/commands/seed/commerce.d.ts +3 -0
- package/dist/commands/seed/commerce.js +117 -0
- package/dist/commands/seed/commerce.js.map +1 -0
- package/dist/commands/seed/context.d.ts +8 -0
- package/dist/commands/seed/context.js +76 -0
- package/dist/commands/seed/context.js.map +1 -0
- package/dist/commands/seed/crm-core.d.ts +3 -0
- package/dist/commands/seed/crm-core.js +137 -0
- package/dist/commands/seed/crm-core.js.map +1 -0
- package/dist/commands/seed/data.d.ts +73 -0
- package/dist/commands/seed/data.js +49 -0
- package/dist/commands/seed/data.js.map +1 -0
- package/dist/commands/seed/engagements.d.ts +3 -0
- package/dist/commands/seed/engagements.js +89 -0
- package/dist/commands/seed/engagements.js.map +1 -0
- package/dist/commands/seed/index.d.ts +3 -0
- package/dist/commands/seed/index.js +95 -0
- package/dist/commands/seed/index.js.map +1 -0
- package/dist/commands/seed/infra.d.ts +6 -0
- package/dist/commands/seed/infra.js +163 -0
- package/dist/commands/seed/infra.js.map +1 -0
- package/dist/commands/seed/marketing.d.ts +3 -0
- package/dist/commands/seed/marketing.js +172 -0
- package/dist/commands/seed/marketing.js.map +1 -0
- package/dist/commands/seed/shared.d.ts +8 -0
- package/dist/commands/seed/shared.js +37 -0
- package/dist/commands/seed/shared.js.map +1 -0
- package/dist/commands/seed/types.d.ts +44 -0
- package/dist/commands/seed/types.js +2 -0
- package/dist/commands/seed/types.js.map +1 -0
- package/dist/commands/service/chatflows.d.ts +3 -0
- package/dist/commands/service/chatflows.js +30 -0
- package/dist/commands/service/chatflows.js.map +1 -0
- package/dist/commands/service/index.d.ts +3 -0
- package/dist/commands/service/index.js +25 -0
- package/dist/commands/service/index.js.map +1 -0
- package/dist/commands/service/knowledge-base.d.ts +3 -0
- package/dist/commands/service/knowledge-base.js +19 -0
- package/dist/commands/service/knowledge-base.js.map +1 -0
- package/dist/commands/service/pipelines.d.ts +3 -0
- package/dist/commands/service/pipelines.js +36 -0
- package/dist/commands/service/pipelines.js.map +1 -0
- package/dist/commands/settings/index.d.ts +3 -0
- package/dist/commands/settings/index.js +149 -0
- package/dist/commands/settings/index.js.map +1 -0
- package/dist/commands/site-search/index.d.ts +3 -0
- package/dist/commands/site-search/index.js +36 -0
- package/dist/commands/site-search/index.js.map +1 -0
- package/dist/commands/timeline/index.d.ts +3 -0
- package/dist/commands/timeline/index.js +32 -0
- package/dist/commands/timeline/index.js.map +1 -0
- package/dist/commands/webhooks/index.d.ts +3 -0
- package/dist/commands/webhooks/index.js +41 -0
- package/dist/commands/webhooks/index.js.map +1 -0
- package/dist/commands/workflows/index.d.ts +3 -0
- package/dist/commands/workflows/index.js +13 -0
- package/dist/commands/workflows/index.js.map +1 -0
- package/dist/core/auth.d.ts +33 -0
- package/dist/core/auth.js +137 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/capabilities.d.ts +60 -0
- package/dist/core/capabilities.js +559 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/http.d.ts +47 -0
- package/dist/core/http.js +433 -0
- package/dist/core/http.js.map +1 -0
- package/dist/core/output.d.ts +23 -0
- package/dist/core/output.js +197 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/permissions.d.ts +9 -0
- package/dist/core/permissions.js +27 -0
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/plugins.d.ts +42 -0
- package/dist/core/plugins.js +94 -0
- package/dist/core/plugins.js.map +1 -0
- package/dist/core/policy.d.ts +2 -0
- package/dist/core/policy.js +38 -0
- package/dist/core/policy.js.map +1 -0
- package/dist/core/schema-cache.d.ts +56 -0
- package/dist/core/schema-cache.js +338 -0
- package/dist/core/schema-cache.js.map +1 -0
- package/dist/core/schemas.d.ts +96 -0
- package/dist/core/schemas.js +104 -0
- package/dist/core/schemas.js.map +1 -0
- package/dist/core/urls.d.ts +50 -0
- package/dist/core/urls.js +122 -0
- package/dist/core/urls.js.map +1 -0
- package/dist/core/vault.d.ts +37 -0
- package/dist/core/vault.js +143 -0
- package/dist/core/vault.js.map +1 -0
- package/dist/mcp/server.d.ts +5 -0
- package/dist/mcp/server.js +680 -0
- package/dist/mcp/server.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { getToken } from "../../core/auth.js";
|
|
2
|
+
import { HubSpotClient } from "../../core/http.js";
|
|
3
|
+
import { printResult } from "../../core/output.js";
|
|
4
|
+
import { encodePathSegment, maybeWrite, parseJsonPayload } from "../crm/shared.js";
|
|
5
|
+
export function registerCommunicationPreferences(program, getCtx) {
|
|
6
|
+
const commPrefs = program.command("communication-preferences").description("HubSpot communication preferences / subscription management");
|
|
7
|
+
commPrefs
|
|
8
|
+
.command("subscription-types")
|
|
9
|
+
.description("List subscription types")
|
|
10
|
+
.action(async () => {
|
|
11
|
+
const ctx = getCtx();
|
|
12
|
+
const client = new HubSpotClient(getToken(ctx.profile));
|
|
13
|
+
const res = await client.request("/communication-preferences/v3/definitions");
|
|
14
|
+
printResult(ctx, res);
|
|
15
|
+
});
|
|
16
|
+
commPrefs
|
|
17
|
+
.command("status")
|
|
18
|
+
.argument("<email>")
|
|
19
|
+
.description("Get subscription status for an email address")
|
|
20
|
+
.action(async (email) => {
|
|
21
|
+
const ctx = getCtx();
|
|
22
|
+
const client = new HubSpotClient(getToken(ctx.profile));
|
|
23
|
+
const res = await client.request(`/communication-preferences/v3/status/email/${encodePathSegment(email, "email")}`);
|
|
24
|
+
printResult(ctx, res);
|
|
25
|
+
});
|
|
26
|
+
commPrefs
|
|
27
|
+
.command("subscribe")
|
|
28
|
+
.requiredOption("--data <payload>", "Subscribe payload JSON (emailAddress, subscriptionId)")
|
|
29
|
+
.description("Subscribe a contact")
|
|
30
|
+
.action(async (opts) => {
|
|
31
|
+
const ctx = getCtx();
|
|
32
|
+
const client = new HubSpotClient(getToken(ctx.profile));
|
|
33
|
+
const payload = parseJsonPayload(opts.data);
|
|
34
|
+
const res = await maybeWrite(ctx, client, "POST", "/communication-preferences/v3/subscribe", payload);
|
|
35
|
+
printResult(ctx, res);
|
|
36
|
+
});
|
|
37
|
+
commPrefs
|
|
38
|
+
.command("unsubscribe")
|
|
39
|
+
.requiredOption("--data <payload>", "Unsubscribe payload JSON (emailAddress, subscriptionId)")
|
|
40
|
+
.description("Unsubscribe a contact")
|
|
41
|
+
.action(async (opts) => {
|
|
42
|
+
const ctx = getCtx();
|
|
43
|
+
const client = new HubSpotClient(getToken(ctx.profile));
|
|
44
|
+
const payload = parseJsonPayload(opts.data);
|
|
45
|
+
const res = await maybeWrite(ctx, client, "POST", "/communication-preferences/v3/unsubscribe", payload);
|
|
46
|
+
printResult(ctx, res);
|
|
47
|
+
});
|
|
48
|
+
// V4 batch endpoints (latest API, for portals using the new contact-centric preferences model)
|
|
49
|
+
const v4 = commPrefs.command("v4").description("Communication Preferences v4 (contact-centric, batch-capable)");
|
|
50
|
+
v4.command("status-batch-read")
|
|
51
|
+
.description("Batch-read subscription statuses for up to 100 contacts")
|
|
52
|
+
.requiredOption("--data <payload>", "Batch input JSON: { inputs: [{ subscriberIdString, channel, subscriptionId }, ...] }")
|
|
53
|
+
.action(async (opts) => {
|
|
54
|
+
const ctx = getCtx();
|
|
55
|
+
const client = new HubSpotClient(getToken(ctx.profile));
|
|
56
|
+
const payload = parseJsonPayload(opts.data);
|
|
57
|
+
const res = await client.request("/communication/preferences/v4/statuses/batch-read", { method: "POST", body: payload });
|
|
58
|
+
printResult(ctx, res);
|
|
59
|
+
});
|
|
60
|
+
v4.command("status-update-batch")
|
|
61
|
+
.description("Batch-update subscription statuses")
|
|
62
|
+
.requiredOption("--data <payload>", "Batch update payload JSON")
|
|
63
|
+
.action(async (opts) => {
|
|
64
|
+
const ctx = getCtx();
|
|
65
|
+
const client = new HubSpotClient(getToken(ctx.profile));
|
|
66
|
+
const payload = parseJsonPayload(opts.data);
|
|
67
|
+
const res = await maybeWrite(ctx, client, "POST", "/communication/preferences/v4/statuses/batch-update", payload);
|
|
68
|
+
printResult(ctx, res);
|
|
69
|
+
});
|
|
70
|
+
v4.command("subscribe-batch")
|
|
71
|
+
.description("Batch-subscribe")
|
|
72
|
+
.requiredOption("--data <payload>", "Batch subscribe payload JSON")
|
|
73
|
+
.action(async (opts) => {
|
|
74
|
+
const ctx = getCtx();
|
|
75
|
+
const client = new HubSpotClient(getToken(ctx.profile));
|
|
76
|
+
const payload = parseJsonPayload(opts.data);
|
|
77
|
+
const res = await maybeWrite(ctx, client, "POST", "/communication/preferences/v4/subscribe-batch", payload);
|
|
78
|
+
printResult(ctx, res);
|
|
79
|
+
});
|
|
80
|
+
v4.command("unsubscribe-batch")
|
|
81
|
+
.description("Batch-unsubscribe")
|
|
82
|
+
.requiredOption("--data <payload>", "Batch unsubscribe payload JSON")
|
|
83
|
+
.action(async (opts) => {
|
|
84
|
+
const ctx = getCtx();
|
|
85
|
+
const client = new HubSpotClient(getToken(ctx.profile));
|
|
86
|
+
const payload = parseJsonPayload(opts.data);
|
|
87
|
+
const res = await maybeWrite(ctx, client, "POST", "/communication/preferences/v4/unsubscribe-batch", payload);
|
|
88
|
+
printResult(ctx, res);
|
|
89
|
+
});
|
|
90
|
+
v4.command("subscriptions-list")
|
|
91
|
+
.description("List subscription definitions (v4)")
|
|
92
|
+
.action(async () => {
|
|
93
|
+
const ctx = getCtx();
|
|
94
|
+
const client = new HubSpotClient(getToken(ctx.profile));
|
|
95
|
+
const res = await client.request("/communication/preferences/v4/subscriptions");
|
|
96
|
+
printResult(ctx, res);
|
|
97
|
+
});
|
|
98
|
+
v4.command("channels-list")
|
|
99
|
+
.description("List supported channels (email, sms, whatsapp, etc.)")
|
|
100
|
+
.action(async () => {
|
|
101
|
+
const ctx = getCtx();
|
|
102
|
+
const client = new HubSpotClient(getToken(ctx.profile));
|
|
103
|
+
const res = await client.request("/communication/preferences/v4/channels");
|
|
104
|
+
printResult(ctx, res);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/communication-preferences/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEnF,MAAM,UAAU,gCAAgC,CAAC,OAAgB,EAAE,MAAwB;IACzF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,WAAW,CAAC,6DAA6D,CAAC,CAAC;IAE1I,SAAS;SACN,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;QAC9E,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,SAAS;SACN,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,SAAS,CAAC;SACnB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,8CAA8C,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACpH,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,SAAS;SACN,OAAO,CAAC,WAAW,CAAC;SACpB,cAAc,CAAC,kBAAkB,EAAE,uDAAuD,CAAC;SAC3F,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,yCAAyC,EAAE,OAAO,CAAC,CAAC;QACtG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,SAAS;SACN,OAAO,CAAC,aAAa,CAAC;SACtB,cAAc,CAAC,kBAAkB,EAAE,yDAAyD,CAAC;SAC7F,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,2CAA2C,EAAE,OAAO,CAAC,CAAC;QACxG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,+FAA+F;IAC/F,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,+DAA+D,CAAC,CAAC;IAChH,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,yDAAyD,CAAC;SACtE,cAAc,CAAC,kBAAkB,EAAE,sFAAsF,CAAC;SAC1H,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,mDAAmD,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACzH,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACL,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,oCAAoC,CAAC;SACjD,cAAc,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;SAC/D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qDAAqD,EAAE,OAAO,CAAC,CAAC;QAClH,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACL,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,iBAAiB,CAAC;SAC9B,cAAc,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,CAAC,CAAC;QAC5G,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACL,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,mBAAmB,CAAC;SAChC,cAAc,CAAC,kBAAkB,EAAE,gCAAgC,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,iDAAiD,EAAE,OAAO,CAAC,CAAC;QAC9G,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACL,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;QAChF,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACL,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,sDAAsD,CAAC;SACnE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QAC3E,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { createClient } from "../../core/http.js";
|
|
2
|
+
import { printResult } from "../../core/output.js";
|
|
3
|
+
import { appendOptional, encodePathSegment, maybeWrite, parseJsonPayload, parseNumberFlag } from "../crm/shared.js";
|
|
4
|
+
export function registerConversations(program, getCtx) {
|
|
5
|
+
const conversations = program.command("conversations").description("HubSpot Conversations APIs (threads & messages)");
|
|
6
|
+
const threads = conversations.command("threads").description("Conversation threads");
|
|
7
|
+
threads
|
|
8
|
+
.command("list")
|
|
9
|
+
.option("--limit <n>", "Max records", "50")
|
|
10
|
+
.option("--after <cursor>", "Paging cursor")
|
|
11
|
+
.action(async (opts) => {
|
|
12
|
+
const ctx = getCtx();
|
|
13
|
+
const client = createClient(ctx.profile);
|
|
14
|
+
const params = new URLSearchParams();
|
|
15
|
+
params.set("limit", String(parseNumberFlag(opts.limit, "--limit")));
|
|
16
|
+
appendOptional(params, "after", opts.after);
|
|
17
|
+
const res = await client.request(`/conversations/v3/conversations/threads?${params.toString()}`);
|
|
18
|
+
printResult(ctx, res);
|
|
19
|
+
});
|
|
20
|
+
threads
|
|
21
|
+
.command("get")
|
|
22
|
+
.argument("<threadId>")
|
|
23
|
+
.action(async (threadId) => {
|
|
24
|
+
const ctx = getCtx();
|
|
25
|
+
const client = createClient(ctx.profile);
|
|
26
|
+
const id = encodePathSegment(threadId, "threadId");
|
|
27
|
+
const res = await client.request(`/conversations/v3/conversations/threads/${id}`);
|
|
28
|
+
printResult(ctx, res);
|
|
29
|
+
});
|
|
30
|
+
const messages = conversations.command("messages").description("Thread messages");
|
|
31
|
+
messages
|
|
32
|
+
.command("list")
|
|
33
|
+
.argument("<threadId>")
|
|
34
|
+
.option("--limit <n>", "Max records", "50")
|
|
35
|
+
.option("--after <cursor>", "Paging cursor")
|
|
36
|
+
.action(async (threadId, opts) => {
|
|
37
|
+
const ctx = getCtx();
|
|
38
|
+
const client = createClient(ctx.profile);
|
|
39
|
+
const id = encodePathSegment(threadId, "threadId");
|
|
40
|
+
const params = new URLSearchParams();
|
|
41
|
+
params.set("limit", String(parseNumberFlag(opts.limit, "--limit")));
|
|
42
|
+
appendOptional(params, "after", opts.after);
|
|
43
|
+
const res = await client.request(`/conversations/v3/conversations/threads/${id}/messages?${params.toString()}`);
|
|
44
|
+
printResult(ctx, res);
|
|
45
|
+
});
|
|
46
|
+
const inboxes = conversations.command("inboxes").description("Conversation inboxes (channel routing destinations)");
|
|
47
|
+
inboxes
|
|
48
|
+
.command("list")
|
|
49
|
+
.option("--limit <n>", "Max records", "50")
|
|
50
|
+
.option("--after <cursor>", "Paging cursor")
|
|
51
|
+
.action(async (opts) => {
|
|
52
|
+
const ctx = getCtx();
|
|
53
|
+
const client = createClient(ctx.profile);
|
|
54
|
+
const params = new URLSearchParams();
|
|
55
|
+
params.set("limit", String(parseNumberFlag(opts.limit, "--limit")));
|
|
56
|
+
appendOptional(params, "after", opts.after);
|
|
57
|
+
const res = await client.request(`/conversations/v3/conversations/inboxes?${params.toString()}`);
|
|
58
|
+
printResult(ctx, res);
|
|
59
|
+
});
|
|
60
|
+
inboxes
|
|
61
|
+
.command("get")
|
|
62
|
+
.argument("<inboxId>")
|
|
63
|
+
.action(async (inboxId) => {
|
|
64
|
+
const ctx = getCtx();
|
|
65
|
+
const client = createClient(ctx.profile);
|
|
66
|
+
const id = encodePathSegment(inboxId, "inboxId");
|
|
67
|
+
const res = await client.request(`/conversations/v3/conversations/inboxes/${id}`);
|
|
68
|
+
printResult(ctx, res);
|
|
69
|
+
});
|
|
70
|
+
const channels = conversations.command("channels").description("Conversation channels (email, chat, FB, forms, etc.)");
|
|
71
|
+
channels
|
|
72
|
+
.command("list")
|
|
73
|
+
.option("--limit <n>", "Max records", "50")
|
|
74
|
+
.option("--after <cursor>", "Paging cursor")
|
|
75
|
+
.action(async (opts) => {
|
|
76
|
+
const ctx = getCtx();
|
|
77
|
+
const client = createClient(ctx.profile);
|
|
78
|
+
const params = new URLSearchParams();
|
|
79
|
+
params.set("limit", String(parseNumberFlag(opts.limit, "--limit")));
|
|
80
|
+
appendOptional(params, "after", opts.after);
|
|
81
|
+
const res = await client.request(`/conversations/v3/conversations/channels?${params.toString()}`);
|
|
82
|
+
printResult(ctx, res);
|
|
83
|
+
});
|
|
84
|
+
channels
|
|
85
|
+
.command("get")
|
|
86
|
+
.argument("<channelId>")
|
|
87
|
+
.action(async (channelId) => {
|
|
88
|
+
const ctx = getCtx();
|
|
89
|
+
const client = createClient(ctx.profile);
|
|
90
|
+
const id = encodePathSegment(channelId, "channelId");
|
|
91
|
+
const res = await client.request(`/conversations/v3/conversations/channels/${id}`);
|
|
92
|
+
printResult(ctx, res);
|
|
93
|
+
});
|
|
94
|
+
const channelAccounts = conversations.command("channel-accounts").description("Conversation channel accounts (specific connected mailboxes/inboxes on a channel)");
|
|
95
|
+
channelAccounts
|
|
96
|
+
.command("list")
|
|
97
|
+
.option("--limit <n>", "Max records", "50")
|
|
98
|
+
.option("--after <cursor>", "Paging cursor")
|
|
99
|
+
.option("--channel-id <id>", "Filter by channel id")
|
|
100
|
+
.option("--inbox-id <id>", "Filter by inbox id")
|
|
101
|
+
.action(async (opts) => {
|
|
102
|
+
const ctx = getCtx();
|
|
103
|
+
const client = createClient(ctx.profile);
|
|
104
|
+
const params = new URLSearchParams();
|
|
105
|
+
params.set("limit", String(parseNumberFlag(opts.limit, "--limit")));
|
|
106
|
+
appendOptional(params, "after", opts.after);
|
|
107
|
+
appendOptional(params, "channelId", opts.channelId);
|
|
108
|
+
appendOptional(params, "inboxId", opts.inboxId);
|
|
109
|
+
const res = await client.request(`/conversations/v3/conversations/channel-accounts?${params.toString()}`);
|
|
110
|
+
printResult(ctx, res);
|
|
111
|
+
});
|
|
112
|
+
channelAccounts
|
|
113
|
+
.command("get")
|
|
114
|
+
.argument("<channelAccountId>")
|
|
115
|
+
.action(async (channelAccountId) => {
|
|
116
|
+
const ctx = getCtx();
|
|
117
|
+
const client = createClient(ctx.profile);
|
|
118
|
+
const id = encodePathSegment(channelAccountId, "channelAccountId");
|
|
119
|
+
const res = await client.request(`/conversations/v3/conversations/channel-accounts/${id}`);
|
|
120
|
+
printResult(ctx, res);
|
|
121
|
+
});
|
|
122
|
+
const actors = conversations.command("actors").description("Conversation actors (agents, bots, visitors) for hydrating threads");
|
|
123
|
+
actors
|
|
124
|
+
.command("get")
|
|
125
|
+
.argument("<actorId>")
|
|
126
|
+
.description("Get actor details by actor id (e.g. A-12345, V-abcdef)")
|
|
127
|
+
.action(async (actorId) => {
|
|
128
|
+
const ctx = getCtx();
|
|
129
|
+
const client = createClient(ctx.profile);
|
|
130
|
+
const id = encodePathSegment(actorId, "actorId");
|
|
131
|
+
const res = await client.request(`/conversations/v3/conversations/actors/${id}`);
|
|
132
|
+
printResult(ctx, res);
|
|
133
|
+
});
|
|
134
|
+
actors
|
|
135
|
+
.command("batch-read")
|
|
136
|
+
.description("Batch-read actor details for up to 100 actor ids in one call")
|
|
137
|
+
.requiredOption("--ids <csv>", "Comma-separated list of actor ids")
|
|
138
|
+
.action(async (opts) => {
|
|
139
|
+
const ctx = getCtx();
|
|
140
|
+
const client = createClient(ctx.profile);
|
|
141
|
+
const ids = String(opts.ids).split(",").map((s) => s.trim()).filter(Boolean);
|
|
142
|
+
const res = await client.request(`/conversations/v3/conversations/actors/batch/read`, {
|
|
143
|
+
method: "POST",
|
|
144
|
+
body: { inputs: ids.map((id) => ({ id })) },
|
|
145
|
+
});
|
|
146
|
+
printResult(ctx, res);
|
|
147
|
+
});
|
|
148
|
+
// Custom Channels — app-dev defined channels (SMS/Slack/custom integrations)
|
|
149
|
+
const customChannels = conversations.command("custom-channels").description("Custom conversation channels (app-dev defined integrations)");
|
|
150
|
+
customChannels.command("list").option("--limit <n>", "Max records", "50").option("--after <cursor>", "Paging cursor").action(async (opts) => {
|
|
151
|
+
const ctx = getCtx();
|
|
152
|
+
const client = createClient(ctx.profile);
|
|
153
|
+
const params = new URLSearchParams();
|
|
154
|
+
params.set("limit", String(parseNumberFlag(opts.limit, "--limit")));
|
|
155
|
+
appendOptional(params, "after", opts.after);
|
|
156
|
+
const res = await client.request(`/conversations/v3/custom-channels?${params.toString()}`);
|
|
157
|
+
printResult(ctx, res);
|
|
158
|
+
});
|
|
159
|
+
customChannels.command("get").argument("<channelId>").action(async (channelId) => {
|
|
160
|
+
const ctx = getCtx();
|
|
161
|
+
const client = createClient(ctx.profile);
|
|
162
|
+
const seg = encodePathSegment(channelId, "channelId");
|
|
163
|
+
const res = await client.request(`/conversations/v3/custom-channels/${seg}`);
|
|
164
|
+
printResult(ctx, res);
|
|
165
|
+
});
|
|
166
|
+
customChannels.command("create").requiredOption("--data <payload>", "Custom channel payload JSON").action(async (o) => {
|
|
167
|
+
const ctx = getCtx();
|
|
168
|
+
const client = createClient(ctx.profile);
|
|
169
|
+
const res = await maybeWrite(ctx, client, "POST", `/conversations/v3/custom-channels`, parseJsonPayload(o.data));
|
|
170
|
+
printResult(ctx, res);
|
|
171
|
+
});
|
|
172
|
+
customChannels.command("update").argument("<channelId>").requiredOption("--data <payload>", "Custom channel patch JSON").action(async (channelId, o) => {
|
|
173
|
+
const ctx = getCtx();
|
|
174
|
+
const client = createClient(ctx.profile);
|
|
175
|
+
const seg = encodePathSegment(channelId, "channelId");
|
|
176
|
+
const res = await maybeWrite(ctx, client, "PATCH", `/conversations/v3/custom-channels/${seg}`, parseJsonPayload(o.data));
|
|
177
|
+
printResult(ctx, res);
|
|
178
|
+
});
|
|
179
|
+
customChannels.command("delete").argument("<channelId>").action(async (channelId) => {
|
|
180
|
+
const ctx = getCtx();
|
|
181
|
+
const client = createClient(ctx.profile);
|
|
182
|
+
const seg = encodePathSegment(channelId, "channelId");
|
|
183
|
+
const res = await maybeWrite(ctx, client, "DELETE", `/conversations/v3/custom-channels/${seg}`);
|
|
184
|
+
printResult(ctx, res);
|
|
185
|
+
});
|
|
186
|
+
// Custom channels: channel-accounts subresource
|
|
187
|
+
const customAccounts = customChannels.command("channel-accounts").description("Channel accounts associated with a custom channel");
|
|
188
|
+
customAccounts.command("list").argument("<channelId>").option("--limit <n>", "Max records", "50").action(async (channelId, opts) => {
|
|
189
|
+
const ctx = getCtx();
|
|
190
|
+
const client = createClient(ctx.profile);
|
|
191
|
+
const seg = encodePathSegment(channelId, "channelId");
|
|
192
|
+
const params = new URLSearchParams();
|
|
193
|
+
params.set("limit", String(parseNumberFlag(opts.limit, "--limit")));
|
|
194
|
+
const res = await client.request(`/conversations/v3/custom-channels/${seg}/channel-accounts?${params.toString()}`);
|
|
195
|
+
printResult(ctx, res);
|
|
196
|
+
});
|
|
197
|
+
customAccounts.command("create").argument("<channelId>").requiredOption("--data <payload>", "Channel account payload JSON").action(async (channelId, o) => {
|
|
198
|
+
const ctx = getCtx();
|
|
199
|
+
const client = createClient(ctx.profile);
|
|
200
|
+
const seg = encodePathSegment(channelId, "channelId");
|
|
201
|
+
const res = await maybeWrite(ctx, client, "POST", `/conversations/v3/custom-channels/${seg}/channel-accounts`, parseJsonPayload(o.data));
|
|
202
|
+
printResult(ctx, res);
|
|
203
|
+
});
|
|
204
|
+
customAccounts.command("update").argument("<channelId>").argument("<channelAccountId>").requiredOption("--data <payload>", "Channel account patch JSON").action(async (channelId, channelAccountId, o) => {
|
|
205
|
+
const ctx = getCtx();
|
|
206
|
+
const client = createClient(ctx.profile);
|
|
207
|
+
const seg = encodePathSegment(channelId, "channelId");
|
|
208
|
+
const accSeg = encodePathSegment(channelAccountId, "channelAccountId");
|
|
209
|
+
const res = await maybeWrite(ctx, client, "PATCH", `/conversations/v3/custom-channels/${seg}/channel-accounts/${accSeg}`, parseJsonPayload(o.data));
|
|
210
|
+
printResult(ctx, res);
|
|
211
|
+
});
|
|
212
|
+
customAccounts.command("delete").argument("<channelId>").argument("<channelAccountId>").action(async (channelId, channelAccountId) => {
|
|
213
|
+
const ctx = getCtx();
|
|
214
|
+
const client = createClient(ctx.profile);
|
|
215
|
+
const seg = encodePathSegment(channelId, "channelId");
|
|
216
|
+
const accSeg = encodePathSegment(channelAccountId, "channelAccountId");
|
|
217
|
+
const res = await maybeWrite(ctx, client, "DELETE", `/conversations/v3/custom-channels/${seg}/channel-accounts/${accSeg}`);
|
|
218
|
+
printResult(ctx, res);
|
|
219
|
+
});
|
|
220
|
+
// Messages: send a new inbound/outbound message on an existing thread
|
|
221
|
+
messages.command("send")
|
|
222
|
+
.argument("<threadId>")
|
|
223
|
+
.description("Send a message into an existing thread (inbound/outbound)")
|
|
224
|
+
.requiredOption("--data <payload>", "Message payload JSON")
|
|
225
|
+
.action(async (threadId, o) => {
|
|
226
|
+
const ctx = getCtx();
|
|
227
|
+
const client = createClient(ctx.profile);
|
|
228
|
+
const id = encodePathSegment(threadId, "threadId");
|
|
229
|
+
const res = await maybeWrite(ctx, client, "POST", `/conversations/v3/conversations/threads/${id}/messages`, parseJsonPayload(o.data));
|
|
230
|
+
printResult(ctx, res);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/conversations/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { createClient } from "../../core/http.js";
|
|
2
|
+
import { CliError, printResult } from "../../core/output.js";
|
|
3
|
+
import { encodePathSegment, maybeWrite, parseJsonPayload, parseNumberFlag } from "./shared.js";
|
|
4
|
+
const KNOWN_OBJECT_TYPES = new Set([
|
|
5
|
+
"contacts", "companies", "deals", "tickets",
|
|
6
|
+
"notes", "calls", "tasks", "emails", "meetings",
|
|
7
|
+
]);
|
|
8
|
+
let customObjectCache = null;
|
|
9
|
+
async function fetchCustomObjectMap(client) {
|
|
10
|
+
if (customObjectCache)
|
|
11
|
+
return customObjectCache;
|
|
12
|
+
customObjectCache = new Map();
|
|
13
|
+
try {
|
|
14
|
+
const res = await client.request("/crm/v3/schemas");
|
|
15
|
+
for (const schema of res.results ?? []) {
|
|
16
|
+
if (schema.name && schema.objectTypeId) {
|
|
17
|
+
customObjectCache.set(schema.name.toLowerCase(), schema.objectTypeId);
|
|
18
|
+
if (schema.labels?.singular)
|
|
19
|
+
customObjectCache.set(schema.labels.singular.toLowerCase(), schema.objectTypeId);
|
|
20
|
+
if (schema.labels?.plural)
|
|
21
|
+
customObjectCache.set(schema.labels.plural.toLowerCase(), schema.objectTypeId);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// If schema fetch fails, we'll just pass through the raw value
|
|
27
|
+
}
|
|
28
|
+
return customObjectCache;
|
|
29
|
+
}
|
|
30
|
+
async function resolveObjectType(raw, client, flagName) {
|
|
31
|
+
const value = raw?.trim().toLowerCase();
|
|
32
|
+
if (!value) {
|
|
33
|
+
throw new CliError("UNSUPPORTED_OBJECT_TYPE", `${flagName} cannot be empty`);
|
|
34
|
+
}
|
|
35
|
+
// Known standard/engagement types — pass through
|
|
36
|
+
if (KNOWN_OBJECT_TYPES.has(value))
|
|
37
|
+
return value;
|
|
38
|
+
// Already an objectTypeId (e.g. 2-199622513) — pass through
|
|
39
|
+
if (/^\d+-\d+$/.test(value))
|
|
40
|
+
return value;
|
|
41
|
+
// Try to resolve from custom object schemas
|
|
42
|
+
const map = await fetchCustomObjectMap(client);
|
|
43
|
+
const resolved = map.get(value);
|
|
44
|
+
if (resolved)
|
|
45
|
+
return resolved;
|
|
46
|
+
// Pass through as-is — let HubSpot API validate
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
export function registerAssociations(crm, getCtx) {
|
|
50
|
+
const associations = crm.command("associations").description("Associations between CRM objects");
|
|
51
|
+
associations
|
|
52
|
+
.command("list")
|
|
53
|
+
.argument("<fromObjectType>")
|
|
54
|
+
.argument("<fromObjectId>")
|
|
55
|
+
.argument("<toObjectType>")
|
|
56
|
+
.option("--limit <n>", "Max records", "100")
|
|
57
|
+
.option("--after <cursor>", "Paging cursor")
|
|
58
|
+
.action(async (fromObjectType, fromObjectId, toObjectType, opts) => {
|
|
59
|
+
const ctx = getCtx();
|
|
60
|
+
const client = createClient(ctx.profile);
|
|
61
|
+
const fromObjectTypeValue = await resolveObjectType(fromObjectType, client, "fromObjectType");
|
|
62
|
+
const toObjectTypeValue = await resolveObjectType(toObjectType, client, "toObjectType");
|
|
63
|
+
const fromObjectTypeSegment = encodePathSegment(fromObjectTypeValue, "fromObjectType");
|
|
64
|
+
const fromObjectIdSegment = encodePathSegment(fromObjectId, "fromObjectId");
|
|
65
|
+
const toObjectTypeSegment = encodePathSegment(toObjectTypeValue, "toObjectType");
|
|
66
|
+
const params = new URLSearchParams();
|
|
67
|
+
params.set("limit", String(parseNumberFlag(opts.limit, "--limit")));
|
|
68
|
+
if (opts.after)
|
|
69
|
+
params.set("after", opts.after);
|
|
70
|
+
const path = `/crm/v4/objects/${fromObjectTypeSegment}/${fromObjectIdSegment}/associations/${toObjectTypeSegment}?${params.toString()}`;
|
|
71
|
+
const res = await client.request(path);
|
|
72
|
+
printResult(ctx, res);
|
|
73
|
+
});
|
|
74
|
+
associations
|
|
75
|
+
.command("create")
|
|
76
|
+
.argument("<fromObjectType>")
|
|
77
|
+
.argument("<fromObjectId>")
|
|
78
|
+
.argument("<toObjectType>")
|
|
79
|
+
.argument("<toObjectId>")
|
|
80
|
+
.action(async (fromObjectType, fromObjectId, toObjectType, toObjectId) => {
|
|
81
|
+
const ctx = getCtx();
|
|
82
|
+
const client = createClient(ctx.profile);
|
|
83
|
+
const fromObjectTypeValue = await resolveObjectType(fromObjectType, client, "fromObjectType");
|
|
84
|
+
const toObjectTypeValue = await resolveObjectType(toObjectType, client, "toObjectType");
|
|
85
|
+
const fromObjectTypeSegment = encodePathSegment(fromObjectTypeValue, "fromObjectType");
|
|
86
|
+
const fromObjectIdSegment = encodePathSegment(fromObjectId, "fromObjectId");
|
|
87
|
+
const toObjectTypeSegment = encodePathSegment(toObjectTypeValue, "toObjectType");
|
|
88
|
+
const toObjectIdSegment = encodePathSegment(toObjectId, "toObjectId");
|
|
89
|
+
const path = `/crm/v4/objects/${fromObjectTypeSegment}/${fromObjectIdSegment}/associations/default/${toObjectTypeSegment}/${toObjectIdSegment}`;
|
|
90
|
+
const res = await maybeWrite(ctx, client, "PUT", path);
|
|
91
|
+
printResult(ctx, res);
|
|
92
|
+
});
|
|
93
|
+
associations
|
|
94
|
+
.command("remove")
|
|
95
|
+
.argument("<fromObjectType>")
|
|
96
|
+
.argument("<fromObjectId>")
|
|
97
|
+
.argument("<toObjectType>")
|
|
98
|
+
.argument("<toObjectId>")
|
|
99
|
+
.action(async (fromObjectType, fromObjectId, toObjectType, toObjectId) => {
|
|
100
|
+
const ctx = getCtx();
|
|
101
|
+
const client = createClient(ctx.profile);
|
|
102
|
+
const fromObjectTypeValue = await resolveObjectType(fromObjectType, client, "fromObjectType");
|
|
103
|
+
const toObjectTypeValue = await resolveObjectType(toObjectType, client, "toObjectType");
|
|
104
|
+
const fromObjectTypeSegment = encodePathSegment(fromObjectTypeValue, "fromObjectType");
|
|
105
|
+
const fromObjectIdSegment = encodePathSegment(fromObjectId, "fromObjectId");
|
|
106
|
+
const toObjectTypeSegment = encodePathSegment(toObjectTypeValue, "toObjectType");
|
|
107
|
+
const toObjectIdSegment = encodePathSegment(toObjectId, "toObjectId");
|
|
108
|
+
const path = `/crm/v4/objects/${fromObjectTypeSegment}/${fromObjectIdSegment}/associations/default/${toObjectTypeSegment}/${toObjectIdSegment}`;
|
|
109
|
+
const res = await maybeWrite(ctx, client, "DELETE", path);
|
|
110
|
+
printResult(ctx, res);
|
|
111
|
+
});
|
|
112
|
+
const labels = associations.command("labels").description("Association label/type definitions between two object types");
|
|
113
|
+
labels
|
|
114
|
+
.command("list")
|
|
115
|
+
.description("List all association labels/types between two object types")
|
|
116
|
+
.argument("<fromObjectType>")
|
|
117
|
+
.argument("<toObjectType>")
|
|
118
|
+
.action(async (fromObjectType, toObjectType) => {
|
|
119
|
+
const ctx = getCtx();
|
|
120
|
+
const client = createClient(ctx.profile);
|
|
121
|
+
const fromValue = await resolveObjectType(fromObjectType, client, "fromObjectType");
|
|
122
|
+
const toValue = await resolveObjectType(toObjectType, client, "toObjectType");
|
|
123
|
+
const fromSeg = encodePathSegment(fromValue, "fromObjectType");
|
|
124
|
+
const toSeg = encodePathSegment(toValue, "toObjectType");
|
|
125
|
+
const res = await client.request(`/crm/v4/associations/${fromSeg}/${toSeg}/labels`);
|
|
126
|
+
printResult(ctx, res);
|
|
127
|
+
});
|
|
128
|
+
labels
|
|
129
|
+
.command("create")
|
|
130
|
+
.description("Create a user-defined association label between two object types")
|
|
131
|
+
.argument("<fromObjectType>")
|
|
132
|
+
.argument("<toObjectType>")
|
|
133
|
+
.requiredOption("--data <payload>", "Label payload JSON: { label, name? }")
|
|
134
|
+
.action(async (fromObjectType, toObjectType, opts) => {
|
|
135
|
+
const ctx = getCtx();
|
|
136
|
+
const client = createClient(ctx.profile);
|
|
137
|
+
const fromValue = await resolveObjectType(fromObjectType, client, "fromObjectType");
|
|
138
|
+
const toValue = await resolveObjectType(toObjectType, client, "toObjectType");
|
|
139
|
+
const fromSeg = encodePathSegment(fromValue, "fromObjectType");
|
|
140
|
+
const toSeg = encodePathSegment(toValue, "toObjectType");
|
|
141
|
+
const payload = parseJsonPayload(opts.data);
|
|
142
|
+
const res = await maybeWrite(ctx, client, "POST", `/crm/v4/associations/${fromSeg}/${toSeg}/labels`, payload);
|
|
143
|
+
printResult(ctx, res);
|
|
144
|
+
});
|
|
145
|
+
labels
|
|
146
|
+
.command("update")
|
|
147
|
+
.description("Update a user-defined association label")
|
|
148
|
+
.argument("<fromObjectType>")
|
|
149
|
+
.argument("<toObjectType>")
|
|
150
|
+
.requiredOption("--data <payload>", "Label update payload JSON: { associationTypeId, label, name? }")
|
|
151
|
+
.action(async (fromObjectType, toObjectType, opts) => {
|
|
152
|
+
const ctx = getCtx();
|
|
153
|
+
const client = createClient(ctx.profile);
|
|
154
|
+
const fromValue = await resolveObjectType(fromObjectType, client, "fromObjectType");
|
|
155
|
+
const toValue = await resolveObjectType(toObjectType, client, "toObjectType");
|
|
156
|
+
const fromSeg = encodePathSegment(fromValue, "fromObjectType");
|
|
157
|
+
const toSeg = encodePathSegment(toValue, "toObjectType");
|
|
158
|
+
const payload = parseJsonPayload(opts.data);
|
|
159
|
+
const res = await maybeWrite(ctx, client, "PUT", `/crm/v4/associations/${fromSeg}/${toSeg}/labels`, payload);
|
|
160
|
+
printResult(ctx, res);
|
|
161
|
+
});
|
|
162
|
+
labels
|
|
163
|
+
.command("delete")
|
|
164
|
+
.description("Delete a user-defined association label by associationTypeId")
|
|
165
|
+
.argument("<fromObjectType>")
|
|
166
|
+
.argument("<toObjectType>")
|
|
167
|
+
.argument("<associationTypeId>")
|
|
168
|
+
.action(async (fromObjectType, toObjectType, associationTypeId) => {
|
|
169
|
+
const ctx = getCtx();
|
|
170
|
+
const client = createClient(ctx.profile);
|
|
171
|
+
const fromValue = await resolveObjectType(fromObjectType, client, "fromObjectType");
|
|
172
|
+
const toValue = await resolveObjectType(toObjectType, client, "toObjectType");
|
|
173
|
+
const fromSeg = encodePathSegment(fromValue, "fromObjectType");
|
|
174
|
+
const toSeg = encodePathSegment(toValue, "toObjectType");
|
|
175
|
+
const idSeg = encodePathSegment(associationTypeId, "associationTypeId");
|
|
176
|
+
const res = await maybeWrite(ctx, client, "DELETE", `/crm/v4/associations/${fromSeg}/${toSeg}/labels/${idSeg}`);
|
|
177
|
+
printResult(ctx, res);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=associations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"associations.js","sourceRoot":"","sources":["../../../src/commands/crm/associations.ts"],"names":[],"mappings":"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"}
|