batterypass
平台
运作方式 功能 比较
行业
储能系统 (BESS) 轻型交通工具 工业电池 电动汽车 供应商
资源
合规概览 欧盟电池法规 安全与隐私 全部文章 数据来源 护照需要哪些数据 电池上的二维码 谁负责? 术语表 开发者和 API 系统状态 产品更新
Batterypass
义务自查 价格 演示:查看示例护照 博客 关于我们 联系我们
登录 免费开始
开发者

将电池护照数据接入您的系统。

REST API、CSV 导入和导出、固定护照地址及全部数据字段。使用测试密钥可试用所有功能,且不会更改数据。

100MB/文件
67应用内数据字段
3格式:CSV、SVG、PNG

概览

四个对象,四种数据交换方式。入门只需一个 CSV 文件,日常运行可使用 REST API。

  1. 公司您的账户,含用户和方案
  2. 型号主数据,每个型号一次
  3. 护照一块电池,含序列号和专属地址
  4. 事件维修、改用或废弃
方式用途状态
CSV 导入从 ERP、MES 或 Excel 导入序列号可用
CSV 导出将护照编号和地址带回您的系统可用
护照地址和二维码制作自有标签或链接到护照可用
REST API自动创建型号和护照,无需手动上传可用

CSV 导入

可用

从 ERP 导入的常用方式:导出列表并上传到型号。每个新序列号都会获得一本护照。

export.csv
Material;Serialnummer;Fertigungsdatum;Charge;Werk;Status
BX-48V;SN-0001;01.03.2027;L2027-03;Essen;frei
BX-48V;SN-0002;01.03.2027;L2027-03;Essen;frei
BX-48V;SN-0003;02.03.2027;L2027-03;Essen;frei
规则规格
编码UTF-8(含或不含 BOM)。可识别并转换 Windows-1252。
分隔符分号、逗号或制表符,以第一行为准。
大小每个文件最大 100 MB,也支持 Excel(.xlsx)。1 MB 及以上的文件会自动分段处理。
结构每行一块电池,字段内不可换行。
标头可选。有标题行时列顺序不限,多余的列会被忽略;没有时按下表顺序。
列字段可识别的列名必填规则
1序列号seriennummer, serialnummer, serial, serial number, serialnumber, serial no, sn, serien-nr, seriennr, sernr是最多 120 个字符:字母、数字、空格及 - _ . / :
2生产日期herstelldatum, produktionsdatum, fertigungsdatum, manufacturing date, production date, date, datum可选2027-03-01、01.03.2027、1.3.2027、01/03/2027、1/3/2027 或 2027/03/01
3批次charge, chargennummer, batch, lot, los可选最多 120 个字符
4生产地点herstellort, produktionsort, werk, place, plant, manufacturing place可选最多 190 个字符

上传时会发生什么

  • 首先显示预览,此时不会保存任何内容。
  • 错误行会标明行号并被跳过。
  • 文件内重复及该型号已有的序列号会被跳过。
  • 只有在您确认后才会一次性生成护照。导入操作会记入审计记录。

检查文件

可用

登录前即可检查导出文件,规则与应用内导入相同。

检查仅在您的浏览器中进行,文件不会上传。序列号是否已存在于型号中,只有应用内预览才会显示。

CSV 导出

可用

每个型号都可下载全部护照列表,格式为含 BOM 的 UTF-8,以分号分隔。这样护照编号和地址可回到 ERP、MES 或标签打印系统。下载需要登录。

paesse_BX-48V.csv
Seriennummer;Pass-ID;Pass-URL;Herstelldatum;Charge;Herstellort;Status
SN-0001;7KM2XQ9RTA;https://app.digitalbatterypass.eu/p/7KM2XQ9RTA;2027-03-01;L2027-03;Essen;Original

护照地址和二维码

可用

每本护照都有固定地址。二维码、手册链接或 ERP 记录只需这个地址。

