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

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

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

50.000每个文件的护照数
38应用内数据字段
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。
分隔符分号、逗号或制表符,以第一行为准。
大小每个文件最大 8 MB、50,000 行。
结构每行一块电池,字段内不可换行。
标头可选。有标题行时列顺序不限,多余的列会被忽略;没有时按下表顺序。
列字段可识别的列名必填规则
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.batterypass2027.eu/p/7KM2XQ9RTA;2027-03-01;L2027-03;Essen;Original

护照地址和二维码

可用

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

URL
https://app.batterypass2027.eu/p/{PASS-ID}
https://app.batterypass2027.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')

数据字段

可用

这 38 个字段目前已在应用中提供,依据附件十三做了简化,在型号表单中维护。类别为 lmt、industrie、ev、sli 和 geraet。

基本信息6
字段技术名称类型可见范围必填
制造商(名称)manufacturer_nametext公开所有需护照的类别
制造商(地址)manufacturer_addresstext公开所有需护照的类别
联系方式(邮箱或网站)manufacturer_contacttext公开所有需护照的类别
生产地点(默认)manufacturing_placetext公开所有需护照的类别
重量weight_kgnumber · kg公开所有需护照的类别
保修 / 担保warrantytext公开可选
材料和物质6
字段技术名称类型可见范围必填
电池化学体系chemistrytext公开所有需护照的类别
危险物质hazardous_substancestext公开所有需护照的类别
关键原材料critical_raw_materialstext公开所有需护照的类别
正极成分composition_cathodetext合法利益方所有需护照的类别
负极成分composition_anodetext合法利益方所有需护照的类别
电解液成分composition_electrolytetext合法利益方所有需护照的类别
性能与耐久性11
字段技术名称类型可见范围必填
额定容量rated_capacity_ahnumber · Ah公开所有需护照的类别
标称电压nominal_voltage_vnumber · V公开所有需护照的类别
最低电压min_voltage_vnumber · V公开所有需护照的类别
最高电压max_voltage_vnumber · V公开所有需护照的类别
额定能量rated_energy_kwhnumber · kWh公开所有需护照的类别
功率(初始)rated_power_wnumber · W公开industrie, ev
预期寿命expected_lifetime_cyclesnumber · Zyklen公开所有需护照的类别
温度范围(从)temp_min_cnumber · °C公开所有需护照的类别
温度范围(至)temp_max_cnumber · °C公开所有需护照的类别
能量效率(往返)round_trip_efficiency_pctnumber · %公开industrie, ev
内阻internal_resistance_mohmnumber · mΩ公开可选
碳足迹和再生材料6
字段技术名称类型可见范围必填
碳足迹carbon_footprintnumber · kg CO₂e/kWh公开义务稍后适用
再生钴比例recycled_cobalt_pctnumber · %公开义务稍后适用
锂再生材料含量recycled_lithium_pctnumber · %公开义务稍后适用
再生镍比例recycled_nickel_pctnumber · %公开义务稍后适用
再生铅比例recycled_lead_pctnumber · %公开义务稍后适用
可再生内容比例renewable_content_pctnumber · %公开可选
合规与标识4
字段技术名称类型可见范围必填
欧盟符合性声明(链接)doc_urlurl公开所有需护照的类别
标识和符号labels_symbolstext公开所有需护照的类别
尽职调查报告(链接)due_diligence_urlurl公开义务稍后适用
退回和处置end_of_life_infotext公开所有需护照的类别
拆解、维修和备件4
字段技术名称类型可见范围必填
拆解说明dismantling_infotext合法利益方所有需护照的类别
组件零件编号part_numberstext合法利益方所有需护照的类别
备件来源spare_parts_contacttext合法利益方所有需护照的类别
安全措施safety_measurestext合法利益方所有需护照的类别
检测报告1
字段技术名称类型可见范围必填
测试报告(链接或参考)test_reportstext主管机关和检测机构所有需护照的类别

REST API

可用

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

三步开始

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

curl -s https://app.batterypass2027.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.batterypass2027.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.batterypass2027.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正式密钥需要 Pro 或 Enterprise 方案
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
正式密钥Pro 和 Enterprise。所有方案均提供测试密钥。

计划每年超过 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 密钥”。

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.batterypass2027.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.batterypass2027.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.batterypass2027.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.batterypass2027.eu/api/v1/certificates?model_code=BX-48V" -H "Authorization: Bearer $BATTERYPASS_KEY"
curl -s https://app.batterypass2027.eu/api/v1/certificates/42 -H "Authorization: Bearer $BATTERYPASS_KEY"

供应商和数据请求

可用

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

cURL
curl -X POST https://app.batterypass2027.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.batterypass2027.eu/api/v1/supplier-requests?status=submitted" -H "Authorization: Bearer $BATTERYPASS_KEY"
curl -X POST https://app.batterypass2027.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.batterypass2027.eu/01/{GTIN}/21/{SERIENNUMMER}
https://app.batterypass2027.eu/01/04012345678901/21/SN-0001

审计记录

可用

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

版本

主版本号在路径中。v1 内只会新增字段和端点。计划中但尚未提供:Webhooks、面向主管机关和回收商的入口,以及可验证的更改链。

Version日期更改
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 本护照。