@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,35 @@
|
|
|
1
|
+
import { createClient } from "../../core/http.js";
|
|
2
|
+
import { CliError, printResult } from "../../core/output.js";
|
|
3
|
+
import { maybeWrite, parseJsonPayload } from "../crm/shared.js";
|
|
4
|
+
const WRITE_METHODS = new Set(["POST", "PATCH", "PUT", "DELETE"]);
|
|
5
|
+
const ALLOWED_METHODS = new Set(["GET", "POST", "PATCH", "PUT", "DELETE"]);
|
|
6
|
+
function parseMethod(raw) {
|
|
7
|
+
const method = raw.trim().toUpperCase();
|
|
8
|
+
if (!ALLOWED_METHODS.has(method)) {
|
|
9
|
+
throw new CliError("INVALID_METHOD", "method must be one of GET, POST, PATCH, PUT, DELETE");
|
|
10
|
+
}
|
|
11
|
+
return method;
|
|
12
|
+
}
|
|
13
|
+
export function registerApi(program, getCtx) {
|
|
14
|
+
const api = program.command("api").description("Raw HubSpot API access with safety controls");
|
|
15
|
+
api
|
|
16
|
+
.command("request")
|
|
17
|
+
.requiredOption("--path <path>", "HubSpot API path (must start with /)")
|
|
18
|
+
.option("--method <method>", "HTTP method", "GET")
|
|
19
|
+
.option("--data <payload>", "JSON payload for write/read body")
|
|
20
|
+
.action(async (opts) => {
|
|
21
|
+
const ctx = getCtx();
|
|
22
|
+
const client = createClient(ctx.profile);
|
|
23
|
+
const method = parseMethod(opts.method);
|
|
24
|
+
const path = String(opts.path).trim();
|
|
25
|
+
const body = opts.data !== undefined ? parseJsonPayload(opts.data) : undefined;
|
|
26
|
+
if (method === "GET" && body !== undefined) {
|
|
27
|
+
throw new CliError("INVALID_GET_BODY", "GET requests do not accept --data");
|
|
28
|
+
}
|
|
29
|
+
const res = WRITE_METHODS.has(method)
|
|
30
|
+
? await maybeWrite(ctx, client, method, path, body)
|
|
31
|
+
: await client.request(path, body !== undefined ? { method, body } : { method });
|
|
32
|
+
printResult(ctx, res);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE3E,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,qDAAqD,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,MAAqD,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAgB,EAAE,MAAwB;IACpE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAAC;IAE9F,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,cAAc,CAAC,eAAe,EAAE,sCAAsC,CAAC;SACvE,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,KAAK,CAAC;SACjD,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/E,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mCAAmC,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;YACnC,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAA6C,EAAE,IAAI,EAAE,IAAI,CAAC;YAC1F,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { HubSpotClient } from "../../core/http.js";
|
|
3
|
+
import { getProfile, getToken, hasProfile, listProfiles, removeToken, saveProfile, saveToken, detectHublet, resolveApiDomain } from "../../core/auth.js";
|
|
4
|
+
import { CliError, printResult } from "../../core/output.js";
|
|
5
|
+
import { encryptExistingVault, decryptExistingVault, getVaultPassphrase, isVaultEncrypted } from "../../core/vault.js";
|
|
6
|
+
import { resolve } from "node:path";
|
|
7
|
+
async function fetchPortalDetails(token) {
|
|
8
|
+
const result = {};
|
|
9
|
+
try {
|
|
10
|
+
const res = await fetch("https://api.hubapi.com/account-info/v3/details", {
|
|
11
|
+
headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" },
|
|
12
|
+
signal: AbortSignal.timeout(10_000),
|
|
13
|
+
});
|
|
14
|
+
if (res.ok) {
|
|
15
|
+
const data = (await res.json());
|
|
16
|
+
if (data.portalId)
|
|
17
|
+
result.portalId = String(data.portalId);
|
|
18
|
+
if (data.uiDomain)
|
|
19
|
+
result.uiDomain = String(data.uiDomain);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// Non-critical — URL generation will just be unavailable.
|
|
24
|
+
}
|
|
25
|
+
if (!result.portalId) {
|
|
26
|
+
try {
|
|
27
|
+
const res = await fetch("https://api.hubapi.com/integrations/v1/me", {
|
|
28
|
+
headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" },
|
|
29
|
+
signal: AbortSignal.timeout(10_000),
|
|
30
|
+
});
|
|
31
|
+
if (res.ok) {
|
|
32
|
+
const data = (await res.json());
|
|
33
|
+
if (data.portalId)
|
|
34
|
+
result.portalId = String(data.portalId);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Non-critical fallback.
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
function resolveLoginToken(opts) {
|
|
44
|
+
const hasInlineToken = Boolean(opts.token?.trim());
|
|
45
|
+
const useStdin = Boolean(opts.tokenStdin);
|
|
46
|
+
if (hasInlineToken && useStdin) {
|
|
47
|
+
throw new CliError("AUTH_TOKEN_INPUT_CONFLICT", "Use either --token or --token-stdin, not both.");
|
|
48
|
+
}
|
|
49
|
+
if (!hasInlineToken && !useStdin) {
|
|
50
|
+
throw new CliError("AUTH_TOKEN_REQUIRED", "Provide --token or --token-stdin.");
|
|
51
|
+
}
|
|
52
|
+
if (useStdin) {
|
|
53
|
+
if (process.stdin.isTTY) {
|
|
54
|
+
throw new CliError("AUTH_STDIN_REQUIRED", "--token-stdin requires piped stdin input.");
|
|
55
|
+
}
|
|
56
|
+
const stdinToken = readFileSync(0, "utf8").trim();
|
|
57
|
+
if (!stdinToken) {
|
|
58
|
+
throw new CliError("AUTH_INVALID_TOKEN", "Token cannot be empty");
|
|
59
|
+
}
|
|
60
|
+
return stdinToken;
|
|
61
|
+
}
|
|
62
|
+
return opts.token.trim();
|
|
63
|
+
}
|
|
64
|
+
export function registerAuth(program, getCtx) {
|
|
65
|
+
const auth = program.command("auth").description("Authentication commands");
|
|
66
|
+
auth
|
|
67
|
+
.command("login")
|
|
68
|
+
.option("--token <token>", "HubSpot private app token")
|
|
69
|
+
.option("--token-stdin", "Read HubSpot private app token from stdin")
|
|
70
|
+
.option("--profile <name>", "Profile name override")
|
|
71
|
+
.action(async (opts) => {
|
|
72
|
+
const ctx = getCtx();
|
|
73
|
+
const profile = opts.profile ?? ctx.profile;
|
|
74
|
+
const token = resolveLoginToken(opts);
|
|
75
|
+
saveToken(profile, token);
|
|
76
|
+
const details = await fetchPortalDetails(token);
|
|
77
|
+
// Auto-detect hublet and resolve API domain
|
|
78
|
+
const hublet = detectHublet({ token, uiDomain: details.uiDomain });
|
|
79
|
+
const apiDomain = resolveApiDomain(hublet);
|
|
80
|
+
if (details.portalId || details.uiDomain) {
|
|
81
|
+
saveProfile(profile, { token, ...details, hublet, apiDomain });
|
|
82
|
+
}
|
|
83
|
+
printResult(ctx, {
|
|
84
|
+
message: `Token saved for profile '${profile}'`,
|
|
85
|
+
portalId: details.portalId ?? null,
|
|
86
|
+
uiDomain: details.uiDomain ?? null,
|
|
87
|
+
hublet: hublet ?? "na",
|
|
88
|
+
apiDomain,
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
auth.command("whoami").action(() => {
|
|
92
|
+
const ctx = getCtx();
|
|
93
|
+
printResult(ctx, { profile: ctx.profile, authenticated: hasProfile(ctx.profile) });
|
|
94
|
+
});
|
|
95
|
+
auth.command("profiles").description("List local auth profiles").action(() => {
|
|
96
|
+
const ctx = getCtx();
|
|
97
|
+
printResult(ctx, { profiles: listProfiles() });
|
|
98
|
+
});
|
|
99
|
+
auth.command("logout").option("--profile <name>", "Profile name override").action((opts) => {
|
|
100
|
+
const ctx = getCtx();
|
|
101
|
+
const profile = opts.profile ?? ctx.profile;
|
|
102
|
+
const removed = removeToken(profile);
|
|
103
|
+
printResult(ctx, { profile, removed });
|
|
104
|
+
});
|
|
105
|
+
auth.command("token-info").option("--profile <name>", "Profile name override").description("Inspect token metadata/scopes").action(async (opts) => {
|
|
106
|
+
const ctx = getCtx();
|
|
107
|
+
const profile = opts.profile ?? ctx.profile;
|
|
108
|
+
const token = getToken(profile);
|
|
109
|
+
const client = new HubSpotClient(token);
|
|
110
|
+
const res = await client.request(`/oauth/v1/access-tokens/${encodeURIComponent(token)}`);
|
|
111
|
+
printResult(ctx, { profile, tokenInfo: res });
|
|
112
|
+
});
|
|
113
|
+
auth.command("profile-show").option("--profile <name>", "Profile name override").description("Show local stored profile metadata").action((opts) => {
|
|
114
|
+
const ctx = getCtx();
|
|
115
|
+
const profile = opts.profile ?? ctx.profile;
|
|
116
|
+
const data = getProfile(profile);
|
|
117
|
+
printResult(ctx, { profile, data });
|
|
118
|
+
});
|
|
119
|
+
auth.command("set-mode")
|
|
120
|
+
.argument("<profile>", "Profile name")
|
|
121
|
+
.argument("<mode>", "Permission mode: read-only or read-write")
|
|
122
|
+
.description("Set permission mode on a profile (read-only blocks all writes)")
|
|
123
|
+
.action((profileArg, modeArg) => {
|
|
124
|
+
const ctx = getCtx();
|
|
125
|
+
const mode = String(modeArg).trim();
|
|
126
|
+
if (mode !== "read-only" && mode !== "read-write") {
|
|
127
|
+
throw new CliError("INVALID_MODE", `Mode must be 'read-only' or 'read-write', got '${mode}'`);
|
|
128
|
+
}
|
|
129
|
+
const profile = String(profileArg).trim();
|
|
130
|
+
const data = getProfile(profile);
|
|
131
|
+
saveProfile(profile, { ...data, mode });
|
|
132
|
+
printResult(ctx, { profile, mode, message: `Profile '${profile}' set to ${mode}` });
|
|
133
|
+
});
|
|
134
|
+
auth.command("oauth-url")
|
|
135
|
+
.requiredOption("--client-id <id>", "OAuth app client id")
|
|
136
|
+
.requiredOption("--redirect-uri <uri>", "OAuth redirect URI")
|
|
137
|
+
.option("--scopes <csv>", "Comma-separated scopes")
|
|
138
|
+
.option("--state <value>", "OAuth state")
|
|
139
|
+
.description("Generate OAuth authorization URL")
|
|
140
|
+
.action((opts) => {
|
|
141
|
+
const ctx = getCtx();
|
|
142
|
+
const params = new URLSearchParams();
|
|
143
|
+
params.set("client_id", String(opts.clientId));
|
|
144
|
+
params.set("redirect_uri", String(opts.redirectUri));
|
|
145
|
+
params.set("response_type", "code");
|
|
146
|
+
params.set("scope", String(opts.scopes ?? ""));
|
|
147
|
+
if (opts.state)
|
|
148
|
+
params.set("state", String(opts.state));
|
|
149
|
+
const url = `https://app.hubspot.com/oauth/authorize?${params.toString()}`;
|
|
150
|
+
printResult(ctx, { authorizeUrl: url });
|
|
151
|
+
});
|
|
152
|
+
auth.command("oauth-exchange")
|
|
153
|
+
.requiredOption("--client-id <id>", "OAuth app client id")
|
|
154
|
+
.requiredOption("--client-secret <secret>", "OAuth app client secret")
|
|
155
|
+
.requiredOption("--code <code>", "Authorization code")
|
|
156
|
+
.requiredOption("--redirect-uri <uri>", "OAuth redirect URI")
|
|
157
|
+
.option("--profile <name>", "Profile name override")
|
|
158
|
+
.description("Exchange OAuth code for access token and save profile")
|
|
159
|
+
.action(async (opts) => {
|
|
160
|
+
const ctx = getCtx();
|
|
161
|
+
const profile = opts.profile ?? ctx.profile;
|
|
162
|
+
const payload = new URLSearchParams();
|
|
163
|
+
payload.set("grant_type", "authorization_code");
|
|
164
|
+
payload.set("client_id", String(opts.clientId));
|
|
165
|
+
payload.set("client_secret", String(opts.clientSecret));
|
|
166
|
+
payload.set("redirect_uri", String(opts.redirectUri));
|
|
167
|
+
payload.set("code", String(opts.code));
|
|
168
|
+
const response = await fetch("https://api.hubapi.com/oauth/v1/token", {
|
|
169
|
+
method: "POST",
|
|
170
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded;charset=utf-8" },
|
|
171
|
+
body: payload.toString(),
|
|
172
|
+
signal: AbortSignal.timeout(30_000),
|
|
173
|
+
});
|
|
174
|
+
const data = await response.json();
|
|
175
|
+
if (!response.ok) {
|
|
176
|
+
throw new CliError("AUTH_OAUTH_EXCHANGE_FAILED", `OAuth exchange failed (${response.status})`, response.status, data);
|
|
177
|
+
}
|
|
178
|
+
const accessToken = String(data.access_token ?? "");
|
|
179
|
+
if (!accessToken) {
|
|
180
|
+
throw new CliError("AUTH_OAUTH_EXCHANGE_FAILED", "Missing access_token in OAuth exchange response", response.status, data);
|
|
181
|
+
}
|
|
182
|
+
const scopes = typeof data.scope === "string" ? data.scope.split(" ").filter(Boolean) : undefined;
|
|
183
|
+
const expiresIn = Number(data.expires_in ?? 0);
|
|
184
|
+
const expiresAt = Number.isFinite(expiresIn) && expiresIn > 0
|
|
185
|
+
? new Date(Date.now() + expiresIn * 1000).toISOString()
|
|
186
|
+
: undefined;
|
|
187
|
+
saveProfile(profile, {
|
|
188
|
+
token: accessToken,
|
|
189
|
+
refreshToken: typeof data.refresh_token === "string" ? data.refresh_token : undefined,
|
|
190
|
+
scopes,
|
|
191
|
+
expiresAt,
|
|
192
|
+
});
|
|
193
|
+
printResult(ctx, {
|
|
194
|
+
profile,
|
|
195
|
+
saved: true,
|
|
196
|
+
hasRefreshToken: typeof data.refresh_token === "string",
|
|
197
|
+
expiresAt,
|
|
198
|
+
scopes,
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
auth.command("encrypt")
|
|
202
|
+
.description("Encrypt auth.json with AES-256-GCM (passphrase from HSCLI_VAULT_PASSPHRASE)")
|
|
203
|
+
.action(() => {
|
|
204
|
+
const ctx = getCtx();
|
|
205
|
+
const passphrase = getVaultPassphrase();
|
|
206
|
+
if (!passphrase) {
|
|
207
|
+
throw new CliError("VAULT_NO_PASSPHRASE", "Set HSCLI_VAULT_PASSPHRASE env var before encrypting.");
|
|
208
|
+
}
|
|
209
|
+
const hubcliHome = process.env.HSCLI_HOME || resolve(process.env.HOME || "", ".hscli");
|
|
210
|
+
encryptExistingVault(hubcliHome, passphrase);
|
|
211
|
+
printResult(ctx, { encrypted: true, message: "auth.json encrypted to auth.enc and removed." });
|
|
212
|
+
});
|
|
213
|
+
auth.command("decrypt")
|
|
214
|
+
.description("Decrypt auth.enc back to auth.json (passphrase from HSCLI_VAULT_PASSPHRASE)")
|
|
215
|
+
.action(() => {
|
|
216
|
+
const ctx = getCtx();
|
|
217
|
+
const passphrase = getVaultPassphrase();
|
|
218
|
+
if (!passphrase) {
|
|
219
|
+
throw new CliError("VAULT_NO_PASSPHRASE", "Set HSCLI_VAULT_PASSPHRASE env var before decrypting.");
|
|
220
|
+
}
|
|
221
|
+
const hubcliHome = process.env.HSCLI_HOME || resolve(process.env.HOME || "", ".hscli");
|
|
222
|
+
if (!isVaultEncrypted(hubcliHome)) {
|
|
223
|
+
throw new CliError("VAULT_NOT_ENCRYPTED", "No auth.enc found — vault is not encrypted.");
|
|
224
|
+
}
|
|
225
|
+
decryptExistingVault(hubcliHome, passphrase);
|
|
226
|
+
printResult(ctx, { decrypted: true, message: "auth.enc decrypted to auth.json and removed." });
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
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 registerAutomation(program, getCtx) {
|
|
5
|
+
const automation = program.command("automation").description("HubSpot Automation APIs (v4 workflows)");
|
|
6
|
+
const workflows = automation.command("workflows").description("Automation workflows (v4)");
|
|
7
|
+
workflows
|
|
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(`/automation/v4/flows?${params.toString()}`);
|
|
18
|
+
printResult(ctx, res);
|
|
19
|
+
});
|
|
20
|
+
workflows
|
|
21
|
+
.command("get")
|
|
22
|
+
.argument("<flowId>")
|
|
23
|
+
.action(async (flowId) => {
|
|
24
|
+
const ctx = getCtx();
|
|
25
|
+
const client = createClient(ctx.profile);
|
|
26
|
+
const id = encodePathSegment(flowId, "flowId");
|
|
27
|
+
const res = await client.request(`/automation/v4/flows/${id}`);
|
|
28
|
+
printResult(ctx, res);
|
|
29
|
+
});
|
|
30
|
+
// Custom Workflow Actions (app-defined code actions)
|
|
31
|
+
const actions = automation.command("actions").description("Custom workflow actions (app-developer defined code blocks)");
|
|
32
|
+
actions.command("list").argument("<appId>").option("--limit <n>", "Max records", "50").option("--after <cursor>", "Paging cursor").action(async (appId, o) => {
|
|
33
|
+
const ctx = getCtx();
|
|
34
|
+
const client = createClient(ctx.profile);
|
|
35
|
+
const seg = encodePathSegment(appId, "appId");
|
|
36
|
+
const params = new URLSearchParams();
|
|
37
|
+
params.set("limit", String(parseNumberFlag(o.limit, "--limit")));
|
|
38
|
+
appendOptional(params, "after", o.after);
|
|
39
|
+
const res = await client.request(`/automation/v4/actions/${seg}?${params.toString()}`);
|
|
40
|
+
printResult(ctx, res);
|
|
41
|
+
});
|
|
42
|
+
actions.command("get").argument("<appId>").argument("<definitionId>").action(async (appId, definitionId) => {
|
|
43
|
+
const ctx = getCtx();
|
|
44
|
+
const client = createClient(ctx.profile);
|
|
45
|
+
const appSeg = encodePathSegment(appId, "appId");
|
|
46
|
+
const defSeg = encodePathSegment(definitionId, "definitionId");
|
|
47
|
+
const res = await client.request(`/automation/v4/actions/${appSeg}/${defSeg}`);
|
|
48
|
+
printResult(ctx, res);
|
|
49
|
+
});
|
|
50
|
+
actions.command("create").argument("<appId>").requiredOption("--data <payload>", "Action definition JSON").action(async (appId, o) => {
|
|
51
|
+
const ctx = getCtx();
|
|
52
|
+
const client = createClient(ctx.profile);
|
|
53
|
+
const seg = encodePathSegment(appId, "appId");
|
|
54
|
+
const res = await maybeWrite(ctx, client, "POST", `/automation/v4/actions/${seg}`, parseJsonPayload(o.data));
|
|
55
|
+
printResult(ctx, res);
|
|
56
|
+
});
|
|
57
|
+
actions.command("update").argument("<appId>").argument("<definitionId>").requiredOption("--data <payload>", "Action patch JSON").action(async (appId, definitionId, o) => {
|
|
58
|
+
const ctx = getCtx();
|
|
59
|
+
const client = createClient(ctx.profile);
|
|
60
|
+
const appSeg = encodePathSegment(appId, "appId");
|
|
61
|
+
const defSeg = encodePathSegment(definitionId, "definitionId");
|
|
62
|
+
const res = await maybeWrite(ctx, client, "PATCH", `/automation/v4/actions/${appSeg}/${defSeg}`, parseJsonPayload(o.data));
|
|
63
|
+
printResult(ctx, res);
|
|
64
|
+
});
|
|
65
|
+
actions.command("delete").argument("<appId>").argument("<definitionId>").action(async (appId, definitionId) => {
|
|
66
|
+
const ctx = getCtx();
|
|
67
|
+
const client = createClient(ctx.profile);
|
|
68
|
+
const appSeg = encodePathSegment(appId, "appId");
|
|
69
|
+
const defSeg = encodePathSegment(definitionId, "definitionId");
|
|
70
|
+
const res = await maybeWrite(ctx, client, "DELETE", `/automation/v4/actions/${appSeg}/${defSeg}`);
|
|
71
|
+
printResult(ctx, res);
|
|
72
|
+
});
|
|
73
|
+
actions.command("revisions-list").argument("<appId>").argument("<definitionId>").action(async (appId, definitionId) => {
|
|
74
|
+
const ctx = getCtx();
|
|
75
|
+
const client = createClient(ctx.profile);
|
|
76
|
+
const appSeg = encodePathSegment(appId, "appId");
|
|
77
|
+
const defSeg = encodePathSegment(definitionId, "definitionId");
|
|
78
|
+
const res = await client.request(`/automation/v4/actions/${appSeg}/${defSeg}/revisions`);
|
|
79
|
+
printResult(ctx, res);
|
|
80
|
+
});
|
|
81
|
+
actions.command("revisions-get").argument("<appId>").argument("<definitionId>").argument("<revisionId>").action(async (appId, definitionId, revisionId) => {
|
|
82
|
+
const ctx = getCtx();
|
|
83
|
+
const client = createClient(ctx.profile);
|
|
84
|
+
const appSeg = encodePathSegment(appId, "appId");
|
|
85
|
+
const defSeg = encodePathSegment(definitionId, "definitionId");
|
|
86
|
+
const revSeg = encodePathSegment(revisionId, "revisionId");
|
|
87
|
+
const res = await client.request(`/automation/v4/actions/${appSeg}/${defSeg}/revisions/${revSeg}`);
|
|
88
|
+
printResult(ctx, res);
|
|
89
|
+
});
|
|
90
|
+
actions.command("functions-list").argument("<appId>").argument("<definitionId>").action(async (appId, definitionId) => {
|
|
91
|
+
const ctx = getCtx();
|
|
92
|
+
const client = createClient(ctx.profile);
|
|
93
|
+
const appSeg = encodePathSegment(appId, "appId");
|
|
94
|
+
const defSeg = encodePathSegment(definitionId, "definitionId");
|
|
95
|
+
const res = await client.request(`/automation/v4/actions/${appSeg}/${defSeg}/functions`);
|
|
96
|
+
printResult(ctx, res);
|
|
97
|
+
});
|
|
98
|
+
actions.command("functions-create").argument("<appId>").argument("<definitionId>").argument("<functionType>").argument("<functionId>").requiredOption("--data <payload>", "Function payload JSON").action(async (appId, definitionId, functionType, functionId, o) => {
|
|
99
|
+
const ctx = getCtx();
|
|
100
|
+
const client = createClient(ctx.profile);
|
|
101
|
+
const appSeg = encodePathSegment(appId, "appId");
|
|
102
|
+
const defSeg = encodePathSegment(definitionId, "definitionId");
|
|
103
|
+
const typeSeg = encodePathSegment(functionType, "functionType");
|
|
104
|
+
const fnSeg = encodePathSegment(functionId, "functionId");
|
|
105
|
+
const res = await maybeWrite(ctx, client, "PUT", `/automation/v4/actions/${appSeg}/${defSeg}/functions/${typeSeg}/${fnSeg}`, parseJsonPayload(o.data));
|
|
106
|
+
printResult(ctx, res);
|
|
107
|
+
});
|
|
108
|
+
actions.command("functions-delete").argument("<appId>").argument("<definitionId>").argument("<functionType>").argument("<functionId>").action(async (appId, definitionId, functionType, functionId) => {
|
|
109
|
+
const ctx = getCtx();
|
|
110
|
+
const client = createClient(ctx.profile);
|
|
111
|
+
const appSeg = encodePathSegment(appId, "appId");
|
|
112
|
+
const defSeg = encodePathSegment(definitionId, "definitionId");
|
|
113
|
+
const typeSeg = encodePathSegment(functionType, "functionType");
|
|
114
|
+
const fnSeg = encodePathSegment(functionId, "functionId");
|
|
115
|
+
const res = await maybeWrite(ctx, client, "DELETE", `/automation/v4/actions/${appSeg}/${defSeg}/functions/${typeSeg}/${fnSeg}`);
|
|
116
|
+
printResult(ctx, res);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/automation/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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 registerBlogSettings(cms, getCtx) {
|
|
5
|
+
const bs = cms.command("blog-settings").description("CMS blog global settings (multi-language, defaults)");
|
|
6
|
+
bs.command("get")
|
|
7
|
+
.description("Get current blog settings")
|
|
8
|
+
.action(async () => {
|
|
9
|
+
const ctx = getCtx();
|
|
10
|
+
const client = createClient(ctx.profile);
|
|
11
|
+
const res = await client.request(`/cms/v3/blog-settings/settings`);
|
|
12
|
+
printResult(ctx, res);
|
|
13
|
+
});
|
|
14
|
+
bs.command("update")
|
|
15
|
+
.description("Update blog settings")
|
|
16
|
+
.requiredOption("--data <payload>", "Blog settings patch JSON")
|
|
17
|
+
.action(async (o) => {
|
|
18
|
+
const ctx = getCtx();
|
|
19
|
+
const client = createClient(ctx.profile);
|
|
20
|
+
const res = await maybeWrite(ctx, client, "POST", `/cms/v3/blog-settings/settings`, parseJsonPayload(o.data));
|
|
21
|
+
printResult(ctx, res);
|
|
22
|
+
});
|
|
23
|
+
bs.command("revisions")
|
|
24
|
+
.argument("<id>")
|
|
25
|
+
.description("List revisions for a blog settings record")
|
|
26
|
+
.option("--limit <n>", "Max records", "50")
|
|
27
|
+
.option("--after <cursor>", "Paging cursor")
|
|
28
|
+
.action(async (id, o) => {
|
|
29
|
+
const ctx = getCtx();
|
|
30
|
+
const client = createClient(ctx.profile);
|
|
31
|
+
const seg = encodePathSegment(id, "id");
|
|
32
|
+
const params = new URLSearchParams();
|
|
33
|
+
params.set("limit", String(parseNumberFlag(o.limit, "--limit")));
|
|
34
|
+
appendOptional(params, "after", o.after);
|
|
35
|
+
const res = await client.request(`/cms/v3/blog-settings/settings/${seg}/revisions?${params.toString()}`);
|
|
36
|
+
printResult(ctx, res);
|
|
37
|
+
});
|
|
38
|
+
const ml = bs.command("multi-language").description("Multi-language group operations on blog settings");
|
|
39
|
+
ml.command("attach").requiredOption("--data <payload>", "Attach payload JSON").action(async (o) => {
|
|
40
|
+
const ctx = getCtx();
|
|
41
|
+
const client = createClient(ctx.profile);
|
|
42
|
+
const res = await maybeWrite(ctx, client, "POST", `/cms/v3/blog-settings/settings/multi-language/attach/to/lang-group`, parseJsonPayload(o.data));
|
|
43
|
+
printResult(ctx, res);
|
|
44
|
+
});
|
|
45
|
+
ml.command("create-variation").requiredOption("--data <payload>", "Variation payload JSON").action(async (o) => {
|
|
46
|
+
const ctx = getCtx();
|
|
47
|
+
const client = createClient(ctx.profile);
|
|
48
|
+
const res = await maybeWrite(ctx, client, "POST", `/cms/v3/blog-settings/settings/multi-language/create/language/variation`, parseJsonPayload(o.data));
|
|
49
|
+
printResult(ctx, res);
|
|
50
|
+
});
|
|
51
|
+
ml.command("detach").requiredOption("--data <payload>", "Detach payload JSON").action(async (o) => {
|
|
52
|
+
const ctx = getCtx();
|
|
53
|
+
const client = createClient(ctx.profile);
|
|
54
|
+
const res = await maybeWrite(ctx, client, "POST", `/cms/v3/blog-settings/settings/multi-language/detach/from/lang-group`, parseJsonPayload(o.data));
|
|
55
|
+
printResult(ctx, res);
|
|
56
|
+
});
|
|
57
|
+
ml.command("set-primary").requiredOption("--data <payload>", "Set-primary payload JSON").action(async (o) => {
|
|
58
|
+
const ctx = getCtx();
|
|
59
|
+
const client = createClient(ctx.profile);
|
|
60
|
+
const res = await maybeWrite(ctx, client, "PUT", `/cms/v3/blog-settings/settings/multi-language/set/new/lang/primary`, parseJsonPayload(o.data));
|
|
61
|
+
printResult(ctx, res);
|
|
62
|
+
});
|
|
63
|
+
ml.command("update-languages").requiredOption("--data <payload>", "Update-languages payload JSON").action(async (o) => {
|
|
64
|
+
const ctx = getCtx();
|
|
65
|
+
const client = createClient(ctx.profile);
|
|
66
|
+
const res = await maybeWrite(ctx, client, "POST", `/cms/v3/blog-settings/settings/multi-language/update/languages`, parseJsonPayload(o.data));
|
|
67
|
+
printResult(ctx, res);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=blog-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blog-settings.js","sourceRoot":"","sources":["../../../src/commands/cms/blog-settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEpH,MAAM,UAAU,oBAAoB,CAAC,GAAY,EAAE,MAAwB;IACzE,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,qDAAqD,CAAC,CAAC;IAE3G,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QACnE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sBAAsB,CAAC;SACnC,cAAc,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,gCAAgC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9G,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;SACpB,QAAQ,CAAC,MAAM,CAAC;SAChB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC;SAC3C,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QACjE,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,kCAAkC,GAAG,cAAc,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,kDAAkD,CAAC,CAAC;IACxG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAChG,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,oEAAoE,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClJ,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7G,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,yEAAyE,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvJ,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAChG,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,sEAAsE,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACpJ,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1G,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,oEAAoE,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjJ,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,kBAAkB,EAAE,+BAA+B,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACpH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,gEAAgE,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9I,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import type { CliContext } from "../../core/output.js";
|
|
3
|
+
export interface ContentTypeOptions {
|
|
4
|
+
drafts?: boolean;
|
|
5
|
+
revisions?: boolean;
|
|
6
|
+
abTest?: boolean;
|
|
7
|
+
multiLanguage?: boolean;
|
|
8
|
+
clone?: boolean;
|
|
9
|
+
schedule?: boolean;
|
|
10
|
+
pushLive?: boolean;
|
|
11
|
+
batch?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function registerCmsContentCommands(parent: Command, subName: string, description: string, basePath: string, getCtx: () => CliContext, opts?: ContentTypeOptions): Command;
|