URL
https://app.digitalbatterypass.eu/p/{PASS-ID}
https://app.digitalbatterypass.eu/p/{PASS-ID}?lang=en
  • 护照编号为 10 位,避开 0、O、1、I、L 等易混淆字符。
  • 二维码仅包含此地址。数据变更后依然有效。
  • 应用内可按护照下载 SVG 和 PNG 格式二维码,并可打印标签页。
  • 未登录时,护照页面仅显示公开信息,并要求搜索引擎不要收录。
  • 设置 GTIN 后还会提供 GS1 Digital Link。

根据导出文件制作自有标签

etiketten.py
# pip install "qrcode[pil]"
import csv
import qrcode

with open("paesse_BX-48V.csv", encoding="utf-8-sig", newline="") as f:
    for row in csv.DictReader(f, delimiter=";"):
        qrcode.make(row["Pass-URL"]).save(f'{row["Pass-ID"]}.png')

欧盟格式的 JSON 护照

同一地址向用户显示页面,向程序提供符合欧盟模式 1.0.0 的 JSON,无需登录,且仅含公开数据。如缺少必填数据,JSON 中同样缺少,登记册将拒绝该护照。

cURL
curl -H "Accept: application/json" https://app.digitalbatterypass.eu/p/{PASS-ID}
curl https://app.digitalbatterypass.eu/p/{PASS-ID}?format=json

数据字段

可用

应用使用符合官方欧盟电池数据模式 1.0.0 版的 67 个字段。多值字段以列表发送,GET /fields 返回允许的值。类别为 lmt、industrie、ev、sli 和 geraet。

基本信息13
字段技术名称类型可见范围必填
文本语言content_languagevocab公开可选
制造商(名称)manufacturer_nametext公开所有需护照的类别
商号manufacturer_trade_nametext公开可选
商标manufacturer_trademarktext公开可选
制造商(地址)manufacturer_addresstext公开所有需护照的类别
制造商网站manufacturer_websiteurl公开可选
制造商邮箱manufacturer_emailemail公开可选
产品编号product_numbertext公开可选
生产地点(城市)manufacturing_placetext公开可选
地区manufacturing_regiontext公开可选
生产国manufacturing_countryvocab公开所有需护照的类别
重量weight_kgnumber · kg公开所有需护照的类别
商业保修warranty_monthsinteger · Monate公开可选
材料和物质8
字段技术名称类型可见范围必填
电池化学体系chemistrylist · vocab公开所有需护照的类别
危险物质hazardous_substanceslist公开所有需护照的类别
关键原材料critical_raw_materialslist · vocab公开所有需护照的类别
标签上的化学符号chemical_symbollist · vocab公开可选
灭火剂extinguishing_agenttext · lang公开所有需护照的类别
正极成分composition_cathodetext合法利益方所有需护照的类别
负极成分composition_anodetext合法利益方所有需护照的类别
电解液成分composition_electrolytetext合法利益方所有需护照的类别
性能与耐久性23
字段技术名称类型可见范围必填
额定容量rated_capacity_ahnumber · Ah公开所有需护照的类别
标称电压nominal_voltage_vnumber · V公开所有需护照的类别
最低电压min_voltage_vnumber · V公开所有需护照的类别
最高电压max_voltage_vnumber · V公开所有需护照的类别
电压值适用下限voltage_temp_min_cnumber · °C公开所有需护照的类别
电压值适用上限voltage_temp_max_cnumber · °C公开所有需护照的类别
功率(初始)rated_power_wnumber · W公开所有需护照的类别
功率限制power_limit_wnumber · W公开所有需护照的类别
功率限制适用下限power_temp_min_cnumber · °C公开可选
功率限制适用上限power_temp_max_cnumber · °C公开可选
非使用状态温度范围测试temp_testtext · lang公开所有需护照的类别
温度范围(从)temp_min_cnumber · °C公开所有需护照的类别
温度范围(至)temp_max_cnumber · °C公开所有需护照的类别
电芯内阻internal_cell_resistance_mohmnumber · mΩ公开所有需护照的类别
电池包内阻internal_pack_resistance_mohmnumber · mΩ公开所有需护照的类别
预期寿命expected_lifetime_cyclesinteger · Zyklen公开lmt, ev
循环寿命参考测试cycle_life_testtext · lang公开lmt, ev
容量耗尽阈值capacity_threshold_pctnumber · %公开ev
初始往返能效initial_rte_pctnumber · %公开lmt, ev
半循环寿命时的往返能效rte_half_life_pctnumber · %公开lmt, ev
循环测试充电倍率cycle_charge_cratenumber · 1/h公开lmt, ev
循环测试放电倍率cycle_discharge_cratenumber · 1/h公开可选
额定能量rated_energy_kwhnumber · kWh公开可选
碳足迹和再生材料6
字段技术名称类型可见范围必填
可再生内容比例renewable_content_pctnumber · %公开所有需护照的类别
碳足迹carbon_footprintnumber · kg CO₂e/kWh公开义务稍后适用
再生钴比例recycled_cobalt_pctnumber · %公开义务稍后适用
锂再生材料含量recycled_lithium_pctnumber · %公开义务稍后适用
再生镍比例recycled_nickel_pctnumber · %公开义务稍后适用
再生铅比例recycled_lead_pctnumber · %公开义务稍后适用
合规与标识3
字段技术名称类型可见范围必填
有分类收集符号separate_collection_symbolboolean公开所有需护照的类别
欧盟符合性声明(链接)doc_urlurl公开所有需护照的类别
尽职调查报告(链接)due_diligence_urlurl公开义务稍后适用
废物预防和回收10
字段技术名称类型可见范围必填
最终用户在废物预防中的作用end_user_preventiontext · lang公开所有需护照的类别
最终用户在分类收集中的作用end_user_collectiontext · lang公开所有需护照的类别
分类收集点collection_pointstext · lang公开所有需护照的类别
回收点take_back_pointstext · lang公开所有需护照的类别
再使用准备设施reuse_facilitiestext · lang公开所有需护照的类别
改用准备设施repurposing_facilitiestext · lang公开所有需护照的类别
废电池处理设施treatment_facilitiestext · lang公开所有需护照的类别
废电池安全说明waste_safetytext · lang公开所有需护照的类别
标签符号的含义label_symbols_meaningtext · lang公开所有需护照的类别
物质对环境和健康的影响substances_impacttext · lang公开所有需护照的类别
拆解、维修和备件3
字段技术名称类型可见范围必填
备件和更换(链接)spare_parts_urlurl合法利益方所有需护照的类别
拆解说明(链接)dismantling_urlurl合法利益方所有需护照的类别
安全措施(链接)safety_urlurl合法利益方所有需护照的类别
检测报告1
字段技术名称类型可见范围必填
合规测试报告(链接)compliance_report_urlurl主管机关和检测机构所有需护照的类别

