@customerio/cli

中文文档
0.0.37发布于 2026/11/03SEE LICENSE IN LICENSE零依赖构建来源已验证近 30 天下载 1.1万

客户首个CLI.io APIs代理

中文使用文档
文档目录21 节
  1. 安装
  2. 卸载
  3. 安装代理技能
  4. 认证
  5. 新到客户。 io?
  6. 登录
  7. 调试解析命令
  8. 简介
  9. 如何运作
  10. 覆盖每个命令
  11. 使用量
  12. 账户ID回落
  13. 用 Jq 过滤
  14. 写入操作
  15. 倾斜
  16. 全球旗帜
  17. 退出代码
  18. 错误格式
  19. 建筑
  20. 发展
  21. 许可证

客户.io CLI(cio(中文(简体) )

客户首个CLI.io APIs.

800+出行路线+100+CDP 管道路线,每端码为0. 单人 cio api <path> 命令覆盖每个终点。 每个命令都会返回结构化的JSON来出局. 每个错误都会将结构化的JSON返回到 stderr.

AI代理是主要消费者. 使用 cio schema 在召唤他们之前先回顾一下终点.

安装

npm i -g @customerio/cli
cio --help

要从源头构建 :

go install github.com/customerio/cli@latest

卸载

# If installed via npm
npm uninstall -g @customerio/cli

# If installed via go install
rm -f "$(go env GOPATH)/bin/cio"

要删除已存储的证书和缓存数据 :

rm -rf ~/.cio

安装代理技能

这回转船a SKILLL.MD (英语) 所以克劳德代码,光标,代码,Windsurf,以及其他支持的代理 打开代理技能 懂得驾驶CLI.

CLI 可以直接安装当前技能 :

# Installs the bootstrap skill; prompts for global (~/.claude, ~/.agents)
# vs. project (./.claude, ./.agents)
cio skills install

cio skills install --global          # install for every project
cio skills install --project         # install into the current directory
cio skills install --target claude   # Claude Code only (use --target codex for Codex)
cio skills install --dry-run         # show what would be written
cio skills install --force           # overwrite an existing SKILL.md

这只安装了Client.io riottrap技能——它的 SKILL.md 路由索引写入 <target>/skills/<name>/ 克劳德代码( Claude Code) (.claude和公开代理技能公约(.agents)克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克 所有其他参考文献(Journey, CDP, Design Studio, 配方)均由后端服务,并按要求通过 cio skills read <skill>,因此没有其它内容是本地复制的,内容保持不变.

或者通过开放代理技能工具安装:

npx skills add customerio/cli

认证

使用CLI 软件 服务账户符号 (单位:千美元)sa_live_...用于认证。 这些通过OAuth 2.0客户端证书交换短寿命的JWT,就像 gh auth。 。 。 .

新到客户。 io?

从 CLI 创建账户 . start 电子邮件给您一个6位数的代码,以及 verify 检查它,创建账户并保存其证书,所以你 之后不需要登录.

cio auth signup start --json '{"email":"[email protected]"}'

cio auth signup verify --json '{
  "email": "[email protected]",
  "code": "123456",
  "company_name": "Acme",
  "first_name": "Ada",
  "last_name": "Lovelace",
  "data_center": "us"
}'

data_center 实值 us 或者说 eu。AI代理可以为用户运行此功能; 完整 流量在 cio skills read cio/auth.md。 。 。 .

登录

# Interactive — prints the browser login URL, then prompts for the minted token
cio auth login

# Read from stdin (for CI/automation; login still auto-discovers region)
echo "$SA_TOKEN" | cio auth login --with-token

# Verify auth works
cio auth status

# Print raw token
cio auth token

# Logout
cio auth logout

调试解析命令

  1. --token 旗帜(最高优先级)
  2. CIO_TOKEN 环境变量
  3. ~/.cio/config.json 文件( 最低优先级)

使用时 CIO_TOKEN 或者说 --token 直接根据正常命令,您可以 还需要 CIO_REGION=us|eu 或者说 --api-url。 。 。 .

简介

保留多个证书集——生产,中转,多个客户账户 在一个配置文件中,并在它们之间切换。 每张相片都有自己的标语, 区域,以及可选的自定义基础 URL.

# Log into a named profile (custom --api-url is remembered; switches to it)
echo "$STAGING_TOKEN" | cio auth login --profile staging --with-token --api-url https://<staging-host>

# List profiles (the saved default is marked current)
cio profile list

# Use a profile for one command…
cio --profile staging api /v1/campaigns
# …or a whole session
export CIO_PROFILE=staging

# Change the default, or remove a profile
cio profile use default
cio profile remove staging

剖面分辨率 : --profile 旗帜 □ CIO_PROFILE * 储存 current_profile → default中,将移动到 default 配置自动。 配置文件名称可能包含字母,数字, ., (中文(简体) ), -, (中文(简体) ), 财务报告和审定财务报表 _。 。 。 .

cio auth login 无 --profile 重新校正任何配置文件 目前选中, 并不总是 default - 通过 --profile <name> 目标a 具体一个. cio profile list 标记已保存的默认值( e)current_profile, (中文(简体) ), 每个命令 --profile 编号 : CIO_PROFILE 覆盖不变 .

如何运作

  1. 您提供服务账户代号( Y)sa_live_... 从客户.io UI 账户设置 管理API证书 服务账户),或 cio auth signup verify 为新账户保存一个
  2. CLI通过JWT交换 POST /v1/service_accounts/oauth/token
  3. JWT 本地缓存, 过期时自动刷新
  4. 所有 API 调用 Authorization: Bearer <jwt>

