@revfleet/hscli 0.8.6 → 0.8.10
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 +240 -0
- package/CONTRIBUTING.md +120 -0
- package/README.md +14 -6
- package/brand/readme-hero.svg +25 -0
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/account/index.js +5 -6
- package/dist/commands/account/index.js.map +1 -1
- package/dist/commands/api/index.js +43 -3
- package/dist/commands/api/index.js.map +1 -1
- package/dist/commands/auth/index.js +32 -6
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/cms/hubdb.js +64 -1
- package/dist/commands/cms/hubdb.js.map +1 -1
- package/dist/commands/cms/index.js +27 -0
- package/dist/commands/cms/index.js.map +1 -1
- package/dist/commands/cms/source-code.js +21 -0
- package/dist/commands/cms/source-code.js.map +1 -1
- package/dist/commands/communication-preferences/index.js +11 -12
- package/dist/commands/communication-preferences/index.js.map +1 -1
- package/dist/commands/crm/shared.d.ts +1 -0
- package/dist/commands/crm/shared.js +3 -4
- package/dist/commands/crm/shared.js.map +1 -1
- package/dist/commands/events/index.js +7 -8
- package/dist/commands/events/index.js.map +1 -1
- package/dist/commands/marketing/index.js +58 -3
- package/dist/commands/marketing/index.js.map +1 -1
- package/dist/commands/settings/index.js +12 -13
- package/dist/commands/settings/index.js.map +1 -1
- package/dist/commands/workflows/index.js +43 -0
- package/dist/commands/workflows/index.js.map +1 -1
- package/dist/core/http.d.ts +27 -0
- package/dist/core/http.js +102 -18
- package/dist/core/http.js.map +1 -1
- package/dist/core/plugins.d.ts +5 -2
- package/dist/core/plugins.js +18 -1
- package/dist/core/plugins.js.map +1 -1
- package/dist/core/telemetry-context.d.ts +13 -0
- package/dist/core/telemetry-context.js +30 -0
- package/dist/core/telemetry-context.js.map +1 -0
- package/dist/mcp/hubspot-modules.d.ts +30 -0
- package/dist/mcp/hubspot-modules.js +305 -0
- package/dist/mcp/hubspot-modules.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.js +30 -26
- package/dist/mcp/server.js.map +1 -1
- package/docs/ARCHITECTURE.md +39 -0
- package/docs/CAPABILITY_LIBRARY.md +638 -0
- package/docs/CMS_SETUP.md +349 -0
- package/docs/COMMAND_COMPATIBILITY.md +24 -0
- package/docs/COMMAND_TREE.md +183 -0
- package/docs/COMMERCE_SETUP.md +400 -0
- package/docs/COMPARISON.md +146 -0
- package/docs/COOKBOOK.md +800 -0
- package/docs/INTEGRATIONS_NOTIFICATIONS_SETUP.md +352 -0
- package/docs/MARKETING_SETUP.md +503 -0
- package/docs/MCP.md +171 -0
- package/docs/OPERATIONAL_PLAYBOOKS.md +322 -0
- package/docs/OPERATIONS_SETUP.md +362 -0
- package/docs/PLUGIN_GUIDE.md +158 -0
- package/docs/POLICY_EXAMPLE.json +57 -0
- package/docs/PORTAL_SETUP.md +683 -0
- package/docs/PUBLISHING.md +154 -0
- package/docs/RELEASE_GOVERNANCE.md +34 -0
- package/docs/REPORTING_SETUP.md +310 -0
- package/docs/ROADMAP-DATE-BASED-API.md +103 -0
- package/docs/ROADMAP_PHASE1_TO_3.md +96 -0
- package/docs/SAFETY_MODEL.md +37 -0
- package/docs/SALES_SETUP.md +369 -0
- package/docs/SERVICE_SETUP.md +403 -0
- package/docs/TESTING_PLAN.md +89 -0
- package/docs/TIERS.md +320 -0
- package/docs/TUTORIALS/audit-portal-writes.md +150 -0
- package/docs/TUTORIALS/secure-agent-writes.md +177 -0
- package/docs/TUTORIALS/trace-replay-repro.md +147 -0
- package/docs/WHY_HOW_WHAT.md +81 -0
- package/package.json +7 -2
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
# CMS Setup Guide
|
|
2
|
+
|
|
3
|
+
> See also: [PORTAL_SETUP.md](PORTAL_SETUP.md) · [MARKETING_SETUP.md](MARKETING_SETUP.md) · [COMMAND_TREE.md](COMMAND_TREE.md)
|
|
4
|
+
|
|
5
|
+
Complete configuration guide for HubSpot CMS Hub settings. Covers domains, templates, blog, pages, file management, and developer tools.
|
|
6
|
+
|
|
7
|
+
**Prerequisites:**
|
|
8
|
+
- Portal authenticated (`hscli auth whoami`)
|
|
9
|
+
- Private App scopes: `content`, `cms.domains.read/write`
|
|
10
|
+
- Domain DNS access (see [PORTAL_SETUP.md](./PORTAL_SETUP.md))
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. Domains & URLs
|
|
15
|
+
|
|
16
|
+
**Where:** Settings > Content > Domains & URLs
|
|
17
|
+
|
|
18
|
+
### 1.1 Domain Configuration
|
|
19
|
+
|
|
20
|
+
| Setting | What to configure | Why it matters |
|
|
21
|
+
|---------|-------------------|----------------|
|
|
22
|
+
| Primary domain | Main website domain (e.g., `www.yourcompany.com`) | Primary content hosting |
|
|
23
|
+
| Redirect domains | Non-www → www (or vice versa) | Prevent duplicate content |
|
|
24
|
+
| Landing page domain | Separate subdomain (e.g., `go.yourcompany.com`) | Campaign landing pages |
|
|
25
|
+
| Blog domain | Subdomain or path (e.g., `blog.yourcompany.com` or `/blog`) | Blog content hosting |
|
|
26
|
+
| Knowledge base domain | Subdomain (e.g., `help.yourcompany.com`) | Customer self-service |
|
|
27
|
+
| Email domain | For email web version links | Consistent branding |
|
|
28
|
+
| SSL certificate | Auto-provisioned by HubSpot | HTTPS security (automatic) |
|
|
29
|
+
|
|
30
|
+
### 1.2 URL Mappings
|
|
31
|
+
|
|
32
|
+
| Setting | What to configure | Why it matters |
|
|
33
|
+
|---------|-------------------|----------------|
|
|
34
|
+
| URL redirects | Old URL → new URL (301/302) | SEO preservation, prevent broken links |
|
|
35
|
+
| Trailing slash | Consistent trailing slash policy | SEO and canonical URL consistency |
|
|
36
|
+
| Lowercase URLs | Force lowercase | Prevent duplicate content |
|
|
37
|
+
| Language slug | `/en/`, `/fr/` path prefix for multi-language | Internationalized URLs |
|
|
38
|
+
|
|
39
|
+
> **API:** URL redirects can be managed via the URL Redirects API.
|
|
40
|
+
|
|
41
|
+
**hscli:**
|
|
42
|
+
```bash
|
|
43
|
+
# List domains
|
|
44
|
+
hscli cms domains list
|
|
45
|
+
|
|
46
|
+
# List URL redirects
|
|
47
|
+
hscli cms url-redirects list --limit 20
|
|
48
|
+
|
|
49
|
+
# Create a URL redirect
|
|
50
|
+
hscli cms url-redirects create --data '{
|
|
51
|
+
"routePrefix": "/old-page",
|
|
52
|
+
"destination": "/new-page",
|
|
53
|
+
"redirectStyle": 301
|
|
54
|
+
}' --force
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 2. Templates & Themes
|
|
60
|
+
|
|
61
|
+
**Where:** Design Manager (Marketing > Files and Templates > Design Tools)
|
|
62
|
+
|
|
63
|
+
### 2.1 Theme Configuration
|
|
64
|
+
|
|
65
|
+
| Setting | What to configure | Why it matters |
|
|
66
|
+
|---------|-------------------|----------------|
|
|
67
|
+
| Active theme | Select or install theme | Base design for all pages |
|
|
68
|
+
| Theme settings | Colors, fonts, spacing, layout | Global brand consistency |
|
|
69
|
+
| Global header | Navigation, logo, CTA button | Consistent site navigation |
|
|
70
|
+
| Global footer | Links, social icons, legal text | Consistent footer across pages |
|
|
71
|
+
| Favicon | Small icon for browser tabs | Brand recognition |
|
|
72
|
+
|
|
73
|
+
### 2.2 Template Types
|
|
74
|
+
|
|
75
|
+
| Template type | Purpose | Example |
|
|
76
|
+
|---------------|---------|---------|
|
|
77
|
+
| Website page | Standard pages | About, Contact, Pricing |
|
|
78
|
+
| Landing page | Campaign pages (no nav) | Offer pages, event registration |
|
|
79
|
+
| Blog listing | Blog index page | Blog home |
|
|
80
|
+
| Blog post | Individual blog posts | Article layout |
|
|
81
|
+
| System page | Error, password, subscription | 404 page, email preference center |
|
|
82
|
+
| Email | Marketing emails | Newsletter template |
|
|
83
|
+
|
|
84
|
+
### 2.3 Custom Modules
|
|
85
|
+
|
|
86
|
+
| Element | Configuration | Purpose |
|
|
87
|
+
|---------|--------------|---------|
|
|
88
|
+
| Custom modules | Reusable content blocks in Design Manager | Consistent components across pages |
|
|
89
|
+
| Module fields | Configurable options (text, image, color, link) | Content editors can customize without code |
|
|
90
|
+
| Global modules | Shared across all pages/templates | Update once, apply everywhere (header, footer) |
|
|
91
|
+
| Module groups | Organize related modules | Clean design manager |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 3. Blog
|
|
96
|
+
|
|
97
|
+
**Where:** Marketing > Blog | Settings > Content > Blog
|
|
98
|
+
|
|
99
|
+
### 3.1 Blog Settings
|
|
100
|
+
|
|
101
|
+
| Setting | What to configure | Why it matters |
|
|
102
|
+
|---------|-------------------|----------------|
|
|
103
|
+
| Blog name | Blog title (e.g., "Company Blog") | Appears in RSS, SEO |
|
|
104
|
+
| Blog root URL | Path (e.g., `/blog`) | SEO-friendly URL structure |
|
|
105
|
+
| Posts per page | Number of posts on listing page (10–20) | Page load and UX |
|
|
106
|
+
| Comment settings | Allow/moderate/disable comments | Community engagement |
|
|
107
|
+
| Social sharing | Enable share buttons | Content distribution |
|
|
108
|
+
| Subscription | Allow email subscription to blog | Audience building |
|
|
109
|
+
| Notification email | Email sent to subscribers for new posts | Content distribution |
|
|
110
|
+
| RSS feed | Auto-generated RSS | Syndication |
|
|
111
|
+
| Author pages | Enable/disable author listing pages | SEO and attribution |
|
|
112
|
+
| Tag pages | Enable/disable tag listing pages | Content organization |
|
|
113
|
+
|
|
114
|
+
### 3.2 Blog SEO Defaults
|
|
115
|
+
|
|
116
|
+
| Setting | What to configure | Why it matters |
|
|
117
|
+
|---------|-------------------|----------------|
|
|
118
|
+
| Meta title format | `{post_title} | {blog_name}` | SEO consistency |
|
|
119
|
+
| Meta description | Auto or manual per post | Search engine display |
|
|
120
|
+
| Canonical URL | Auto-set to post URL | Prevent duplicate content |
|
|
121
|
+
| Featured image | Required for social sharing | Social media cards |
|
|
122
|
+
| Structured data | Article schema (auto by HubSpot) | Rich search results |
|
|
123
|
+
|
|
124
|
+
**hscli:**
|
|
125
|
+
```bash
|
|
126
|
+
# List blog posts
|
|
127
|
+
hscli cms blog-posts list --limit 20
|
|
128
|
+
|
|
129
|
+
# Get blog post details
|
|
130
|
+
hscli cms blog-posts get <blogPostId>
|
|
131
|
+
|
|
132
|
+
# Create a blog post
|
|
133
|
+
hscli cms blog-posts create --data '{
|
|
134
|
+
"name": "How to Get Started",
|
|
135
|
+
"slug": "how-to-get-started",
|
|
136
|
+
"contentGroupId": "<blogId>",
|
|
137
|
+
"postBody": "<p>Your content here</p>",
|
|
138
|
+
"metaDescription": "Learn how to get started with our platform."
|
|
139
|
+
}' --force
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 4. Website Pages
|
|
145
|
+
|
|
146
|
+
**Where:** Marketing > Website Pages | Settings > Content > Pages
|
|
147
|
+
|
|
148
|
+
### 4.1 Page Settings
|
|
149
|
+
|
|
150
|
+
| Setting | What to configure | Why it matters |
|
|
151
|
+
|---------|-------------------|----------------|
|
|
152
|
+
| Default template | Template for new pages | Consistency |
|
|
153
|
+
| Page title suffix | Appended to all page titles (e.g., `| Company Name`) | SEO branding |
|
|
154
|
+
| Robots.txt | Custom robots.txt rules | Search engine crawling control |
|
|
155
|
+
| Sitemap | Auto-generated sitemap | Search engine discovery |
|
|
156
|
+
| 404 page | Custom 404 error page | User experience |
|
|
157
|
+
| Password protection | Protect pages behind password | Gated content |
|
|
158
|
+
| IP restrictions | Restrict access by IP (staging/internal) | Pre-launch security |
|
|
159
|
+
|
|
160
|
+
### 4.2 Page Optimization
|
|
161
|
+
|
|
162
|
+
| Feature | Configuration | Purpose |
|
|
163
|
+
|---------|--------------|---------|
|
|
164
|
+
| SEO recommendations | Per-page SEO audit | Improve search ranking |
|
|
165
|
+
| A/B testing | Test page variations | Optimize conversions |
|
|
166
|
+
| Smart content | Personalized content per segment | Targeted messaging |
|
|
167
|
+
| CTAs | Call-to-action buttons with tracking | Conversion tracking |
|
|
168
|
+
| Lazy loading | Auto-enabled for images | Page speed |
|
|
169
|
+
| Minification | Auto CSS/JS minification | Page speed |
|
|
170
|
+
|
|
171
|
+
**hscli:**
|
|
172
|
+
```bash
|
|
173
|
+
# List website pages
|
|
174
|
+
hscli cms pages list --limit 20
|
|
175
|
+
|
|
176
|
+
# Get page details
|
|
177
|
+
hscli cms pages get <pageId>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 5. File Manager
|
|
183
|
+
|
|
184
|
+
**Where:** Marketing > Files and Templates > Files
|
|
185
|
+
|
|
186
|
+
### 5.1 File Organization
|
|
187
|
+
|
|
188
|
+
| Setting | What to configure | Why it matters |
|
|
189
|
+
|---------|-------------------|----------------|
|
|
190
|
+
| Folder structure | Organize by type (images, documents, videos) | Easy asset discovery |
|
|
191
|
+
| File naming | Consistent naming convention | SEO and organization |
|
|
192
|
+
| Image optimization | Auto-resize/compress on upload | Page performance |
|
|
193
|
+
| CDN delivery | Automatic via HubSpot CDN | Fast global delivery |
|
|
194
|
+
| File visibility | Public or private (requires auth) | Access control |
|
|
195
|
+
|
|
196
|
+
### 5.2 File Types
|
|
197
|
+
|
|
198
|
+
| Category | Supported formats | Max size |
|
|
199
|
+
|----------|-------------------|----------|
|
|
200
|
+
| Images | JPG, PNG, GIF, SVG, WebP | 20 MB |
|
|
201
|
+
| Documents | PDF, DOC, DOCX, XLS, PPT | 300 MB |
|
|
202
|
+
| Videos | MP4, MOV, AVI (hosted) | 1 GB (CMS Hub) |
|
|
203
|
+
| Audio | MP3, WAV | 300 MB |
|
|
204
|
+
| Code | JS, CSS | 300 MB |
|
|
205
|
+
|
|
206
|
+
**hscli:**
|
|
207
|
+
```bash
|
|
208
|
+
# List files
|
|
209
|
+
hscli cms files list --limit 20
|
|
210
|
+
|
|
211
|
+
# Upload a file
|
|
212
|
+
hscli cms files upload --file ./logo.png --folder-path /images/branding
|
|
213
|
+
|
|
214
|
+
# Get file details
|
|
215
|
+
hscli cms files get <fileId>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 6. Multi-Language Content
|
|
221
|
+
|
|
222
|
+
**Where:** Settings > Content > Language Settings
|
|
223
|
+
|
|
224
|
+
### 6.1 Language Configuration
|
|
225
|
+
|
|
226
|
+
| Setting | What to configure | Why it matters |
|
|
227
|
+
|---------|-------------------|----------------|
|
|
228
|
+
| Primary language | Main content language | Default for all content |
|
|
229
|
+
| Additional languages | Languages to support | Multi-language variations |
|
|
230
|
+
| Language switcher | Show language selector on pages | User can switch language |
|
|
231
|
+
| URL format | Subdirectory (`/fr/`) or subdomain (`fr.example.com`) | SEO for international |
|
|
232
|
+
| Hreflang tags | Auto-generated by HubSpot | Search engine language targeting |
|
|
233
|
+
| Translation workflow | Who translates + approval process | Quality control |
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## 7. Developer Tools
|
|
238
|
+
|
|
239
|
+
**Where:** Design Manager + Developer File System
|
|
240
|
+
|
|
241
|
+
### 7.1 HubSpot CLI (Developer)
|
|
242
|
+
|
|
243
|
+
| Tool | Command | Purpose |
|
|
244
|
+
|------|---------|---------|
|
|
245
|
+
| Fetch theme | `hs fetch <account> <src> <dest>` | Download theme files locally |
|
|
246
|
+
| Upload | `hs upload <src> <dest>` | Push local changes to HubSpot |
|
|
247
|
+
| Watch | `hs watch <src> <dest>` | Auto-upload on file change |
|
|
248
|
+
| Create | `hs create <type>` | Scaffold modules, templates |
|
|
249
|
+
| Sandbox | `hs sandbox create` | Create development sandbox |
|
|
250
|
+
|
|
251
|
+
### 7.2 HubL (Templating Language)
|
|
252
|
+
|
|
253
|
+
| Feature | Example | Purpose |
|
|
254
|
+
|---------|---------|---------|
|
|
255
|
+
| Variables | `{{ content.name }}` | Dynamic content |
|
|
256
|
+
| Filters | `{{ name\|title }}` | Format output |
|
|
257
|
+
| Tags | `{% if condition %}` | Logic in templates |
|
|
258
|
+
| Modules | `{% module "cta" %}` | Reusable components |
|
|
259
|
+
| Functions | `{{ blog_recent_posts() }}` | Data access |
|
|
260
|
+
|
|
261
|
+
### 7.3 Serverless Functions
|
|
262
|
+
|
|
263
|
+
| Setting | What to configure | Why it matters |
|
|
264
|
+
|---------|-------------------|----------------|
|
|
265
|
+
| Function file | `<name>.functions/serverless.json` | Define endpoints |
|
|
266
|
+
| Routes | API paths your function responds to | Custom API endpoints |
|
|
267
|
+
| Secrets | Environment variables (API keys, etc.) | Secure configuration |
|
|
268
|
+
| Runtime | Node.js 18 | Execution environment |
|
|
269
|
+
| Rate limits | 600 requests/minute per account | Capacity planning |
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## 8. Content Staging
|
|
274
|
+
|
|
275
|
+
**Where:** Content > Content Staging (CMS Hub Professional+)
|
|
276
|
+
|
|
277
|
+
| Setting | What to configure | Why it matters |
|
|
278
|
+
|---------|-------------------|----------------|
|
|
279
|
+
| Staging sandbox | Clone production pages for redesign | Safe testing environment |
|
|
280
|
+
| Staged pages | Select pages to redesign | Control scope of changes |
|
|
281
|
+
| Preview | Review staged changes before publish | Quality assurance |
|
|
282
|
+
| Publish | Push staged changes live | Go-live process |
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Setup Checklist
|
|
287
|
+
|
|
288
|
+
### Domains
|
|
289
|
+
```
|
|
290
|
+
[ ] Primary domain connected and SSL verified
|
|
291
|
+
[ ] Redirect domain configured (www ↔ non-www)
|
|
292
|
+
[ ] Landing page subdomain configured (if separate)
|
|
293
|
+
[ ] Blog path/subdomain configured
|
|
294
|
+
[ ] URL redirect rules created for any migrated content
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Templates & Themes
|
|
298
|
+
```
|
|
299
|
+
[ ] Theme selected/installed
|
|
300
|
+
[ ] Theme settings configured (colors, fonts, spacing)
|
|
301
|
+
[ ] Global header configured (logo, navigation)
|
|
302
|
+
[ ] Global footer configured (links, social, legal)
|
|
303
|
+
[ ] Favicon uploaded
|
|
304
|
+
[ ] Custom modules created for reusable components
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Blog
|
|
308
|
+
```
|
|
309
|
+
[ ] Blog settings configured (name, URL, posts per page)
|
|
310
|
+
[ ] Comment settings set
|
|
311
|
+
[ ] Social sharing enabled
|
|
312
|
+
[ ] Blog subscription email configured
|
|
313
|
+
[ ] SEO defaults set (title format, meta)
|
|
314
|
+
[ ] At least one blog post published
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### Website Pages
|
|
318
|
+
```
|
|
319
|
+
[ ] Default page template selected
|
|
320
|
+
[ ] Page title suffix configured
|
|
321
|
+
[ ] Custom 404 page created
|
|
322
|
+
[ ] Robots.txt reviewed
|
|
323
|
+
[ ] Sitemap verified
|
|
324
|
+
[ ] Key pages created (Home, About, Contact, Pricing)
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### File Manager
|
|
328
|
+
```
|
|
329
|
+
[ ] Folder structure created
|
|
330
|
+
[ ] Brand assets uploaded (logo, images, icons)
|
|
331
|
+
[ ] File naming convention established
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Multi-Language (if applicable)
|
|
335
|
+
```
|
|
336
|
+
[ ] Primary language set
|
|
337
|
+
[ ] Additional languages added
|
|
338
|
+
[ ] URL format chosen (subdirectory or subdomain)
|
|
339
|
+
[ ] Language switcher enabled
|
|
340
|
+
[ ] Translation workflow established
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### Developer Tools
|
|
344
|
+
```
|
|
345
|
+
[ ] HubSpot CLI installed (`npm install -g @hubspot/cli`)
|
|
346
|
+
[ ] CLI authenticated with portal
|
|
347
|
+
[ ] Local development workflow established
|
|
348
|
+
[ ] Sandbox created for testing (if applicable)
|
|
349
|
+
```
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Command compatibility
|
|
2
|
+
|
|
3
|
+
> See also: [COMMAND_TREE.md](COMMAND_TREE.md) · [SAFETY_MODEL.md](SAFETY_MODEL.md) · [RELEASE_GOVERNANCE.md](RELEASE_GOVERNANCE.md)
|
|
4
|
+
|
|
5
|
+
## Stability Promise
|
|
6
|
+
- Existing command names and argument shapes are considered stable in minor/patch versions.
|
|
7
|
+
- New command groups may be added in minor versions.
|
|
8
|
+
- Breaking changes require a major version.
|
|
9
|
+
|
|
10
|
+
## Sensitive Surfaces
|
|
11
|
+
- `crm <object> delete`
|
|
12
|
+
- `crm <object> merge`
|
|
13
|
+
- `crm <object> batch-upsert`
|
|
14
|
+
- `api request` with write methods
|
|
15
|
+
|
|
16
|
+
These are guarded by:
|
|
17
|
+
- `--force`
|
|
18
|
+
- optional policy file (`--policy-file`)
|
|
19
|
+
- optional change ticket (`--change-ticket`) when policy requires it
|
|
20
|
+
|
|
21
|
+
## Migration Guidance
|
|
22
|
+
- Prefer `--json` for automation to avoid brittle text parsing.
|
|
23
|
+
- For new domains, prefer dedicated command groups over raw `api request` when available.
|
|
24
|
+
- Use `auth profiles` and `auth profile-show` before migrations to validate active profile context.
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# COMMAND_TREE
|
|
2
|
+
|
|
3
|
+
> Updated: 2026-04-17 for 0.3.0
|
|
4
|
+
> See also: [COMMAND_COMPATIBILITY.md](COMMAND_COMPATIBILITY.md) · [ARCHITECTURE.md](ARCHITECTURE.md) · [MCP.md](MCP.md)
|
|
5
|
+
|
|
6
|
+
High-level map of every hscli command. For detailed args and examples per command, run `hscli <domain> <cmd> --help`.
|
|
7
|
+
|
|
8
|
+
## Global flags (apply to every command)
|
|
9
|
+
|
|
10
|
+
- `--profile <name>` — Auth profile (default: `default`)
|
|
11
|
+
- `--json` / `--format <table|csv|yaml|json>` — Output format
|
|
12
|
+
- `--dry-run` — Simulate without mutating
|
|
13
|
+
- `--force` — Required for live writes / deletes
|
|
14
|
+
- `--policy-file <path>` — Load write/delete policy
|
|
15
|
+
- `--change-ticket <id>` — Change-ticket enforcement (when policy demands it)
|
|
16
|
+
- `--strict-capabilities` — Fail fast on unsupported endpoints
|
|
17
|
+
- `--telemetry-file <path>` — JSONL request audit trail
|
|
18
|
+
- `--verbose` — Print request/response details
|
|
19
|
+
|
|
20
|
+
## Auth
|
|
21
|
+
|
|
22
|
+
- `hscli auth login --token-stdin` | `--token <token>`
|
|
23
|
+
- `hscli auth logout [--profile <name>]`
|
|
24
|
+
- `hscli auth profiles` — list profiles
|
|
25
|
+
- `hscli auth profile-show [--profile <name>]`
|
|
26
|
+
- `hscli auth token-info`
|
|
27
|
+
- `hscli auth oauth-url --client-id <id> --redirect-uri <uri> --scope <scopes>`
|
|
28
|
+
- `hscli auth oauth-exchange --client-id <id> --client-secret <secret> --redirect-uri <uri> --code <code>`
|
|
29
|
+
- `hscli auth vault-encrypt` | `vault-decrypt` | `vault-rotate` — encrypted token vault
|
|
30
|
+
|
|
31
|
+
## Doctor
|
|
32
|
+
|
|
33
|
+
- `hscli doctor capabilities [--refresh]` — probe portal tier + scopes
|
|
34
|
+
- `hscli doctor permissions` — introspect current token scopes
|
|
35
|
+
|
|
36
|
+
## CRM (22 sub-command files)
|
|
37
|
+
|
|
38
|
+
Objects:
|
|
39
|
+
- `hscli crm contacts|companies|deals|tickets list|get|search|create|update|delete [...]`
|
|
40
|
+
- `hscli crm quotes|products|line-items|goals list|get|search|create|update|delete [...]`
|
|
41
|
+
- `hscli crm payments|invoices|subscriptions list|get [...]` — commerce
|
|
42
|
+
- `hscli crm custom-objects schemas list|get|create|update|delete`
|
|
43
|
+
- `hscli crm custom-objects records list|get|search|create|update|delete`
|
|
44
|
+
- `hscli crm engagements (notes|calls|tasks|emails|meetings) list|get|create|update|delete`
|
|
45
|
+
|
|
46
|
+
Properties + pipelines + associations:
|
|
47
|
+
- `hscli crm properties list|get|create|update|delete` + `hscli crm properties groups list|create|update|delete`
|
|
48
|
+
- `hscli crm pipelines list|get|create|update|delete` + `hscli crm pipelines stages create|update|delete`
|
|
49
|
+
- `hscli crm associations list|get|create|delete`
|
|
50
|
+
- `hscli crm owners list|get`
|
|
51
|
+
|
|
52
|
+
Imports + sync + introspection:
|
|
53
|
+
- `hscli crm imports list|get|create`
|
|
54
|
+
- `hscli crm sync pull --object <type>` — incremental sync
|
|
55
|
+
- `hscli crm describe <object> [--refresh-cache] [--offline]` — schema introspection
|
|
56
|
+
- `hscli crm validate <object> --data '<payload>' [--offline]` — client-side validation
|
|
57
|
+
|
|
58
|
+
## Marketing (9 files)
|
|
59
|
+
|
|
60
|
+
- `hscli marketing emails list|get|create|update|delete`
|
|
61
|
+
- `hscli marketing emails stats <emailId>` — **per-email engagement metrics**
|
|
62
|
+
- `hscli marketing campaigns list|get|create|update|delete`
|
|
63
|
+
- `hscli marketing ads accounts|campaigns list|get`
|
|
64
|
+
- `hscli marketing social accounts|posts list|get`
|
|
65
|
+
- `hscli marketing seo recommendations|topics list|get`
|
|
66
|
+
- `hscli marketing landing-pages list|get|create|update|delete`
|
|
67
|
+
- `hscli marketing transactional send|smtp-tokens`
|
|
68
|
+
- `hscli marketing subscriptions list|get` — subscription types
|
|
69
|
+
- `hscli marketing events list|get|create|update|delete`
|
|
70
|
+
- `hscli marketing behavioral-events list|get|create|update`
|
|
71
|
+
|
|
72
|
+
## Sales (4 files)
|
|
73
|
+
|
|
74
|
+
- `hscli sales sequences list|get|enrollments`
|
|
75
|
+
- `hscli sales meetings list|get|create|update`
|
|
76
|
+
- `hscli sales calling list|get`
|
|
77
|
+
- `hscli sales goals list|get`
|
|
78
|
+
|
|
79
|
+
## Service (4 files)
|
|
80
|
+
|
|
81
|
+
- `hscli service conversations list|get|send-message`
|
|
82
|
+
- `hscli service feedback list|get`
|
|
83
|
+
- `hscli service chatflows list|get|create|update|delete`
|
|
84
|
+
- `hscli service knowledge-base articles list|get|create|update|delete`
|
|
85
|
+
- `hscli service pipelines list|get|create|update`
|
|
86
|
+
|
|
87
|
+
## CMS
|
|
88
|
+
|
|
89
|
+
- `hscli cms hubdb tables list|get|rows list|create|update|delete`
|
|
90
|
+
- `hscli cms redirects list|get|create|update|delete`
|
|
91
|
+
- `hscli cms landing-pages list|get`
|
|
92
|
+
- `hscli cms domains list|get`
|
|
93
|
+
|
|
94
|
+
## Lists (standalone top-level)
|
|
95
|
+
|
|
96
|
+
- `hscli lists list|get|create|update|delete`
|
|
97
|
+
- `hscli lists search --query <term>`
|
|
98
|
+
- `hscli lists add-members --list-id <id> --object-ids <ids>`
|
|
99
|
+
- `hscli lists remove-members --list-id <id> --object-ids <ids>`
|
|
100
|
+
|
|
101
|
+
## Reporting
|
|
102
|
+
|
|
103
|
+
- `hscli reporting dashboards list|get`
|
|
104
|
+
- `hscli reporting reports list|get`
|
|
105
|
+
|
|
106
|
+
## Exports
|
|
107
|
+
|
|
108
|
+
- `hscli exports create --data '<payload>'`
|
|
109
|
+
- `hscli exports list|get|status <id>`
|
|
110
|
+
|
|
111
|
+
## Settings
|
|
112
|
+
|
|
113
|
+
- `hscli settings users list|get|create|update|delete` + `roles list`
|
|
114
|
+
- `hscli settings teams list`
|
|
115
|
+
- `hscli settings business-units list`
|
|
116
|
+
- `hscli settings currencies list`
|
|
117
|
+
- `hscli settings gdpr delete-contact <id>`
|
|
118
|
+
- `hscli settings audit-logs list [--filters]`
|
|
119
|
+
|
|
120
|
+
## Account
|
|
121
|
+
|
|
122
|
+
- `hscli account info`
|
|
123
|
+
- `hscli account audit-logs list [--filters]`
|
|
124
|
+
- `hscli account private-apps` — **list private apps installed (integration audit)**
|
|
125
|
+
- `hscli account api-usage` — daily API usage totals
|
|
126
|
+
|
|
127
|
+
## Communication preferences
|
|
128
|
+
|
|
129
|
+
- `hscli communication-preferences status|definitions|update`
|
|
130
|
+
|
|
131
|
+
## Conversations
|
|
132
|
+
|
|
133
|
+
- `hscli conversations list|get|send-message`
|
|
134
|
+
|
|
135
|
+
## Events
|
|
136
|
+
|
|
137
|
+
- `hscli events list|get|create`
|
|
138
|
+
|
|
139
|
+
## Automation
|
|
140
|
+
|
|
141
|
+
- `hscli automation flows list|get` + `actions list|get`
|
|
142
|
+
|
|
143
|
+
## Workflows
|
|
144
|
+
|
|
145
|
+
- `hscli workflows flows list|get` + `actions list|get` + `sequences list|get`
|
|
146
|
+
|
|
147
|
+
## Files + Forms + Domains + Site-search + Timeline
|
|
148
|
+
|
|
149
|
+
- `hscli files list|get|upload|delete`
|
|
150
|
+
- `hscli forms list|get|submissions list|create`
|
|
151
|
+
- `hscli domains list|get`
|
|
152
|
+
- `hscli site-search list --type <type>`
|
|
153
|
+
- `hscli timeline events list|create`
|
|
154
|
+
|
|
155
|
+
## Webhooks
|
|
156
|
+
|
|
157
|
+
- `hscli webhooks list --app-id <id>`
|
|
158
|
+
- `hscli webhooks subscribe --app-id <id> --data '<payload>'`
|
|
159
|
+
- `hscli webhooks delete --app-id <id> --subscription-id <id>`
|
|
160
|
+
|
|
161
|
+
## Raw API
|
|
162
|
+
|
|
163
|
+
- `hscli api request --path <path> [--method GET|POST|PATCH|PUT|DELETE] [--data '<payload>']`
|
|
164
|
+
- Path is validated against the allowed API scopes — SSRF and traversal attempts are rejected at transport.
|
|
165
|
+
|
|
166
|
+
## MCP server
|
|
167
|
+
|
|
168
|
+
- `hscli mcp` — start MCP server over stdio. ~125 tools across the full surface. Profile-isolated via `HSCLI_MCP_PROFILE`.
|
|
169
|
+
|
|
170
|
+
Full tool catalog and Claude Desktop / Cursor config in [MCP.md](MCP.md).
|
|
171
|
+
|
|
172
|
+
## Seed (dev + testing)
|
|
173
|
+
|
|
174
|
+
- `hscli seed --all [--dry-run]` — seed a test portal with the 48-asset baseline
|
|
175
|
+
|
|
176
|
+
## Notes
|
|
177
|
+
|
|
178
|
+
- All live writes require `--force` (or `--dry-run` to simulate).
|
|
179
|
+
- Write and batch requests include an `Idempotency-Key` header for replay safety.
|
|
180
|
+
- Transport tracks HubSpot rate-limit headers and throttles proactively.
|
|
181
|
+
- Policy checks apply to writes/deletes when `--policy-file` is provided.
|
|
182
|
+
- Capability cache is keyed by portal + token scopes; `--strict-capabilities` forces cached-state preflight.
|
|
183
|
+
- Schema cache (`crm describe` / `crm validate`) supports an `--offline` mode after first fetch.
|