REST API

可用

直接从 ERP、MES 或 BMS 创建型号和护照并上报事件。基于 HTTPS 的 JSON,通过密钥认证。基础地址:https://app.digitalbatterypass.eu/api/v1

正式使用时,REST API 属于 Enterprise 套餐。Pro 仅可提交 BMS 测量值。所有套餐均提供测试密钥。

三步开始

  1. 以管理员身份登录,打开“设置”中的“API 密钥”。
  2. 创建测试密钥。它只显示一次,请像密码一样保管。
  3. 用 GET /me 检查连接。API 有响应即说明密钥和网络路径正确。
cURL
export BATTERYPASS_KEY="bp_test_..."

curl -s https://app.digitalbatterypass.eu/api/v1/me \
  -H "Authorization: Bearer $BATTERYPASS_KEY"

一个密钥,一家公司

密钥决定可访问的数据。密钥在应用中创建,且只显示一次。

测试密钥不保存任何内容

测试密钥像正式环境一样检查每个请求,但不更改数据,也不消耗额度。

可安全重试

使用相同的 Idempotency-Key,即使中断也不会产生第二条记录。可使用 ERP 单据号。

护照不会被删除

API 不提供删除护照的操作。电池寿命结束以事件形式上报。

测试密钥返回状态 200 和 dry_run: true。它们读取真实数据,但不做任何更改。

端点

