API 接口

平台与连接器的 HTTP 接口、鉴权方式、请求响应结构与错误码,供系统对接使用。

证据与接口 8874 字 ·约 20 分钟读完 ·更新于 2026-10-28

浏览器业务接口使用同源 JSON,前缀 /api。错误为 {"error":{"code":"...","message":"..."}}。请求体最多 2 MiB,有结构化字段的业务 JSON 拒绝未知字段。OIDC回调和SCIM机器接口使用下面单列的协议;外部互联不是这些管理 API 的别名。以下保留历史版本分节,实际运行版本须与候选源码分别核对。

企业身份接入补充

方法与路径认证与支持范围
POST /oidc/start显式启用后发起固定IdP登录,state/nonce/PKCE
GET /oidc/callback校验一次性回调、签名及精确主体映射,创建本地会话
POST /oidc/backchannel-logout签名logout_token;撤销匹配的OIDC会话,不等同停用本地人员
GET /scim/v2/ServiceProviderConfig独立配置的到期Bearer;说明受限机器接口能力
GET /scim/v2/Users、/scim/v2/Users/{id}单企业、明确OIDC映射的既有人;有界分页与精确过滤,不按邮箱合并
PATCH /scim/v2/Users/{id}仅一个replace active=false,可带If-Match;事务性停用和撤销全部本地会话/挑战,保护最后管理员

SCIM默认关闭,使用application/scim+json请求/响应及SCIM错误对象;仅接受专用机器Bearer,不以浏览器Cookie或CSRF令牌代替认证。最大4KiB单操作PATCH、每页最多100人,不支持开户、角色/组同步、Bulk、删除或active=true。服务不签发OAuth凭据,也未宣称完整SCIM实现。配置、停用副作用、重试和真实IdP条件见SCIM人员生命周期实施;原OIDC边界见产品操作手册。

浏览器业务接口

方法与路径权限 / 内容
GET /healthPostgreSQL 就绪状态
POST /loginemail,password;每进程按来源 IP 限制登录尝试
GET /me登录身份与 CSRF token
POST /logout删除会话
POST /me/keypublicKey;只允许首次登记
GET /workspace所属空间、本机构连接器、允许发现的机构
POST /parties仅运营账号;name,email,password
POST /spacesname,description
POST /spaces/{id}/members仅空间运营机构;partyId
POST /connectorsname,publicKey
POST /connectors/{id}/revoke仅所属机构,撤销服务请求权限
GET/POST /products列表 / 创建(必须提供 datasetVersionId、spaceId、name、description)
POST /products/{id}/status所属机构;status=published/unpublished
GET/POST /contracts合约双方列表 / productId,name,policy 创建
POST /contracts/{id}/revise待签合约双方;policy;旧签名不沿用
POST /contracts/{id}/challenge返回一次性签名挑战,2 分钟有效
POST /contracts/{id}/signchallengeId,signature;Ed25519 签署挑战原文
POST /contracts/{id}/terminate合约任一方,停止任务并撤销后续访问
POST /contracts/{id}/jobs使用方;operation,field?,groupBy?;必须提供 Idempotency-Key
GET /jobs合约双方任务;使用方审核前无 result
POST /jobs/{id}/cancel双方取消排队/运行任务
POST /jobs/{id}/review提供方且jobs.review;approve 布尔值
POST /jobs/{id}/export使用方;合约允许导出+提供方准许+仍有效
GET /evidence?scope=...自身 party:ID 或有权访问的 contract:ID
GET /capabilities认证后读取同版发布能力/任务清单及本企业链状态摘要;无节点凭据

| POST /interop/{operation} | 501,外部协议未配置 |

开发中的签名密钥轮换接口见密钥轮换开发记录。它们尚未部署到已验收v0.5.1,不应依据开发源码推断当前运行实例已启用遗失恢复。

