mcpField
S
stigg-api

stigg-api

github.com/stiggio开发2119 次安装1 周前更新
代码仓库

关于 stigg-api

为开发者提供 Stigg API 接入指导,帮助选择 SDK、REST 或 GraphQL,并正确处理密钥、认证和常见请求细节。内容侧重安全密钥管理与各运行环境的接入选择。

主要功能

  1. 01按运行环境选择 API 传输方式
  2. 02区分服务端与客户端密钥
  3. 03配置密钥轮换与权限范围
  4. 04说明 REST 分页、幂等和错误处理
  5. 05提供认证故障排查建议

适用场景

  1. 01为后端服务选择 Stigg SDK 或 API
  2. 02为前端集成配置只读密钥
  3. 03排查 API 的 401 或 403 错误

MCP 相关

该技能建议在编写接入代码前查询 Stigg 文档,也将 Stigg MCP 列为 AI 辅助开发的可选接入方式。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/stiggio/skills --skill stigg-api

安装后在 Claude Code 中输入/stigg-api确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
auth.md
rate-limits.md
sdk-selection.md

详细介绍

Stigg API — 身份验证、传输方式、SDK 选择

本技能解答两个问题:应调用哪个 Stigg 接口,以及如何正确进行身份验证。目录、权益和订阅操作属于各自的技能(请参阅总览 stigg 技能中的路由说明)。

开始之前

根据总览 stigg 技能的说明:先搜索。Stigg 的 API 正在积极开发中(撰写本文时,REST API 处于公开测试阶段)。生成代码前,请使用 Mintlify Stigg 文档 MCP / llms.txt 确认端点形式和 SDK 初始化签名。

需要了解的三种 API 密钥

每个环境都会配置两个默认密钥;Scale 计划客户还可以创建限定范围的密钥。

类型前缀存放位置默认范围可自定义范围?
完全访问(服务端)server-仅限后端所有当前和未来权限否(不可变)
可发布(客户端)client-浏览器、移动端只读,范围有限否(不可变)
限定范围(服务端)server-仅限后端自行选择可以,按资源设置

**查找位置:**Stigg 应用 → Integrations → API keys(每个环境都有各自的一组密钥)。

完全访问密钥

每个环境的默认密钥。在该环境中不受限制,并且随着 Stigg 添加新功能,会自动继承新权限。每个环境只能有一个完全访问密钥;用户无法创建更多密钥。集成初期可将其用作默认后端密钥;随着集成逐步成熟,再切换到范围更窄的限定范围密钥。

可发布密钥

专为前端 / 移动端 SDK 设计。该密钥为只读且不可变,无法扩大其范围。根据设计,可安全地用于客户端代码;但在生产环境中,请启用客户端安全加固(HMAC SHA256 签名的客户令牌——在可发布密钥的详情面板中配置)。

切勿将完全访问密钥或限定范围的服务端密钥放入浏览器、公开仓库或前端包中。请在服务端使用环境变量。

限定范围密钥(Scale 计划)

由用户创建、具有明确受限权限的服务端密钥——这是最小权限原则的实际应用。请为每个服务 / AI 客户端 / 用例创建一个密钥,缩小密钥泄露造成的影响范围。限定范围密钥不会继承平台未来新增的功能;必须手动授予对新资源的权限。

自定义权限范围矩阵(创建限定范围密钥时的预设选项):

  • 完全访问 — 在整个环境中拥有所有读写权限。
  • 只读 — 可读取所有资源;不可写入。
  • 客户写入 — 管理客户数据。
  • 订阅写入 — 创建 / 更新订阅。
  • 优惠券写入 — 管理折扣 / 优惠券逻辑。
  • API 密钥读取和写入 — 以编程方式管理 API 密钥。
  • 事件队列读取 — 获取临时 SQS 事件队列凭证(只读;此资源不支持写入)。

对某项资源选择写入权限时,会自动授予该资源的读取权限。

密钥轮换

前往 Integrations → API keys,打开密钥的上下文菜单(⋮)→ Rotate key。选择宽限期(Now / 1h / 24h / 3d / 7d)。旧密钥会在宽限期结束前保持有效——其设计目的在于实现零停机滚动部署。需要更多时间?请在旧密钥过期前Change grace period。

