接口文档

面向合作方开放车辆用氢量、里程、实时状态及加氢车辆停留核验数据。每个接口独立说明请求参数、成功返回与异常情况。

Base URL https://open.d.lnoneos.com

认证与授权

所有接口均使用平台管理员签发的 32 位 appKey。appKey 有效期及车辆授权期必须完整覆盖查询时间。

#
请求头Authorization: Bearer <YOUR_APP_KEY>
Content-Type: application/json
授权边界:不传车牌时,仅返回该 appKey 在查询日期或时间段内有效授权的全部车辆;显式传入的车牌未授权时,接口返回 403。所有接口响应均以两空格缩进的 JSON 返回,便于直接阅读和留存。

请求体样例

所有接口使用 Content-Type: application/json。以下 JSON 可直接复制;未列出的可选字段可省略。

#

车辆单日用氢量

/vehicles/hydrogen-consumption/query
{
  "date": "2026-08-06",
  "plateNumbers": ["浙F06618F"]
}

车辆单日里程

/vehicles/mileage/query
{
  "date": "2026-08-06",
  "plateNumbers": ["浙F06618F"],
  "protocolPriority": ["GB32960", "MQTT", "JT808"]
}

车辆区间日里程

/vehicles/mileage/range/query
{
  "startDate": "2026-08-01",
  "endDate": "2026-08-06",
  "pageSize": 100
}

指定时刻总里程

/vehicles/total-mileage/query
{
  "vin": "LA9GG68L2PBAF4790",
  "time": "2026-08-06 10:30:00",
  "protocol": "GB32960"
}

实时位置与状态

/vehicles/realtime/query
{
  "plateNumbers": ["浙F06618F"]
}

加氢车辆停留核验

/vehicles/stationary/query
{
  "startTime": "2026-08-06 10:00:00",
  "endTime": "2026-08-06 12:00:00",
  "longitude": 120.752312,
  "latitude": 30.746281,
  "coordinateSystem": "GCJ02",
  "radiusMeters": 8
}

加氢站地图点位

/hydrogen-stations/query
{
  "province": "浙江省",
  "city": "嘉兴市",
  "cooperateOnly": true
}

车辆单日用氢量

POST/api/v1/vehicles/hydrogen-consumption/query

查询车辆单日用氢量,单位 kg。

#

请求参数

字段必填说明
date日期,格式 yyyy-MM-dd
plateNumbers车牌数组;省略或 [] 时查询全部授权车辆

成功返回 · 200

{
"code": "SUCCESS",
"data": [{
"plateNumber": "浙F06618F",
"hydrogenConsumptionKg": 12.315,
"status": "NORMAL"
}]
}
  • 400:日期或车牌格式不正确
  • 401:appKey 无效、停用或过期
  • 403:指定车辆未授权

车辆单日里程

POST/api/v1/vehicles/mileage/query

返回当日行驶里程、当日累计总里程和实际选用的数据协议,单位 km。

#

请求参数

字段必填说明
date日期,格式 yyyy-MM-dd
plateNumbers省略时查询全部授权车辆
protocolPriority协议选源顺序,例如 ["GB32960","MQTT","JT808"]
缺数规则:若当日没有有效里程,日里程为 0;累计总里程沿用上一个有效统计周期,计算时间也显示该周期时间。

成功返回 · 200

{
"code": "SUCCESS",
"data": [{
"dailyMileageKm": 182.437,
"totalMileageKm": 12345.679,
"sourceProtocol": "GB32960",
"status": "NORMAL"
}]
}
  • 400:日期、车牌或协议参数错误
  • 403:授权期未覆盖查询日
  • 无统计:单车以 NO_DATA 返回

车辆区间日里程

POST/api/v1/vehicles/mileage/range/query

按车辆、日期分页返回区间日里程,最长查询区间为 366 天。

#

请求参数

字段必填说明
startDate / endDate日期区间,yyyy-MM-dd
plateNumbers车牌数组,最多 5000 辆
protocolPriority协议选源顺序
pageSize / cursor分页大小及下一页游标

成功返回 · 200

{
"code": "SUCCESS",
"data": [{
"date": "2026-08-06",
"dailyMileageKm": 182.437,
"totalMileageKm": 12345.679
}],
"nextCursor": null
}
  • 400:区间超限或游标与原参数不一致
  • 403:授权未完整覆盖查询区间

