@blockscout/api-types

中文文档
12.0.4发布于 2026/11/02LicenseRef-BlockscoutTypeScriptES Module零依赖近 30 天下载 2311

由 Blockscout OpenAPI 规格( 公共、 私有和特定链) 生成的脚本类型

中文使用文档
文档目录8 节
  1. 先决条件
  2. 生成
  3. 使用量
  4. 简称( 建议)
  5. 合并计划
  6. 单相命名空间
  7. 链型
  8. 组合图

@ blockscout/ api 类型

通过 Blockscout OpenAPI 规格生成的脚本类型 openapi 类型标记数字 :

  • 缩写 (单位:千美元)schemas, (中文(简体) ), operations, (中文(简体) ), paths)——推荐的入门点;平坦地查看被合并的光谱,横跨每一个链条类型. 见 使用量
  • 合并 – 从下方所有规格的每个计划,路径和操作组合到一个命名空间(对于在运行时处理任何链式类型的通用前端);参见 合并计划
  • 公开Api ——默认公开 API(BlockScoutWeb.Specs.Public,没有 CHAIN_TYPE(中文(简体) )
  • 隐私Api - 账户 API(BlockScoutWeb.Specs.Private(中文(简体) )
  • 链命名空间 特定链式公共API(CHAIN_TYPE 设置; 匹配 生成- swagger.yml(中文(简体) )

建造文物(openapi/, (中文(简体) ), dist/) 被给定; 运行 npm run build 复制后.

先决条件

  • Elixir / 混音 blockscout repo 根 (编译) block_scout_web 应用)
  • 节点.js 18+(用于 openapi-typescript(中文(简体) )

生成

从此目录 :

npm install
npm run build

build 运行 :

  1. generate:spec —— 说 mix openapi.spec.yaml 用于公共、私人和每一链型
  2. generate:types —— 说 openapi-typescript 将匹配的文件写入到 dist/

使用量

3个顶级出口将最常见的视线固定在合并的光谱上,所以你从来没有通过索引 components["schemas"] 或者说 ["responses"][200]["content"]["application/json"] 手边。 优先供日常使用:

import type { schemas, operations, paths } from "@blockscout/api-types";

// `schemas` — a model by name (merged across all chains; chain-specific props optional).
type Transaction = schemas["Transaction"];

// `operations` — keyed by short operationId, with `json` / `params` / `requestBody`.
type TxJson = operations["TransactionController.transaction"]["json"];
type TxParams = operations["TransactionController.transaction"]["params"];
type EthCallBody = operations["EthController.eth_call"]["requestBody"];

// `paths` — the 200 `application/json` body keyed by path, then HTTP method.
type Blocks = paths["/api/v2/blocks"]["get"];

注释:

  • 操作ID被缩短 ——控制器模块前缀(BlockScoutWeb.API.V2., (中文(简体) ), BlockScoutWeb.Account.API.V2., (中文(简体) ), BlockScoutWeb.API.Legacy.)被剥去,所以 BlockScoutWeb.API.V2.TransactionController.transaction 变成 TransactionController.transaction。 。 。 .
  • json 这是200 application/json 反应机构; params 是请求 query编号 :path 参数; requestBody 这是 application/json 请求机构(never 没有终点.
  • paths 只披露 HTTP 方法, 即实际定义的终点; 缺少方法, 而不是 never。 。 。 .
  • 三者皆从 merged,所以它们已经跨越了每一个链的类型。 到达 merged/ 在下方的每个链命名空间, 只有当您需要的东西不覆盖时( 非200 响应, 响应头, 原始路径项目) .

合并计划

上面的简称是建立在 合并 命名空间——每个从所有光谱组合出来的计划,路径,和操作,因此一个通用前端可以在运行时间从一个单一类型宇宙处理任何链型. 导入 merged 当您需要检查时, 短手不暴露( 非200 个响应、 响应头、 原始路径项) :

import type { merged } from "@blockscout/api-types";

// Includes the public base plus `arbitrum?`, `zksync?`, blob fields, etc. — all optional.
type Transaction = merged.components["schemas"]["Transaction"];

// Paths/operations are merged too, referencing the merged models:
type Tx = merged.paths["/api/v2/transactions/{transaction_hash_param}"]["get"]["responses"][200];

单相命名空间

类型还按包项中的 spec 名称分组:

import type { publicApi, privateApi, arbitrum, optimismCelo } from "@blockscout/api-types";

type AddressResponse = publicApi.components["schemas"]["AddressResponse"];

type GetAddressParams =
  publicApi.paths["/api/v2/addresses/{address_hash_param}"]["get"]["parameters"];

type ArbitrumPath = arbitrum.paths[keyof arbitrum.paths];

publicApi 编号 : privateApi 避免 TypeScript 保留单词(public, (中文(简体) ), private) (中文(简体) ). optimism-celo 导出为 optimismCelo (标识符中的连字符无效)

链型

与 .github/workflows/generate-swagger.yml 通过 scripts/chain-types.sh数字 :

arbitrum, (中文(简体) ), arc, (中文(简体) ), blackfort, (中文(简体) ), ethereum, (中文(简体) ), filecoin, (中文(简体) ), neon, (中文(简体) ), optimism, (中文(简体) ), optimism-celo, (中文(简体) ), rsk, (中文(简体) ), scroll, (中文(简体) ), shibarium, (中文(简体) ), stability, (中文(简体) ), suave, (中文(简体) ), zetachain, (中文(简体) ), zilliqa, (中文(简体) ), zksync

当 CI 添加或删除链式时, 更新 scripts/chain-types.sh 财务报告和审定财务报表 index.ts。 。 。 .

组合图

scripts/merge-specs.mjs 将所有生成的光谱( 公共 ) —— 私人 —— 链条按字母顺序合并到 openapi/merged.yaml,用于编译 dist/merged.schema.ts (以 merged) (中文(简体) ).

合并语义 :

  • 示马斯 —— 说 properties 工会; required 是定义 schema 的相交点, 因此链状特性是可选的 。 在一个光谱中定义的子对象保留其 required (例如:. arbitrum.gas_used_for_l1 需要保留时 arbitrum 页:1. enum 数值结合(例如). transaction_types 收益链专用条目).
  • 路径操作( O) ——跨个相通;仅链式终点(如. /v2/arbitrum/batches页:1 共享业务已深入开展 parameters 与(在名称中)及其 schemas结合(如enum查询参数获得链特有值). 所有操作 $ref点为 components.schemas,因此它们自动引用合并的模型.
  • 不可调和的图案形状( 如 ethereum 重新定义) Status 作为信标存储器 anyOf 工会,并报告为对工会的警告.

版本与发布记录

@blockscout/api-types 共发布 31 个版本,首次发布于 2026/06/05;过去 12 个月发布了 31 个版本。

版本发布日期距今
12.0.4latest2026/11/025 天前
0.0.1-beta.e1f332fbeta2026/10/318 天前
12.0.32026/10/2118 天前
12.0.22026/10/1622 天前
12.0.12026/10/1227 天前
12.0.02026/10/061 个月前

关于 @blockscout/api-types 的常见问题

@blockscout/api-types 是什么?

由 Blockscout OpenAPI 规格( 公共、 私有和特定链) 生成的脚本类型

如何安装 @blockscout/api-types?

在项目目录运行 npm install @blockscout/api-types,或使用 pnpm add / yarn add / bun add。

@blockscout/api-types 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@blockscout/api-types 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@blockscout/api-types 可以商用吗?

@blockscout/api-types 使用 LicenseRef-Blockscout 许可。声明的许可为 LicenseRef-Blockscout,请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

@blockscout/api-types 的下载量有多少?

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

@blockscout/api-types 还在维护吗?

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