方法路径用途
GET/me连接测试:公司、方案、权限和剩余额度
GET/fields字段目录,含各类别必填项
GET/models列出型号,也可按型号标识查询
POST/models创建型号
GET/models/{id}读取单个型号及其数据和缺失的必填字段
PATCH/models/{id}更改主数据
GET/passports列出护照,也可按序列号或更改日期查询
POST/passports/batch一次调用最多创建 1,000 本护照
GET/passports/{id}读取单本护照及其地址和状态
GET/passports/{id}/events读取护照的事件
POST/passports/{id}/events上报事件,例如维修或废弃
POST/models/validate检查草稿,不保存
POST/passports创建一本护照
PATCH/passports/{id}更改日期、批次或地点
GET/passports/{id}/components读取组件
POST/passports/{id}/components安装组件
PATCH/passports/{id}/components/{cid}更改或拆除组件
POST/passports/{id}/components/{cid}/replace更换组件
GET/passports/{id}/telemetry读取测量序列
POST/passports/{id}/telemetry上报测量值
GET/certificates列出证明文件
GET/certificates/{id}含下载链接的证明文件
GET/suppliers列出供应商
GET/supplier-requests列出数据请求
POST/supplier-requests向供应商发送请求
GET/supplier-requests/{id}读取请求及提交的数据
POST/supplier-requests/{id}/accept将提交的数据接受到型号
GET/audit读取审计记录

示例:从 ERP 创建护照

curl -X POST https://app.digitalbatterypass.eu/api/v1/passports/batch \
  -H "Authorization: Bearer $BATTERYPASS_KEY" \
  -H "Idempotency-Key: erp-4711" \
  -H "Content-Type: application/json" \
  -d '{
  "model_code": "BX-48V",
  "on_conflict": "skip",
  "items": [
    { "serial": "SN-0001", "manufactured_at": "2027-03-01", "batch": "L2027-03" },
    { "serial": "SN-0002", "manufactured_at": "2027-03-01", "batch": "L2027-03" }
  ]
}'

响应

201 Created
HTTP/1.1 201 Created
X-Request-Id: req_4f7a91c2d03e8b56

{
  "created": 1,
  "skipped": 1,
  "skipped_serials": ["SN-0002"],
  "items": [
    {
      "id": "7KM2XQ9RTA",
      "serial": "SN-0001",
      "status": "original",
      "url": "https://app.digitalbatterypass.eu/p/7KM2XQ9RTA"
    }
  ]
}

错误

422
HTTP/1.1 422 Unprocessable Entity

{
  "error": {
    "code": "invalid_serial",
    "message": "Serial number is missing or contains invalid characters.",
    "field": "items[3].serial",
    "request_id": "req_a03c5e17b92d4f68"
  }
}
HTTPCode含义
400invalid_request请求不是有效的 JSON 或包含未知字段
401unauthorized密钥缺失或无效
403insufficient_scope密钥缺少所需权限
403plan_required正式密钥需要 Enterprise 套餐;Pro 仅限 BMS 测量值
403email_not_verified公司邮箱尚未确认
403quota_exceeded方案额度已用完
404not_found对象不存在或属于其他公司
409duplicate_serial该型号中已存在此序列号(on_conflict: fail 时)
409duplicate_model该型号标识已被使用
409idempotency_conflict该 Idempotency-Key 已用于其他请求
413payload_too_large请求超过 2 MB
422invalid_serial序列号无效,响应中会标明字段,不会保存任何内容。
422invalid_date日期不符合 YYYY-MM-DD 格式
422out_of_range测量值超出允许范围
422invalid_gtinGTIN 长度或校验位错误
422validation_failed其他值不符合规则
429rate_limited请求过多,请按 Retry-After 重试
500internal_error我方错误。使用相同的 Idempotency-Key 可安全重试。

限制

每把密钥每分钟的请求数正式 300,测试 60
每次调用的护照数1.000
单个请求大小2 MB
每页条目数100,最多 500
每家公司的有效密钥10
正式密钥Enterprise 拥有全部权限,Pro 仅限 BMS 测量值相关权限。所有套餐均提供测试密钥。

计划每年超过 100,000 本护照?请提前与我们沟通。

权限

每把密钥只获得系统所需的权限。缺少权限时,API 返回 403 和 insufficient_scope。在应用中可选择模板:全部权限、ERP、BMS 或只读。