指定时刻总里程

POST/api/v1/vehicles/total-mileage/query

按 VIN 返回不晚于指定时刻的最近一条总里程及实际采集协议。

#

请求参数

字段必填说明
vin17 位已授权 VIN
time北京时间 yyyy-MM-dd HH:mm:ss
protocolGB32960、MQTT 或 JT808;省略时按默认顺序选取

成功返回 · 200

{
"code": "SUCCESS",
"data": {
"totalMileageKm": 12345.678,
"protocol": "GB32960",
"recordTime": "2026-08-06 10:29:45",
"timeDifferenceSeconds": 15
}
}
  • 400:VIN、时间或协议不合法
  • 403:VIN 未授权
  • 无记录:返回 NO_DATA

车辆实时位置与状态

POST/api/v1/vehicles/realtime/query

返回最新位置、在线状态、速度、总里程、实际协议和记录时间。

#

请求参数

字段必填说明
plateNumbers省略或 [] 时返回全部当前有效授权车辆

成功返回 · 200

{
"data": [{
"vin": "LA9GG68L2PBAF4790",
"plateNumber": "浙F06618F",
"sourceProtocol": "GB32960",
"longitude": 120.75,
"latitude": 30.74,
"speedKmh": 0,
"totalMileageKm": 12345.678,
"recordTime": "2026-08-17 17:40:12",
"timeDifferenceSeconds": 8,
"online": true,
"activeToday": true,
"motionStatus": "idle",
"locationAvailable": true,
"status": "NORMAL"
}]
}
  • 400:车牌格式错误
  • 403:指定车牌未授权
  • 无实时记录:返回 NO_DATA

加氢车辆停留核验

POST/api/v1/vehicles/stationary/query

按站点坐标、坐标系、时间段和半径,核验速度接近 0 的车辆停留记录,并按匹配度降序返回。

#

请求参数

字段必填说明
startTime / endTime北京时间;查询区间最长 24 小时
longitude / latitude加氢站经纬度;由 coordinateSystem 说明坐标系
coordinateSystemWGS84(默认)或 GCJ02(高德);GCJ02 自动转换后核验
radiusMeters核验半径,单位 m;1–100,默认 5
plateNumbers省略时核验全部有效授权车辆
匹配规则:速度 ≤ 3 km/h,至少 2 个样本且停留 ≥ 60 秒;相邻定位点间隔超过 10 分钟时拆分停留区间。

成功返回 · 200

{
"data": [{
"plateNumber": "浙F06618F",
"stayStartTime": "2026-08-06 10:16:02",
"stayEndTime": "2026-08-06 10:42:18",
"stayDurationSeconds": 1576,
"matchScore": 93.842
}]
}
  • 400:时间、坐标、坐标系或半径不合法
  • 403:授权期未覆盖整个时间段
  • 无匹配:data 为空数组

加氢站地图点位

POST/api/v1/hydrogen-stations/query

只读查询有有效坐标的加氢站,可按行政区划和合作属性筛选。

#

请求参数

字段必填说明
province / city行政区划筛选
cooperateOnlytrue 仅合作站;false 仅外部站

成功返回 · 200

{
"data": [{
"id": "1",
"name": "示例加氢站",
"longitude": 120.752312,
"latitude": 30.746281,
"cooperative": true
}]
}
  • 400:行政区划参数过长
  • 401:appKey 无效
  • 无符合站点:data 为空数组

返回字段与枚举说明

所有成功响应外层固定包含 code、message、data 和 traceId;以下为 data 内的字段。无数据时按对应接口返回 null、NO_DATA 或空数组。

#

通用响应与状态

字段/枚举说明
code = SUCCESS请求已成功处理。业务数据是否存在由每条数据的 status 判断。
message成功时固定为 success。
traceId本次请求唯一追踪标识;异常排查时请完整提供。
status = NORMAL存在可用数据,相关数值、协议和时间字段有效。
status = NO_DATA在授权范围内未找到可用数据;可选数值、位置、时间字段为 null 或省略。
status = DATA_ANOMALY检测到数据异常,当前不返回可能错误的里程;dataQuality 给出原因。
dataQuality = TOTAL_MILEAGE_ROLLBACK终端累计里程明显回退,已阻止其作为正常累计里程返回。

车辆单日用氢量