浏览器会话使用 HttpOnly; SameSite=Strict Cookie;正式 HTTPS 配置还设置 Secure。所有登录后 POST 要求 X-CSRF-Token,并核验 Origin 白名单。反向代理不能把任意 X-Forwarded-* 值当作认证依据。

企业连接器协议

所有连接器接口均使用 POST,不接受浏览器 Cookie 作为服务认证:

  • /agent/claim 返回一个任务或 null。
  • /agent/jobs/{id}/heartbeat:leaseToken,续租至最多 30 秒或合约到期。
  • /agent/jobs/{id}/complete:leaseToken,result,receipt,signature;后三项为结果 JSON 原文、回执 JSON 原文、回执签名。
  • /agent/jobs/{id}/fail:leaseToken;仅记录固定失败原因,不回传可能含私密原始内容的错误。

请求头 X-Connector-ID、X-Timestamp(Unix 毫秒)、X-Nonce、X-Signature。Ed25519 签名载荷为以下字符串,UTF-8 编码,行尾不再补换行:

datanous-connector-v1
POST
完整RequestURI(包含查询参数)
毫秒时间戳
随机数
请求体SHA256十六进制

时间偏差最多 30 秒,随机数存储在 PostgreSQL 中防重放;撤销的连接器即使签名正确也不能访问。非回环平台必须 HTTPS,客户端不跟随重定向。

回执绑定合约摘要、任务编号、租约令牌、结果摘要、输入文件摘要、输入条数、完成时间和固定执行器版本。成功提交可原样重试,不重复扣次;网络不明任务不会自动重新运行。连接器请求签名和回执签名证明登记密钥持有者提交了内容,不构成硬件远程证明。

额度与状态

PostgreSQL 行锁串行化同一合约的签署、修改、终止和使用计数;幂等键使用事务 advisory lock 和唯一约束。使用账本先 reserved,计算成功 committed,失败/取消 released。审核拒绝不退还已完成计算的次数。多次清理不会重复退款。

租约超时任务标记失败,必须由用户明确发起新的请求。合约终止同时 fence 运行任务,并在后续查看、审核、导出时复查授权。提供方可保留查看本方已计算结果;使用方权限随合约终止撤销。

企业内部资产 API

以下浏览器接口沿用 Cookie、CSRF 与 Origin 检查,数据严格按本企业隔离。JSON未知字段会被拒绝,不能把密码/DSN塞进配置登记。

方法与路径请求与行为
GET /assets/catalog返回 sources、assets、datasets、pipelines、tasks;无原始数据行或服务租约令牌
POST /sourcesname,connectorId,kind,configRef,classification,description;登记引用
POST /sources/{id}/scan提交企业侧资源发现
POST /assets/{id}/snapshot按固定资产结构生成企业侧数据集快照
POST /pipelinesname,inputs=[数据集版本ID],plan={steps,rules};固定输入和规则,创建前校验字段
POST /pipelines/{id}/run使用固定输入版本运行;产生新输出版本
POST /asset-tasks/{id}/cancel取消排队/运行中的内部任务

POST /products 自v0.2要求 datasetVersionId;字段、连接器、分类和源引用从已验收版本派生,不能跨企业绑定、发布隔离版本或包含候选敏感字段的版本。已有v0.1产品保留执行兼容。

企业连接器通过相同签名认证访问:POST /agent/assets/claim、POST /agent/asset-tasks/{id}/heartbeat、/complete、/fail。续租/失败使用leaseToken;完成使用leaseToken,output,proof,signature。proof绑定工作和输出摘要、任务ID、租约、时间,原样重试不重复写版本。发现/快照/加工回执属于本地企业配置,不是外部登记或第三方证明。

v0.3 企业治理与角色

每个登录/GET /me 响应的 actor 包含只读 permissions 数组,按当前人员角色派生。服务端再次执行权限和企业/对象范围检查,不能通过修改前端字段获得权限。operator、admin、steward、reviewer、consumer、auditor 为固定角色,具体能力可读 /roles。平台运营权限不自动授予其他企业私有数据访问。