权限允许
models:read读取型号并检查草稿
models:write创建和更改型号
passports:read读取护照、事件和组件
passports:write创建和更改护照、上报事件、安装和更换组件
telemetry:read telemetry:write读取和上报测量值
certificates:read读取和下载证明文件
suppliers:read suppliers:write读取供应商和数据请求,发送并接受请求
audit:read读取审计记录

请求和响应

列表分页返回,含 data、has_more 和 next_cursor。请将 next_cursor 的值作为 cursor 传入。未知字段会被拒绝,便于立即发现拼写错误。使用 PATCH 时,缺失字段保持不变,null 则清空。

标头含义
Idempotency-Key重试不会产生第二条记录,有效期 7 天。可使用 ERP 单据号。
X-Batterypass-Dry-Run: true即使是正式密钥也只检查此请求,不保存任何内容。
X-Request-Id调用编号,也出现在错误和应用日志中
X-RateLimit-Limit X-RateLimit-Remaining当前分钟的额度
Idempotent-Replayed重放已存储响应时为 true

SDK 和 API 控制台

可用

两个轻量客户端,无依赖:可安全重试请求、自动翻页,并将大量数据拆分为每次 1,000 本护照的调用。都是单个文件,可复制到您的项目。API 控制台位于应用的“设置 > API 密钥”。这些库属于 Enterprise 套餐。

from batterypass import Batterypass

bp = Batterypass("bp_test_...")
print(bp.me()["organization"]["plan"])

items = [{"serial": f"SN-{i:06}"} for i in range(5000)]
print(bp.create_passports_all("BX-48V", items))

for passport in bp.list_all("/passports", model_code="BX-48V"):
    print(passport["serial"], passport["url"])

组件

可用

记录电池中安装的模组、电芯或 BMS。每本护照中同一序列号同时只能安装一次。更换时,旧部件及其拆除日期会保留。

cURL
curl -X POST https://app.digitalbatterypass.eu/api/v1/passports/7KM2XQ9RTA/components \
  -H "Authorization: Bearer $BATTERYPASS_KEY" -H "Content-Type: application/json" \
  -d '{"kind": "module", "label": "Modul 1", "serial": "M-0001", "supplier": "Zellwerk GmbH"}'

curl -X POST https://app.digitalbatterypass.eu/api/v1/passports/7KM2XQ9RTA/components/12/replace \
  -H "Authorization: Bearer $BATTERYPASS_KEY" -H "Content-Type: application/json" \
  -d '{"serial": "M-0002", "note": "Modul nach Defekt getauscht"}'

允许的类型为 pack、rack、module、cell、bms 和 other。

测量值

可用

上报 BMS 数据,可单条或用 items 最多 1,000 条。可用 since 和 until 读取序列。测量值从 Pro 套餐起提供。它们显示在应用中并向有权方开放,不显示在公开护照页面。

cURL
curl -X POST https://app.digitalbatterypass.eu/api/v1/passports/7KM2XQ9RTA/telemetry \
  -H "Authorization: Bearer $BATTERYPASS_KEY" -H "Content-Type: application/json" \
  -d '{"recorded_at": "2027-03-01T10:00:00Z", "soh_pct": 94.5, "cycle_count": 120}'
字段范围
recorded_atISO 8601
soh_pct0–100
soc_pct0–100
capacity_kwh≥ 0
remaining_capacity_ah≥ 0
internal_resistance_mohm≥ 0
cycle_count≥ 0, integer
temp_min_c temp_max_c≥ −273
energy_throughput_kwh≥ 0
negative_eventdeep_discharge, overheat, accident
notemax. 500

证明文件

可用

在应用的型号中上传测试报告、符合性声明等文件:PDF、PNG 或 JPG,最大 10 MB。通过 API 可读取列表并获取 15 分钟有效的下载链接。每个文件都有 SHA-256 校验和。

cURL
curl -s "https://app.digitalbatterypass.eu/api/v1/certificates?model_code=BX-48V" -H "Authorization: Bearer $BATTERYPASS_KEY"
curl -s https://app.digitalbatterypass.eu/api/v1/certificates/42 -H "Authorization: Bearer $BATTERYPASS_KEY"

供应商和数据请求

可用

向供应商索取数据。他们会收到含 30 天有效链接的邮件,无需账户,只填写所请求的字段。提交的数据须经您批准才会进入型号。Starter 方案起提供,每小时最多 20 个请求。