撤销会立即生效且不可撤销。请先将所有服务切换到新密钥。

完整参考: references/auth.md。

选择合适的传输方式

接入方式适用场景
Node SDK (@stigg/node-server-sdk)Node / TypeScript 上的生产热路径。后端的默认选择。 其他后端运行时(Python、Go、Java、Ruby、.NET、Sidecar)也提供 SDK — 详见 docs.stigg.io;模式类似,但具体字段名可能有所不同。
前端 SDK (@stigg/react-sdk for React / Next.js; @stigg/js-client-sdk for vanilla JS)在浏览器中渲染付费墙、客户门户或检查权益。
REST API (https://api.stigg.io/api/v1)你的语言没有 SDK;轻量级服务端代理;需要明确控制。
GraphQL API (https://api.stigg.io/graphql)已有 GraphQL 集成,或 REST API 尚未提供的查询。
Stigg MCP 服务 (https://mcp.stigg.io)AI 辅助开发。详见 stigg-mcp。
Stigg CLI(Go 二进制文件 — brew install stiggio/tools/stigg;仓库:https://github.com/stiggio/stigg-cli)脚本、CI/CD。仅选择启用 — 默认与选择启用方式详见 stigg-mcp/references/cli-vs-mcp.md。

包含边缘情况的决策流程图:详见 stigg/references/decision-tree.md。SDK 选择(Node + React 为规范方式,非 Node 运行时使用原始 HTTP):references/sdk-selection.md。

REST API — 快速参考

  • 基础 URL: https://api.stigg.io/api/v1
  • 身份验证标头: X-API-KEY: <YOUR_SERVER_KEY>
  • Content-Type: 请求体使用 application/json。
  • 幂等性: 为 POST 请求添加 Idempotency-Key: <unique-id>(缓存 24 小时)。使用同一键重复调用会返回缓存的响应。
  • 分页: 基于游标。查询参数:limit(默认 20,最大 100)、starting_after、ending_before。响应包含 data[]、has_more、next_cursor。
  • 筛选: 使用特定资源的查询参数。枚举值筛选器须使用底层枚举符号(大写),大多数列表端点支持用逗号分隔多个值进行筛选。示例:[email protected]、?status=ACTIVE,IN_TRIAL、?pricingType=PAID。日期字段支持范围运算符(?createdAt[gte]=2026-01-01T00:00:00Z)。
  • 错误: 使用标准 HTTP 状态码和结构化响应体。
# Authenticated GET
curl -X GET "https://api.stigg.io/api/v1/customers" \
  -H "X-API-KEY: $STIGG_SERVER_API_KEY" \
  -H "Content-Type: application/json"

# Idempotent POST
curl -X POST "https://api.stigg.io/api/v1/customers" \
  -H "X-API-KEY: $STIGG_SERVER_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: bootstrap-customer-acme-001" \
  -d '{ "id": "customer-123", "name": "Acme Corp", "email": "[email protected]" }'
货币金额 — 使用完整金额,而非美分

对 Stripe 用户尤为重要: Stigg 以完整美元金额 / 货币单位表示货币金额,而非最小货币单位。49 表示 $49.00,而非 $0.49。3990 表示 $3,990,而非 $39.90。

Stripe 的惯例正好相反(金额以最小货币单位表示 — USD 使用美分)。向 Stigg 传值时不要乘以 100,读回值时也不要除以 100。这适用于套餐价格、收费金额、信用额度授予中的 cost_basis,以及发票预览中的 subtotal / total / discount / tax 字段 — 所有货币字段均如此。

错误语义
状态码含义
200成功 — 响应体包含资源
201已创建
400错误请求 — 参数 / 请求体无效
401未通过身份验证 — 缺少或无效的 X-API-KEY
403禁止访问 — 已通过身份验证,但密钥缺少所需权限范围
404未找到
409冲突 — 例如,订阅已存在
429请求过多 — 详见速率限制

建议提前了解的两个 REST 注意事项(请在页面上重新确认,以防内容变更):

  • GET /api/v1/subscriptions 不会为每个项目返回 subscriptionEntitlements — 因为在大规模场景下开销过高。使用 GET /api/v1/subscriptions/{id} 获取详细权益。
  • 单个订阅上的 subscriptionEntitlements 仅包含覆盖项,不包含从套餐继承的完整权益集。要获取套餐的完整权益,请调用 GET /api/v1/plans/{planId}/entitlements。

GraphQL API — 快速参考

  • 端点: https://api.stigg.io/graphql
  • 身份验证标头: X-API-Key: <YOUR_SERVER_KEY>
  • 使用场景: 已有集成或 REST 尚未提供的查询可继续使用 GraphQL。新工作优先使用 REST。
curl -X POST https://api.stigg.io/graphql \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $STIGG_SERVER_API_KEY" \
  -d '{"query":"{ customers { edges { node { customerId name } } } }"}'

SDK — 初始化代码片段

请始终选择与运行时匹配的 SDK。完整矩阵:references/sdk-selection.md。

后端(Node)— @stigg/node-server-sdk:

import Stigg from '@stigg/node-server-sdk';

const stigg = await Stigg.initialize({
  apiKey: process.env.STIGG_SERVER_API_KEY!,
});

前端(React)— @stigg/react-sdk:

import { StiggProvider } from '@stigg/react-sdk';

<StiggProvider apiKey="<STIGG_CLIENT_API_KEY>" customerId="<LOGGED_IN_CUSTOMER_ID>">
  {children}
</StiggProvider>

原生 JavaScript 前端使用 @stigg/js-client-sdk(同步调用 Stigg.initialize(...),然后执行 await client.waitForInitialization())。其他运行时(Python、Go、Java、Ruby、.NET、Sidecar、Vue、Embed)——简要说明及 docs.stigg.io 的外链请参阅 references/sdk-selection.md。自动生成的基于 REST 的 TypeScript SDK(@stigg/typescript)目前仍处于 Beta 阶段;在其达到 GA 之前,请继续使用 @stigg/node-server-sdk。

速率限制

Stigg 按环境和端点实施速率限制。生产环境的热路径必须在遇到 429 时进行退避处理。当前限制和“Using Stigg at Scale”指南位于 docs.stigg.io — references/rate-limits.md 总结了操作原则。

身份验证失败 — 快速诊断

症状可能原因修复方法
每个请求都返回 401 Unauthenticated请求头名称拼写错误(使用了 Authorization 而非 X-API-KEY)请准确使用 X-API-KEY。
只有 POST 请求返回 401缺少或错误的 Content-Type 导致网关在身份验证前拒绝请求设置 Content-Type: application/json。
轮换密钥后返回 401旧密钥已超过宽限期将服务切换到新密钥。
403 Forbidden限定范围的密钥没有访问该资源的权限授予缺失的权限,或使用权限范围更广的密钥。
前端 SDK 显示了其他客户的数据缺少客户端加固措施为可发布密钥启用 HMAC 签名的客户令牌。
生产环境中的“Stigg”调用访问了沙箱环境配置中的密钥错误密钥绑定到特定环境 — 请核实并替换。

不要在以下情况下使用此技能

  • 构建付费墙 / 客户门户 UI — 请使用 stigg-widgets。
  • 建模功能 / 计划 / 附加项 — 请使用 stigg-pricing-modeling。
  • 决定采用事件式还是度量式用量报告 — 请使用 stigg-entitlements。
  • 首次安装 MCP — 请使用 stigg-mcp。

常见错误

错误修复方法
在前端应用中放置 server- 密钥请使用 client- 可发布密钥。
在所有地方硬编码完全访问权限密钥为每个服务创建限定范围的密钥。
客户 / 订阅 POST 请求缺少 Idempotency-Key设置该请求头 — Stigg 会缓存响应 24 小时,因此重试是安全的。
将 subscriptionEntitlements 视为完整集合它只包含覆盖项。请使用计划端点获取完整列表。
调用 GET /subscriptions 并期待返回权益按设计,该端点不会返回权益。请逐行使用 GET /subscriptions/{id}。
在新代码中混用 REST 和 GraphQL选择一种(默认使用 REST)。除非有充分理由,否则不要构建混合方案。

评论

支持 Markdown