方法与路径权限和内容
GET /roles已登录;固定角色、名称、权限列表
GET /usersusers.manage;仅本企业,不返回密码哈希或私钥
POST /usersusers.manage;name,email,password,role;不能授予operator
POST /users/{id}/accessusers.manage;role,disabled;不能跨企业、自锁或移除最后管理员;实际变更撤销会话/未用签署挑战
GET /product-reviews产品准备/审核或审计权限;仅本企业审核历史、固定版本、创建人/申请人、字段和说明
POST /products/{id}/reviewsproducts.write;产品状态draft/unpublished/rejected;固定当前版本,进入pending_review
POST /product-reviews/{id}/decisionproducts.review;approve,reason;创建人/申请人不能自审,意见必填;同一申请只处理一次
GET /space-governance已登录;已加入/持有的空间及允许查看的加入申请,包括历史归档状态
POST /spaces/{id}/requestsmembers.manage;reason;本企业申请加入,已有成员或已有待审申请拒绝
POST /membership-requests/{id}/decisionmembers.manage且为空间运营企业;approve,reason
POST /spaces/{id}/profilespaces.manage且为空间运营企业;name,description;仅活动空间
POST /spaces/{id}/leavespaces.manage且为成员企业;存在未结束有效合约时409;空间运营企业不能退出自身空间
POST /spaces/{id}/archivespaces.manage且为空间运营企业;存在未结束有效合约时409;保留历史证据
GET /policy-templatescontracts.read;仅本企业模板
POST /policy-templatestemplates.write;name,description,durationHours,policy;durationHours为1至8760
POST /policy-templates/{id}/revisiontemplates.write;上述内容及当前version;并发修改时409;保留历史文档
POST /policy-templates/{id}/applycontracts.write;version;必须当前有效版本,返回按当前时间计算的Policy,不会创建或签署合约

模板应用接口不接收产品编号;门户将返回参数复制到草稿并检查字段,创建合约时服务端仍校验产品字段、操作和策略。模板修订不会改写历史合约,也没有将模板库变成任意脚本执行入口。

新建数据集产品的 /status 不能直接发布;必须走审核申请/决定。待审产品也不能通过普通状态入口下架而留下悬空申请,须先作审核决定。既有内部CSV初始化路径保留兼容,不由HTTP新建产品入口开放。

读取内部目录要求assets.read;发现/快照/加工/取消要求assets.write。创建产品要求products.write,发布审核/下架要求products.review。拟定/修订合约要求contracts.write,签署/终止要求contracts.sign;使用人员可拟定,签署须由其企业管理员或审核员执行。任务提交/取消与审核、导出分别授权。auditor的任务列表不含结果明文。

GET /evidence:audit.read可取本企业管理日志及本企业参与合约;使用人员仅有evidence.contract,可取本企业参与的合约证据,不能读取party范围管理日志。证据不包含原始数据或聚合结果明文。

人员停用/改权不抹除已签历史合约;新请求使用当前权限,旧会话会401。空间退出/归档后,新签署、任务准入/续租/结果提交及使用方在线访问检查空间成员关系;历史证据仍可授权读取。当前无SSO、自定义角色、资源级ACL、在线密钥恢复或权威身份注销。

补充角色读取边界:没有assets.read的人员,即使与产品属于同一企业,产品响应也隐藏sourceRef/datasetVersionId。提供方仅具备jobs.review的人员可在交付前读取结果;使用方仍须结果获准且合约/空间有效。只读审计员始终不返回结果明文。

v0.4 生命周期接口

统一使用现有会话、CSRF、角色与企业隔离。版本修改携带当前 version;过期版本返回409 stale_version。历史仅本企业有 assets.read 的人员可查,写入分别要求 assets.write / products.write。