字段说明
plateNumber / date车牌与查询自然日(Asia/Shanghai)。
hydrogenConsumptionKg当日用氢量,单位 kg;无有效数据时为 null。
statusNORMAL 表示已计算;NO_DATA 表示无可用统计。

车辆单日里程与区间日里程

字段说明
vin / plateNumber / date车辆唯一 VIN、车牌和统计自然日。
dailyMileageKm当日行驶里程,单位 km。缺少当日记录且可前向补齐时为 0。
totalMileageKm所选协议的日末累计总里程,单位 km;不会用 GPS 日里程估算值替代。
sourceProtocol实际采用的协议:GB32960、MQTT 或 JT808。
dataTime实际采用的最后一条车辆源数据时间。
updatedAt该统计周期的计算时间;前向补齐时保持上一有效统计周期时间。
snapshotId / nextCursor仅区间接口返回;snapshotId 固定本次分页车辆范围,nextCursor 为下一页游标,最后一页为 null。

指定时刻总里程

字段说明
vin / queryTime查询车辆 VIN 与请求的北京时间。
totalMileageKm不晚于请求时间的最近一条累计总里程,单位 km。
protocol / protocolInputprotocol 为实际命中协议;protocolInput 为请求显式传入的协议,未传则省略。
recordTime / timeDifferenceSeconds实际命中记录时间,以及请求时间与记录时间的差值,单位秒。
mileageMeaning该协议累计里程的业务口径;JT808 为定位终端/GPS侧累计值。

车辆实时位置与状态

字段/枚举说明
sourceProtocol本条位置、速度、累计里程和记录时间实际采用的协议:GB32960、MQTT 或 JT808。
longitude / latitude最新有效经纬度;无有效位置时为 null,locationAvailable 为 false。
speedKmh / totalMileageKm所选来源的瞬时速度(km/h)和累计总里程(km)。
recordTime / timeDifferenceSeconds所选来源的记录时间,以及与当前查询时间的差值,单位秒。
onlinetrue:任一协议最近 60 秒内上报;false:没有任一协议满足该实时阈值。
activeTodaytrue:任一协议在当前自然日曾上报;不等同于实时 online。
motionStatus = driving在线且所选来源速度大于 3 km/h。
motionStatus = idle在线且所选来源速度不大于 3 km/h。
motionStatus = offline当前不在线,或没有实时记录。
protocol旧版兼容字段;新接入请使用 sourceProtocol。

加氢车辆停留核验

字段说明
stayStartTime / stayEndTime满足核验条件的连续停留开始、结束时间。
stayDurationSeconds / stayDurationMinutes停留时长,分别以秒、分钟表示。
matchScore0–100;位置越接近、速度越低、停留越久、样本越充分,分数越高。
averageDistanceMeters / maxDistanceMeters定位点相对输入站点坐标的平均/最大距离,单位 m。
averageSpeedKmh / maxSpeedKmh / matchedSamples核验区间内速度统计与匹配定位样本数。
sourceProtocols本停留片段采用过的协议数组,枚举值为 GB32960、MQTT、JT808。

加氢站地图点位

字段说明
id / name / shortName站点唯一标识、标准名称和简称;id 为字符串以避免 JavaScript 精度丢失。
address / province / city / district站点地址及行政区划。
longitude / latitude站点坐标。
cooperativetrue:合作站(内部站或已导入合作名录);false:外部站。

总里程协议口径

未指定 protocol 时,按 GB32960 > MQTT > JT808 选择第一个有数据的协议;不会跨协议拼接里程。

#
规范值总里程含义
GB32960车辆仪表盘累计总里程,对应 GB/T 32960 整车数据累计里程。
MQTT车辆仪表盘或车端控制器累计总里程,由 MQTT 平台上报。
JT808定位终端累计里程,由 GPS/终端侧计算,不等同于车辆仪表盘里程。

异常与状态码

所有响应均包含 codemessagetraceId;请在工单中提供 traceId 以便排查。

#
HTTPcode说明
200SUCCESS查询成功;无统计数据时,数据行的 status 为 NO_DATA。
400INVALID_REQUEST请求格式、数量、日期、时间、坐标或协议不正确。
401UNAUTHORIZEDappKey 不存在、停用或已过期。
403FORBIDDEN车辆或 appKey 授权期未覆盖请求时间。
500INTERNAL_ERROR服务内部异常;请提供 traceId。