cURL
curl -X POST https://app.digitalbatterypass.eu/api/v1/supplier-requests \
  -H "Authorization: Bearer $BATTERYPASS_KEY" -H "Content-Type: application/json" \
  -d '{"model_code": "BX-48V", "supplier_name": "Zellwerk GmbH", "supplier_email": "daten@zellwerk.example",
       "fields": ["chemistry", "composition_cathode"], "message": "Bitte bis Monatsende"}'

curl -s "https://app.digitalbatterypass.eu/api/v1/supplier-requests?status=submitted" -H "Authorization: Bearer $BATTERYPASS_KEY"
curl -X POST https://app.digitalbatterypass.eu/api/v1/supplier-requests/7/accept -H "Authorization: Bearer $BATTERYPASS_KEY"

GS1 Digital Link

可用

在型号中设置校验位有效的 GTIN。由 GTIN 和序列号组成的 GS1 地址将指向护照页面,并在 API 中显示为 gs1_link。您的二维码仍包含固定地址,但可用 GS1 链接自行生成。GTIN 需从 GS1 获取。

URL
https://app.digitalbatterypass.eu/01/{GTIN}/21/{SERIENNUMMER}
https://app.digitalbatterypass.eu/01/04012345678901/21/SN-0001

审计记录

可用

GET /audit 返回公司所有已记录的更改,可分页,也可用 since 指定起始时间。通过 API 的更改带有密钥名称。管理员还可在应用中查看最近的调用。

欧盟注册库

真实注册库测试待进行

应用会为您的服务账户创建密钥对。私钥以加密方式保存在我们这里,公钥上传到注册库。您的公司须先在该处通过合格印章完成验证。

仅提交已发布且完整的护照,每批最多 100 份。应用和 API 显示状态。注册库以 JSON 读取护照地址,凭访问令牌还可获取受保护视图。无效令牌会被拒绝。

依据委员会 2026 年 10 月 30 日的技术文件构建,并在我们自己的测试服务器上测试。真实注册库中的测试尚未进行。

cURL
curl -X POST https://app.digitalbatterypass.eu/api/v1/registry/submissions \
  -H "Authorization: Bearer $BATTERYPASS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model_code":"LMT-48V"}'

curl https://app.digitalbatterypass.eu/api/v1/registry/submissions \
  -H "Authorization: Bearer $BATTERYPASS_KEY"

发布与证明

可用

使用 publish: false 可创建草稿。在您发布之前,草稿无法公开访问。主数据的每次更改都会成为新版本,并通过哈希与上一版本相连。任何人都可在 /p/ID/proof 重新计算公开状态。

cURL
POST /api/v1/passports/batch        {"model_code":"LMT-48V","publish":false,"items":[...]}
POST /api/v1/passports/PASS-ID/publish
GET  /api/v1/models/42/versions
GET  /p/PASS-ID/proof

版本

主版本位于路径中。v1 内只会新增字段和端点。已计划但尚不可用:Webhook。

Version日期更改
1.2.02026-11-06注册库、发布、版本,以及用于欧盟受保护视图的更多测量值
1.1.02026-11-06组件、测量值、证明文件、供应商、审计、单本护照、GS1、细粒度权限、dry-run 标头、OpenAPI 和健康检查端点
1.0.02026-11-06型号、护照、事件、密钥、测试模式、幂等性

常见问题

关于对接的简短解答。

如何在不创建真实护照的情况下测试?

使用测试密钥。它像正式环境一样检查,但不保存任何内容。

超时后该怎么办?

使用相同的 Idempotency-Key 重新发送同一请求,不会产生第二条记录。

如何根据序列号找到护照?

使用 GET /passports?serial=…,必要时加 model_code。

可以通过 API 删除护照吗?

不可以。请以状态 waste 的事件上报寿命结束。

可以创建多少本护照?

每次调用 1,000 本,每分钟 300 次调用。您的方案和我们的托管也有限制。如计划每年超过 100,000 本,请提前联系我们。

用您自己的文件试试导入。

Pilot 方案免费,包含一个型号和每年 25 本护照。