catalyst-by-zoho
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCatalyst by Zoho — Skill Index
Zoho Catalyst — 技能索引
This is the routing layer. Load the most specific matching skill — do not answer from this file alone.
这是路由层。请加载最匹配的特定技能——不要仅从此文件直接作答。
Philosophy
理念
- Prefer MCP over asking. If tools are available, use them. Never ask the user to copy IDs from the console.
CatalystbyZoho_* - Default to Development. Always target the Development environment unless the user explicitly says "production" or "deploy to prod".
- "Build an app" means Slate + Function by default. When a user says "build an app", "create an app", or "make a simple app" without specifying backend-only, the default output is a Slate frontend + Advanced I/O function backend. Do NOT build only a function and call it an app. If the user's intent is clearly backend-only (e.g. "build an API", "write a function"), skip Slate.
- Prefer Functions over AppSail for simple HTTP. Functions are cheaper (per-invocation billing), simpler to deploy, and require no infrastructure management. Reach for AppSail only when the use case genuinely requires a persistent process, or a custom runtime.
- Show cost before building. For any new infrastructure (functions, AppSail, Stratus buckets), load and give a brief estimate before writing code. Most small projects stay within free tier — say so when true.
catalyst-pricing - Recommend the current service, not the deprecated one. File Store → Stratus. Event Listeners → Signals. Cron → Job Scheduling. Never mention the deprecated name in generated code or config.
- Warn before the region bites. Circuits and Integration Functions do not work in most data centers. Check the user's DC before suggesting them.
- 优先使用MCP,而非询问用户:如果工具可用,请使用它们。切勿让用户从控制台复制ID。
CatalystbyZoho_* - 默认使用开发环境:始终以开发环境为目标,除非用户明确说明“production”(生产环境)或“deploy to prod”(部署到生产环境)。
- “构建应用”默认指Slate + Function:当用户说“build an app”“create an app”或“make a simple app”且未指定仅后端时,默认输出为Slate前端 + Advanced I/O函数后端。请勿仅构建一个函数就称之为应用。如果用户的意图明确为仅后端(例如“build an API”“write a function”),则跳过Slate。
- 简单HTTP场景优先使用Functions而非AppSail:Functions成本更低(按调用次数计费)、部署更简单,且无需基础设施管理。仅当用例确实需要持久化进程或自定义运行时时,才选择AppSail。
- 构建前告知成本:对于任何新的基础设施(函数、AppSail、Stratus存储桶),请加载并在编写代码前给出简要估算。大多数小型项目可免费使用——若符合此情况请说明。
catalyst-pricing - 推荐当前服务,而非已弃用服务:File Store → Stratus;Event Listeners → Signals;Cron → Job Scheduling。在生成的代码或配置中切勿提及已弃用名称。
- 提前告知地域限制风险:Circuits和Integration Functions在大多数数据中心无法使用。建议用户前请检查其所在的数据中心。
How It Works
工作流程
- Pre-flight — Check that and
.catalystrcexist. If missing, use MCP to get org/project IDs and runcatalyst.json. Never use interactivecatalyst init --org <orgId> -p <projectId> -ni.catalyst init - MCP check — Look for tools. If available, use MCP to fetch org/project IDs instead of asking the user.
CatalystbyZoho_* - Route — Match the query to the most specific service in the routing table below.
- Load lazily — Read ONLY the single reference file needed for the current step. Do NOT preload multiple skills upfront. For "build an app" requests: (a) assume Slate frontend + AIO function unless the user says backend-only, (b) sketch the architecture briefly and confirm with the user before building, (c) then load one reference file per service as you write each part — for the frontend,
catalyst-slatefor the backend.catalyst-functions - Cost check — Only load if the user specifically asks about cost, or if the plan includes AppSail, Stratus, or other paid-tier services. Skip for basic Functions + DataStore projects (likely free tier).
catalyst-pricing - Answer — Provide code examples using the user's platform (Node.js, Python, Java, Web, or Mobile).
- 预检 — 检查和
.catalystrc是否存在。如果缺失,请使用MCP获取组织/项目ID并运行catalyst.json。切勿使用交互式catalyst init --org <orgId> -p <projectId> -ni。catalyst init - MCP检查 — 查找工具。如果可用,请使用MCP获取组织/项目ID,而非询问用户。
CatalystbyZoho_* - 路由 — 将查询与下方路由表中最匹配的服务对应。
- 懒加载 — 仅读取当前步骤所需的单个参考文件。请勿预先加载多个技能。对于“构建应用”请求:(a) 除非用户说明仅后端,否则默认采用Slate前端 + AIO函数架构;(b) 先简要概述架构并征得用户确认后再开始构建;(c) 编写各部分时按需加载对应服务的参考文件——前端用,后端用
catalyst-slate。catalyst-functions - 成本检查 — 仅当用户专门询问成本,或方案包含AppSail、Stratus或其他付费层级服务时,才加载。基础Functions + DataStore项目可跳过(大概率属于免费层级)。
catalyst-pricing - 作答 — 根据用户使用的平台(Node.js、Python、Java、Web或Mobile)提供代码示例。
Triggers
触发条件
Use this skill for queries containing: Catalyst, zcatalyst, AppSail, Data Store, ZCQL, Cache, Stratus, Slate, NoSQL, Zia Services, QuickML, API Gateway, Connections, Zoho MCP, CatalystbyZoho, , , , , , Catalyst pricing, "build on Zoho's platform", or "deploy to Catalyst". Do NOT use for generic Zoho CRM questions unless Catalyst is the target.
catalyst initcatalyst deploycatalyst servezcatalyst-sdk-nodecatalyst-config.json当查询包含以下内容时使用本技能:Catalyst、zcatalyst、AppSail、Data Store、ZCQL、Cache、Stratus、Slate、NoSQL、Zia Services、QuickML、API Gateway、Connections、Zoho MCP、CatalystbyZoho、、、、、、Catalyst pricing、"build on Zoho's platform"或"deploy to Catalyst"。除非目标是Catalyst,否则请勿用于通用Zoho CRM问题。
catalyst initcatalyst deploycatalyst servezcatalyst-sdk-nodecatalyst-config.json🛑 Pre-flight gate (project-mutating tasks only)
🛑 预检关卡(仅针对修改项目的任务)
Step 1 — MCP check (do this before anything else for infrastructure tasks):
Look for tools in your tool list.
CatalystbyZoho_*- If present — use MCP to fetch org/project IDs. Never ask the user to copy IDs from the console.
How to call MCP tools correctly:
- takes
ZohoMCP_getSchema, NOTquery_params:bodyZohoMCP_getSchema({ query_params: { tool_name: "CatalystbyZoho_List_All_Projects" } }) - Always call first for any
ZohoMCP_getSchematool — never guess the argument shape. Many tools requireCatalystbyZoho_*(e.g.path_variables) that are invisible without the schema.project_id - takes a
ZohoMCP_executeToolwith this shape:bodyZohoMCP_executeTool({ body: { tool_name: "CatalystbyZoho_List_All_Functions", arguments: { path_variables: { project_id: "31594000000127002" }, headers: {}, body: {} } }}) - Tools with no required path variables (e.g. ,
List_All_Organizations) can be called withList_All_Projects.arguments: {}
- If NOT present and the task creates resources, writes files, deploys, or reads project IDs — HARD STOP. Do NOT write any code or create any files. Tell the user:
"Zoho MCP needs to be connected before I can work with your Catalyst project. Load theskill to set it up — it takes under a minute." Do not proceed until
catalyst-zoho-mcptools are visible.CatalystbyZoho_*
This gate applies only when the task writes Catalyst project files, deploys, reads project/environment IDs, or performs MCP project operations. Skip it for informational questions (pricing, architecture advice, service selection, "what is Catalyst?", install help, SDK usage, or any question that doesn't require an initialized project).
For project-mutating tasks: verify and exist in the working directory.
.catalystrccatalyst.json- If missing → use MCP tools to get the org ID and project ID, then run:
Never ask the user to runbash
catalyst init --org <orgId> -p <projectId> -niinteractively. Never createcatalyst initor.catalystrcyourself — they must be generated by the CLI. Note: NI mode can only link an existing project. If no project exists yet, tell the user to create one in the Catalyst console, then come back — you'll link it withcatalyst.json.catalyst init -ni
步骤1 — MCP检查(执行基础设施任务前务必先完成):
在工具列表中查找工具。
CatalystbyZoho_*- 如果存在 — 使用MCP获取组织/项目ID。切勿让用户从控制台复制ID。
正确调用MCP工具的方式:
- 接收
ZohoMCP_getSchema,而非query_params:bodyZohoMCP_getSchema({ query_params: { tool_name: "CatalystbyZoho_List_All_Projects" } }) - 调用任何工具前,务必先调用
CatalystbyZoho_*——切勿猜测参数格式。许多工具需要ZohoMCP_getSchema(例如path_variables),这些参数只有通过schema才能查看。project_id - 接收如下格式的
ZohoMCP_executeTool:bodyZohoMCP_executeTool({ body: { tool_name: "CatalystbyZoho_List_All_Functions", arguments: { path_variables: { project_id: "31594000000127002" }, headers: {}, body: {} } }}) - 无需必填路径变量的工具(例如、
List_All_Organizations)可使用List_All_Projects调用。arguments: {}
- 如果不存在且任务涉及创建资源、写入文件、部署或读取项目ID — 强制终止。请勿编写任何代码或创建任何文件。告知用户:
"在处理您的Catalyst项目前,需要先连接Zoho MCP。请加载技能完成设置——耗时不到一分钟。" 直到
catalyst-zoho-mcp工具可见后再继续。CatalystbyZoho_*
本关卡仅适用于写入Catalyst项目文件、部署、读取项目/环境ID或执行MCP项目操作的任务。 信息类问题可跳过(例如定价、架构建议、服务选择、“什么是Catalyst?”、安装帮助、SDK使用,或任何无需初始化项目的问题)。
针对修改项目的任务:验证工作目录中是否存在和。
.catalystrccatalyst.json- 如果缺失 → 使用MCP工具获取组织ID和项目ID,然后运行:
切勿让用户以交互式方式运行bash
catalyst init --org <orgId> -p <projectId> -ni。切勿自行创建catalyst init或.catalystrc——必须由CLI生成。 注意: NI模式仅能关联现有项目。如果尚无项目,请告知用户先在Catalyst控制台创建一个,然后返回——您将使用catalyst.json进行关联。catalyst init -ni
Catalyst at a Glance
Catalyst 概览
New to Catalyst? Here's what each service does in one line:
| Service | What it is |
|---|---|
| Functions | Serverless functions — Basic I/O (HTTP), Advanced I/O, Event, Cron, Integration, Email Parser, Push Notification. Per-invocation billing. |
| AppSail | PaaS for long-running web apps — Node.js, Java, Python managed runtimes, or any Docker container. |
| Data Store | Relational tables (rows + columns, foreign keys). Queried via ZCQL (SQL-like) or SDK. |
| Stratus | Object/file storage (like S3). Buckets, folders, objects. Up to 250 GB per object. |
| Slate | Frontend hosting (like Vercel). Deploys React, Next.js, Vue, Angular, Svelte, Preact, Astro, SolidJS, static HTML. |
| Cache | In-memory key-value store. Divided into segments. TTL in hours, max 48 h. |
| NoSQL | Document storage with flexible schema (no fixed columns). For unstructured/polymorphic data. |
| Authentication | Built-in user sign-up/login (ZAID). OAuth Connections for third-party APIs. |
| SmartBrowz | Headless browser automation, PDF/screenshot generation, Browser Logic functions, Browser Grid (parallel browsers), and Dataverse (web scraping). |
| Zia Services | Pre-trained AI/ML: OCR, Face Analytics, Text Analytics, Object Detection, Barcode, Moderation. |
| QuickML | AutoML — train models on your own data without writing ML code. (Not in EU/AU/IN/JP/SA/CA) |
| Circuits | Serverless workflow orchestration (step functions). (Not in EU/AU/IN/JP/SA/CA) |
| Signals | Event-driven triggers / pub-sub (replaces legacy Event Listeners). |
| Job Scheduling | Recurring/scheduled function execution (replaces legacy Cron). |
| Zoho MCP | AI tool integration — lets AI agents manage Catalyst infrastructure via |
| ZCQL | SQL-like query language for Data Store. |
| ZAID | Zoho Account ID — the built-in auth identity layer. Used with Web SDK for user auth flows. |
刚接触Catalyst?以下是各服务的一句话介绍:
| 服务 | 说明 |
|---|---|
| Functions | 无服务器函数——Basic I/O(HTTP)、Advanced I/O、事件触发、定时任务、集成、邮件解析、推送通知。按调用次数计费。 |
| AppSail | 用于长期运行Web应用的PaaS——支持Node.js、Java、Python托管运行时,或任何Docker容器。 |
| Data Store | 关系型表(行+列、外键)。可通过ZCQL(类SQL)或SDK查询。 |
| Stratus | 对象/文件存储(类似S3)。包含存储桶、文件夹、对象。单个对象最大250 GB。 |
| Slate | 前端托管服务(类似Vercel)。支持部署React、Next.js、Vue、Angular、Svelte、Preact、Astro、SolidJS、静态HTML。 |
| Cache | 内存键值存储。分为多个段。TTL以小时为单位,最长48小时。 |
| NoSQL | 文档存储,架构灵活(无固定列)。适用于非结构化/多态数据。 |
| Authentication | 内置用户注册/登录(ZAID)。支持第三方API的OAuth Connections。 |
| SmartBrowz | 无头浏览器自动化、PDF/截图生成、Browser Logic函数、Browser Grid(并行浏览器)和Dataverse(网页抓取)。 |
| Zia Services | 预训练AI/ML:OCR、人脸分析、文本分析、目标检测、条形码识别、内容审核。 |
| QuickML | AutoML——无需编写ML代码即可用自有数据训练模型。(在欧盟/澳大利亚/印度/日本/沙特/加拿大不可用) |
| Circuits | 无服务器工作流编排(步骤函数)。(在欧盟/澳大利亚/印度/日本/沙特/加拿大不可用) |
| Signals | 事件驱动触发器/发布-订阅(替代旧版Event Listeners)。 |
| Job Scheduling | 周期性/定时函数执行(替代旧版Cron)。 |
| Zoho MCP | AI工具集成——允许AI代理通过 |
| ZCQL | 用于Data Store的类SQL查询语言。支持 |
| ZAID | Zoho账户ID——内置的身份认证层。与Web SDK配合用于用户认证流程。 |
Skill Routing Table
技能路由表
| When the query is about… | Load this skill |
|---|---|
| Which service to use, architecture decisions, DC restrictions | |
Project setup, | |
Functions — types, signatures, | |
| AppSail — backend PaaS, Docker, managed runtimes, PORT variable | |
Slate — frontend hosting, frameworks, | |
| Data Store — CRUD, ZCQL queries, permissions, column types | |
| Stratus — object storage, upload/download, signed URLs, multipart | |
| NoSQL — document storage, flexible schema, collections | |
| Authentication — user login/signup, ZAID, Web SDK auth, Connections/OAuth | |
| Cache — in-memory key-value, TTL, segment operations | |
| Pricing — free tier, pay-as-you-go, GB-seconds, cost estimation | |
| SDKs — Node.js, Web, Python, Java, Android, iOS, Flutter | |
| Zia Services, QuickML — OCR, ML predictions, AutoML | |
| Signals — event-driven triggers, publish/subscribe, event listeners, custom publisher, webhook target, dispatch policy | |
| SmartBrowz — headless browser, Puppeteer, Playwright, Selenium, Browser Logic, PDF generation, screenshot, Browser Grid, Dataverse | |
| Job Scheduling — cron/scheduled execution, recurring jobs | |
Zoho MCP — MCP setup, | |
| Skill gave wrong or outdated guidance — user reporting an error | load |
| 当查询涉及… | 加载此技能 |
|---|---|
| 服务选择、架构决策、数据中心限制 | |
项目设置、 | |
Functions——类型、签名、 | |
| AppSail——后端PaaS、Docker、托管运行时、PORT变量 | |
Slate——前端托管、框架、 | |
| Data Store——CRUD、ZCQL查询、权限、列类型 | |
| Stratus——对象存储、上传/下载、签名URL、分块上传 | |
| NoSQL——文档存储、灵活架构、集合 | |
| Authentication——用户登录/注册、ZAID、Web SDK认证、Connections/OAuth | |
| Cache——内存键值存储、TTL、段操作 | |
| 定价——免费层级、按需付费、GB-秒、成本估算 | |
| SDKs——Node.js、Web、Python、Java、Android、iOS、Flutter | |
| Zia Services、QuickML——OCR、ML预测、AutoML | |
| Signals——事件驱动触发器、发布/订阅、事件监听器、自定义发布者、Webhook目标、调度策略 | |
| SmartBrowz——无头浏览器、Puppeteer、Playwright、Selenium、Browser Logic、PDF生成、截图、Browser Grid、Dataverse | |
| Job Scheduling——定时/周期性执行、 recurring jobs | |
Zoho MCP——MCP设置、 | |
| 技能提供了错误或过时的指导——用户报告错误 | 加载 |
⛔ Never Use (deprecated + regionally restricted)
⛔ 切勿使用(已弃用+地域限制)
Deprecated services — do not use for new projects
已弃用服务——新项目请勿使用
Users who signed up after August 27, 2025 cannot access these components at all.
| Do not use | Use this instead |
|---|---|
| Stratus (object storage) | |
| Signals (event-driven architecture) | |
| Job Scheduling (scheduled execution) |
2025年8月27日之后注册的用户完全无法访问这些组件。
| 请勿使用 | 替代方案 |
|---|---|
| Stratus(对象存储) | |
| Signals(事件驱动架构) | |
| Job Scheduling(定时执行) |
Regionally restricted services — check DC before recommending
地域限制服务——推荐前请检查数据中心
These services are unavailable in the listed data centers. Building with them for users in those regions results in runtime failures.
| Service | Not available in |
|---|---|
| Circuits | EU, AU, IN, JP, SA, CA |
| Integration Functions | EU, AU, IN, JP, SA, CA |
| Push Notifications | EU, AU, IN, CA |
| AutoML (QuickML) | EU, AU, IN, JP, SA, CA |
| Identity Scanner (Zia) | Available in IN DC only (not EU, AU, US, JP, SA, CA) |
| Mobile Device Management | EU, AU, IN, JP, SA, CA |
How to check: Ask the user which data center their Catalyst account uses, or look for the DC code in their console URL (e.g., → IN, → EU).
catalyst.zoho.incatalyst.zoho.eu这些服务在指定数据中心不可用。为这些区域的用户构建相关服务会导致运行时失败。
| 服务 | 不可用区域 |
|---|---|
| Circuits | 欧盟、澳大利亚、印度、日本、沙特、加拿大 |
| Integration Functions | 欧盟、澳大利亚、印度、日本、沙特、加拿大 |
| Push Notifications | 欧盟、澳大利亚、印度、加拿大 |
| AutoML (QuickML) | 欧盟、澳大利亚、印度、日本、沙特、加拿大 |
| Identity Scanner (Zia) | 仅在印度数据中心可用(欧盟、澳大利亚、美国、日本、沙特、加拿大不可用) |
| Mobile Device Management | 欧盟、澳大利亚、印度、日本、沙特、加拿大 |
检查方式: 询问用户其Catalyst账户使用的数据中心,或从控制台URL中查找数据中心代码(例如 → 印度, → 欧盟)。
catalyst.zoho.incatalyst.zoho.euNon-Interactive Mode
非交互模式
CLI v1.27.0+ supports non-interactive (NI) mode — the CLI takes all answers from flags and sensible defaults instead of prompting.
Enable: Add (or ) to any supported command, or set in the environment.
-ni--non-interactiveZCATALYST_NON_INTERACTIVE=1Disabled commands: → use ; → use
functions:setupfunctions:add -nifunctions:shellfunctions:executeBlocked options: on and is not allowed in NI mode.
--remotefunctions:deleteclient:deleteTip: shows the NI-specific help for that command.
catalyst <command> -ni --helpCLI v1.27.0+支持非交互(NI)模式——CLI从标志参数和合理默认值获取所有答案,无需提示。
启用方式: 在任何支持的命令后添加(或),或在环境变量中设置。
-ni--non-interactiveZCATALYST_NON_INTERACTIVE=1禁用命令: → 使用; → 使用
functions:setupfunctions:add -nifunctions:shellfunctions:execute禁止选项: 在NI模式下,和命令不允许使用选项。
functions:deleteclient:delete--remote提示: 会显示该命令的NI模式专属帮助信息。
catalyst <command> -ni --help.catalystrc
— Reading org and project context
.catalystrc.catalystrc
— 读取组织和项目上下文
.catalystrcAfter , a file is written to the project root. Read it at the start of any session to identify the active project without asking the user.
catalyst init.catalystrcActual format:
json
{
"defaults": { "project": 1, "env": 1 },
"actives": { "project": 1, "env": 1 },
"projects": [
{
"idx": 1,
"id": "<projectId>",
"name": "<projectName>",
"domain": { "id": "<domainId>", "name": "<projectName>-<orgId>.development" },
"env": [{ "idx": 1, "id": "<orgId>", "name": "Development", "type": 3 }]
}
]
}How to read the active project ID and org ID:
- Read → this is the active project's
defaults.projectvalueidx - Find the entry in where
projectsmatches → get itsidx→ this is the project ID to use withid-p - From the same entry, read → this is the org ID to use with
env[0].id--org
运行后,项目根目录会生成文件。在任何会话开始时读取该文件,无需询问用户即可识别当前活跃项目。
catalyst init.catalystrc实际格式:
json
{
"defaults": { "project": 1, "env": 1 },
"actives": { "project": 1, "env": 1 },
"projects": [
{
"idx": 1,
"id": "<projectId>",
"name": "<projectName>",
"domain": { "id": "<domainId>", "name": "<projectName>-<orgId>.development" },
"env": [{ "idx": 1, "id": "<orgId>", "name": "Development", "type": 3 }]
}
]
}如何读取活跃项目ID和组织ID:
- 读取→ 这是活跃项目的
defaults.project值idx - 在中找到
projects匹配的条目 → 获取其idx→ 这是用于id参数的项目ID-p - 从同一条目中读取→ 这是用于
env[0].id参数的组织ID--org
Quick-reference: Top gotchas
速查:常见陷阱
- TERMINOLOGY: always say "organization" or "org", NEVER "portal" — the CLI prompt says "Select a default Catalyst portal" but this is the CLI's legacy wording; the correct term is organization
catalyst init - /
.catalystrcmissing → runcatalyst.json(get IDs from MCP); never create these files manually, never use interactivecatalyst init --org <orgId> -p <projectId> -nicatalyst init - All Catalyst CLI commands default to non-interactive (CLI v1.27.0+) — always use with
-ni,--org,-p,--name,--typeflags; never fall back to interactive/arrow-key menus in agent context--stack - non-interactive —
catalyst functions:addcatalyst functions:add --name <n> --type <type> --stack <stack> -ni - ZCQL result rows are wrapped → to unwrap
rows.map(r => r.TableName) - ZCQL max 300 rows/query → use for pagination
LIMIT offset, count - ZAID differs between Dev and Prod → #1 auth issue in production
- AppSail PORT → (not
process.env.X_ZOHO_CATALYST_LISTEN_PORT)PORT - Cache values are strings only → serialize/deserialize JSON yourself
- Stratus bucket names are globally unique → use
{app-name}-{project-id-prefix} - Slate → function calls are cross-domain → use full URL + + CORS whitelist
generateAuthToken() - DataStore App User permissions OFF by default → enable in Console → Table → Scopes & Permissions
- format →
catalyst-config.json+deploymentkeys only; NOTexecutionorfunctionentry_point - Advanced I/O node20 → raw
req; usehttp.IncomingMessagehelper, notsendJson(res, ...)res.json() - requires a redirect URL →
signOut()catalyst.auth.signOut(redirectURL)
- 术语:始终使用“organization”或“org”,切勿使用“portal” — CLI提示中会显示“Select a default Catalyst portal”,但这是CLI的旧版表述;正确术语是organization
catalyst init - /
.catalystrc缺失 → 运行catalyst.json(从MCP获取ID);切勿手动创建这些文件,切勿使用交互式catalyst init --org <orgId> -p <projectId> -nicatalyst init - 所有Catalyst CLI命令默认支持非交互模式(CLI v1.27.0+)—— 始终配合、
--org、-p、--name、--type标志使用--stack;在代理环境中切勿退回到交互式/箭头键菜单-ni - 非交互模式 →
catalyst functions:addcatalyst functions:add --name <n> --type <type> --stack <stack> -ni - ZCQL结果行被包裹 → 使用来解包
rows.map(r => r.TableName) - ZCQL单次查询最多300行 → 使用进行分页
LIMIT offset, count - ZAID在开发环境和生产环境中不同 → 生产环境中排名第一的认证问题
- AppSail PORT → (而非
process.env.X_ZOHO_CATALYST_LISTEN_PORT)PORT - Cache值仅支持字符串 → 需自行序列化/反序列化JSON
- Stratus存储桶名称全局唯一 → 使用格式
{app-name}-{project-id-prefix} - Slate → 函数调用存在跨域问题 → 使用完整URL + + CORS白名单
generateAuthToken() - DataStore App User权限默认关闭 → 在控制台→表→范围与权限中启用
- 格式 → 仅包含
catalyst-config.json和deployment键;不包含execution或functionentry_point - Advanced I/O node20 → 原始
req;使用http.IncomingMessage辅助函数,而非sendJson(res, ...)res.json() - 需要重定向URL →
signOut()catalyst.auth.signOut(redirectURL)
Documentation
文档
- Main docs: https://docs.catalyst.zoho.com/en/
- Node.js SDK: https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/overview/
- Web SDK: https://docs.catalyst.zoho.com/en/sdk/web/v4/overview/
- CLI reference: https://docs.catalyst.zoho.com/en/cli/v1/cli-command-reference/
- Pricing: https://catalyst.zoho.com/pricing.html