方法与路径请求/结果
GET /api/sources/:id/impact当前定义、版本历史、资产/传递数据集/当前产品数量、未完成采集数
POST /api/sources/:id/revisions{version,name,description,classification,status};status为active/retired,返回新定义
GET /api/assets/:id/versions当前资产、版本历史、直接快照和直接产品计数;完整加工依赖看来源impact
POST /api/assets/:id/revisions{version,name,status};人工别名和启停,字段及引用不可手工修改
GET /api/products/:id/versions固定产品快照列表,版本倒序
POST /api/products/:id/revisions{version,name,description,datasetVersionId};生成新草稿并使待审申请superseded;published先下架
GET /api/pipelines/:id/versions不可变历史规则、输入版本
POST /api/pipelines/:id/revisions{version,name,inputs,plan};输入1至2个质量通过版本,同连接器,原执行连接器不可替换
GET /api/contracts/:id/releases双方有contracts.read的账号可查询解除历史
POST /api/contracts/:id/releases{reason};生效合约一方有contracts.sign者发起,每合约最多一个pending
POST /api/contracts/:id/releases/:releaseId/decision{approve,reason};另一企业有contracts.sign者处理;拒绝保留合约,批准原子终止
POST /api/contracts/:id/terminate保留紧急单方终止;审计mode=emergency,协商终止mode=bilateral

数据源和资产有排队/执行中的采集时返回409 source_busy;先等待完成或取消。停用阻止新发现/快照,已有不可变快照仍允许加工与履约。重新发现不会启用已停用资产或覆盖人工别名。定义不物理删除历史文件。加工任务按规则版本去重,旧运行不会被新规则替换。

解除的409 release_pending/already_reviewed和403 counterparty_required是业务守卫;理由必填。平台账号确认与审计记录不能表述为本轮新增了CA电子签章。新流程共享原有租约、额度与结果访问撤销事务。

v0.5 可选EVM存证接口

统一要求会话、写请求CSRF与企业隔离。chain.manage仅operator/admin;chain.read另允许reviewer/auditor,后者看不到RPC地址、签名引用或签名器选择项。配置私钥仅由运维文件加载。

方法与路径内容与约束
GET /api/blockchain本企业连接、最近200条操作、固定模板摘要、自动检查点待处理数;管理员另获运维白名单和本企业签名引用
POST /api/blockchain/nodesname,rpcURL,chainId,genesisHash?,signerRef,confirmations,maxGasPrice,autoAnchor;真实核对链身份并固定创世块;同企业/链/账户仅一个活动连接
POST /api/blockchain/nodes/:id/disable停止新提交与自动检查点,保留已签交易及原链回执核对;不撤销已签交易
POST /api/blockchain/nodes/:id/deploy固定模板部署;持久化后由队列广播,同一连接部署幂等
POST /api/blockchain/nodes/:id/anchorskind,objectId,revision;六类固定版本/检查点;相同对象版本返回原交易
POST /api/blockchain/operations/:id/retry仅管理员;重查并在必要时重播原交易;不生成替换nonce,不允许重播改变已回滚结果
GET /api/blockchain/operations/:id/proof授权导出正文、随机盐及签名绑定;不包含RPC、私钥或原始签名交易;导出不等于当前验证通过
POST /api/blockchain/operations/:id/verify当前RPC在线核验;成功明确scope=configured_rpc_and_platform_key、independentThirdParty=false;失败409

kind为dataset_version/product_version/asset_version/source_version/contract_version/audit_checkpoint。数据集对象ID是固定数据集版本ID;其他元数据版本指定正整数revision。数字合约和检查点revision=0分别使用当前合约版本/审计头,返回中固定实际版本。检查点objectId为本企业party:企业ID,或有权访问的contract:合约ID。

节点身份、可用性、部署模板、回执和承诺的失败均不会返回“已核验”。预备交易加密保存且不出现在API响应。客户端不接受任意Solidity、部署字节码、rawTx、私钥或自定义链执行脚本。在线证明核验使用服务器当前固定公钥与连接身份;独立CLI必须额外显式固定信任参数。完整事件链证据格式和原校验器保持独立。

这一步卡住了?请通过首页客服微信沟通。 ← 返回文档中心