覆盖每个命令

cio --token sa_live_xxx api /v1/environments/{environment_id}/campaigns --params '{"environment_id": "123"}'
CIO_TOKEN=sa_live_xxx cio api /v1/environments/{environment_id}/campaigns --params '{"environment_id": "123"}'

使用量

使用 cio api <path> 用于任何 API 端点。 路径占位符从 --params。HTTP 方法默认为获取(如果 --json ); 以 -X数字 :

--params 使用 JSON 对象; URL- query 语法(--params 'type=event&size=200'也予以接受。 重复 --params 将数值分拆为不同旗帜(--params type=event --params size=200; 不止一次给定的密钥是一个错误。 在查询中,一个赤裸的 + 被否定为模棱两可——写作 %20 用于空间和 %2B 用于加(email=a%[email protected]),或使用JSON形式,两者都是字面的.

# List campaigns in workspace 123
cio api /v1/environments/{environment_id}/campaigns --params '{"environment_id": "123"}'

# Get a specific campaign
cio api /v1/environments/{environment_id}/campaigns/{campaign_id} \
  --params '{"environment_id": "123", "campaign_id": "456"}'

# Create a campaign
cio api /v1/environments/{environment_id}/campaigns \
  --params '{"environment_id": "123"}' \
  --json '{"campaign": {"name": "Welcome Flow", "type": "none"}}'

# Explicit method override
cio api /v1/environments/{environment_id}/campaigns/{campaign_id} -X DELETE \
  --params '{"environment_id": "123", "campaign_id": "456"}'

# Introspect endpoints
cio schema                          # list all resources
cio schema campaigns                # list endpoints for a resource
cio schema campaigns.list           # full schema for a method
cio schema GET /v1/environments/{environment_id}/campaigns  # by HTTP method + path
cio schema campaigns.list --compact # flattened one line per field instead of JSON Schema

账户ID回落

包含路径 {account_id} 从账户中自动填入存储的ID cio auth login所以,你不需要传递它 在每一个电话:

cio api /v1/accounts/{account_id}/environments

过 --params '{"account_id": "..."}' 要覆盖,或设置 CIO_ACCESS_TOKEN 以禁用后退(预交换的JWT可能属于不同的账户).

用 Jq 过滤

# Filter with --jq to save context window
cio api /v1/environments/{environment_id}/campaigns \
  --params '{"environment_id": "123"}' \
  --jq '.campaigns[] | {id, name, state}'

# Complex filtering
cio api /v1/environments/{environment_id}/campaigns \
  --params '{"environment_id": "123"}' \
  --jq '.campaigns[] | select(.state == "active") | {id, name}'

写入操作

# Always dry-run first
cio api /v1/environments/{environment_id}/campaigns \
  --params '{"environment_id": "123"}' \
  --json '{"campaign": {"name": "Welcome Flow", "type": "none"}}' --dry-run

# Then execute (removes --dry-run)
cio api /v1/environments/{environment_id}/campaigns \
  --params '{"environment_id": "123"}' \
  --json '{"campaign": {"name": "Welcome Flow", "type": "none"}}'

倾斜

cio api /v1/environments/{environment_id}/campaigns \
  --params '{"environment_id": "123"}' --page 2 --limit 50

# Auto-paginate (emits NDJSON — one JSON object per line)
cio api /v1/environments/{environment_id}/campaigns \
  --params '{"environment_id": "123"}' --page-all

全球旗帜

旗帜信封瓦尔说明
--token <value>CIO_TOKEN服务账户符号覆盖
--profile <name>CIO_PROFILE要使用的配置配置配置文件
-X, --methodHTTP 方法覆盖( 默认: 获取, 或者如果 -- json )
--json <payload>Raw JSON 请求正文或 @filename 从文件读取
--params <json>查询参数为 JSON ~ 查询字符串
--jq <expr>jq 表达式过滤器( 通过gojq)
--dry-run验证 + 打印请求, 跳过执行
--api-url <url>API 基础 URL 覆盖
--timeout <duration>CIO_TIMEOUTHTTP 请求超时( 默认: 30s)
--page <n>页码
--limit <n>页面大小
--page-all自动粘贴, 释放 NDJSON

cio api 重试 GET 和 HEAD 的超时程序, 并仅在请求时写入 未发送。 写入发送后未重试的回复时间 他们可能已经申请了. --timeout 仍然限制每次 HTTP 尝试,并且 默认为30s.

超时与 HTTP 429 共享现有的重试限制和指数回放 可重试5xx回复. CIO_MAX_RETRIES 默认为3次复试, 共4次 尝试; 设置为 0 以禁用这些重试 。 呼叫者取消或过期 呼叫截止时间停止重复 。 因此,重复超时的时间可能比 --timeout 总计。 若为 --page-all 它会用完复读器,会出错 ,并将任何更早的页面保留在 stdout; 呼叫者必须在退出状态之前检查其退出状态 使用输出作为完整结果.

退出代码

代码含义
0 个成绩
1个一般错误
2个校验/ 输入错误
3个认证错误
页:1授权错误
页:1API 错误( 4xx/5xx)

错误格式

{"error":true,"code":"AUTH_ERROR","message":"Not authenticated.","details":{"status_code":401}}

建筑

CLI使用一个 常规 api 命令 + 路由注册 结构 :

  1. cio api <path> ——一个使用 API 路径的单一命令 {placeholder} 段落
  2. OpenAPI 规格从第一次使用的活的 API 下载,并在本地缓存 ~/.cio/cache/specs/ (24h TTL,基于ETag的有条件刷新). 使用 cio schema --refresh 强制重新卸载.
  3. internal/routes/enrichment.json — OpenAPI spec中尚未注释的路由摘要,参数描述,查询参数
# Discover resources
cio schema

# List endpoints for a resource
cio schema campaigns

# Inspect a method's parameters
cio schema campaigns.list

# Make an API call
cio api /v1/environments/{environment_id}/campaigns --params '{"environment_id": "123"}'

# CDP Pipelines (workspace_id = environment_id)
cio api /cdp/api/workspaces/{workspace_id}/sources --params '{"workspace_id": "123"}'
cio schema sources

发展

go build -o cio .
go test ./...
go test ./... -v -run TestAuthLogin

许可证

根据Apache License 2.0颁发的许可,并附有《共同条款限制》。 见 自由主义。 。 。 .

版本与发布记录

@customerio/cli 共发布 42 个版本,首次发布于 2026/04/29;过去 12 个月发布了 42 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.0.37latest2026/11/038 天前
0.0.362026/10/2715 天前
0.0.352026/10/2615 天前
0.0.342026/10/2418 天前
0.0.332026/10/2418 天前
0.0.322026/10/2121 天前

其他发布通道:bootstrap → 0.0.0-bootstrap,alpha → 0.0.18-alpha.1。

关于 @customerio/cli 的常见问题

@customerio/cli 是什么?

客户首个CLI.io APIs代理

如何安装 @customerio/cli?

在项目目录运行 npm install @customerio/cli,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 cio,可以用 npx cio 直接运行。

@customerio/cli 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/customerio__cli 是否存在。

@customerio/cli 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@customerio/cli 可以商用吗?

@customerio/cli 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@customerio/cli 的下载量有多少?

根据 npm 官方下载统计,@customerio/cli 在 2026/10/11 – 2026/11/09 这 30 天内被下载 11,311 次,日均约 377 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@customerio/cli 还在维护吗?

最新版本 0.0.37 发布于 2026/11/03(8 天前);至今共发布 42 个版本,其中过去 12 个月发布了 42 个;首次发布于 2026/04/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。