跳到主要内容

小钉云基础 API 文档

版本:V1.4 | 接口路径前缀/vehicle-externalinterface 文档生成:基于《小钉云基础 API 文档 1.4》整理 | 最后更新:2025-08-12 适用产品:小钉云(移动劳动力管理 / MWM 基础开放接口)


一、文档说明

内容
接口协议HTTPS + JSON(请求 Content-Type: application/json,响应 */*
Base URL(已脱敏)https://www.xxxx.com/openapi/
认证方式userKey 换取 access_token,后续请求通过请求头 Authorization 携带
字符集UTF-8
请求方式全部为 POST

⚠️ 脱敏说明:原始文档中的真实服务域名已在本文中统一替换为占位地址 https://www.xxxx.com,接入时请向平台管理员获取实际可用域名与 userKey


二、快速开始

  1. 向平台管理员申请 userKey(密匙)。
  2. 调用 获取 Token 接口,用 userKey 换取 access_token
  3. 在后续所有业务接口的请求头中加入 Authorization: <access_token>
  4. 按接口规范以 JSON Body 传入查询条件,解析统一响应结构中的 data 字段。

示例:获取 Token 并调用设备信息接口

# 1. 获取 Token
curl -X POST 'https://www.xxxx.com/openapi/auth/userKeyLogin' \
-H 'Content-Type: application/json' \
-d '{"userKey": "YOUR_USER_KEY"}'

# 2. 携带 Token 调用业务接口
curl -X POST 'https://www.xxxx.com/openapi/vehicle-externalinterface/hxkj/interface/getEquipmentInfoList' \
-H 'Content-Type: application/json' \
-H 'Authorization: YOUR_ACCESS_TOKEN' \
-d '{"equipmentIdList": []}'

三、通用规范

3.1 公共请求头部

Header 名称描述类型是否必须
Authorization请求合法性校验签名,取值为「获取 Token」接口返回的 access_tokenstring是(获取 Token 接口除外)

3.2 公共响应结构

所有接口统一返回如下结构:

{
"code": 0,
"data": {},
"msg": ""
}
字段类型说明
codeinteger(int32)业务状态码,0 表示成功
dataobject / array业务数据,结构随接口而异
msgstring提示信息,成功时通常为空

3.3 响应状态码(HTTP)

状态码说明
200OK,请求成功
201Created
401Unauthorized,Token 缺失或无效
403Forbidden,无权限
404Not Found,接口或资源不存在

3.4 约定说明

  • 时间类字段标注 date-time 的,按接口返回原始时间字符串(多为 yyyy-MM-dd HH:mm:ss)。
  • 工时/时长类字段凡标注「单位:毫秒」的,返回值为 Unix 毫秒时间戳。
  • 数组查询条件(如 wholeIdListgroupIdList)为空数组或不传时,通常返回全量数据,以实际环境为准。

四、接口列表

序号接口路径
1获取 Token/auth/userKeyLogin
2设备信息数据获取/vehicle-externalinterface/hxkj/interface/getEquipmentInfoList
3组织数据获取/vehicle-externalinterface/hxkj/interface/getGroupInfoList
4人员信息数据获取/vehicle-externalinterface/hxkj/interface/getPersonnelList
5花名册数据获取/vehicle-externalinterface/hxkj/interface/getRosterList
6人员排班信息数据获取/vehicle-externalinterface/hxkj/interface/getSchedulingList
7工位 ID 信息获取/vehicle-externalinterface/hxkj/interface/getStationIdList
8工位信息获取/vehicle-externalinterface/hxkj/interface/getStationInfoList
9轨迹数据获取/vehicle-externalinterface/hxkj/interface/getTrajectoryList
10月度报表统计数据获取/vehicle-externalinterface/hxkj/interface/gerMonthlyReportNewList

五、接口详情

5.1 获取 Token

  • 接口地址https://www.xxxx.com/openapi/auth/userKeyLogin
  • 请求方式:POST
  • 接口描述:使用平台下发的 userKey 换取访问令牌 access_token,有效期见响应 expires_in

请求参数(Body)

参数类型必填说明
userKeystring密匙,由平台生成,需向平台管理员获取

请求示例

{
"userKey": ""
}

响应参数

字段类型说明
codeinteger(int32)状态码
data.access_tokenstringToken 令牌
data.expires_instring过期时间
data.userNamestring用户名
msgstring提示信息

响应示例

{
"code": 0,
"data": {
"access_token": "",
"expires_in": "",
"userName": ""
},
"msg": ""
}

5.2 设备信息数据获取

  • 接口地址https://www.xxxx.com/openapi/vehicle-externalinterface/hxkj/interface/getEquipmentInfoList
  • 请求方式:POST
  • 接口描述:获取设备(人员绑定终端)的实时定位、电量、速度等信息。

请求参数(Body)

参数类型必填说明
equipmentIdListarray<string>设备 ID 集合,为空返回全量

请求示例

{
"equipmentIdList": []
}

响应参数(data 为设备信息数组)

字段类型说明
directnumber(double)方向
equipmentIdstring设备 ID
gpsTimestring(date-time)定位时间
latnumber(double)纬度
lngnumber(double)经度
powerNumberinteger(int32)电量(百分比)
recvTimestring(date-time)服务器时间
reportTypeNamestring定位模式
speednumber(double)速度
stateLiveNamestring在线状态
stepNumberinteger(int32)步数
wifiInfostringWiFi 信息
wifiNumberinteger(int32)WiFi 数量

响应示例

{
"code": 0,
"data": [
{
"direct": 0,
"equipmentId": "",
"gpsTime": "",
"lat": 0,
"lng": 0,
"powerNumber": 0,
"recvTime": "",
"reportTypeName": "",
"speed": 0,
"stateLiveName": "",
"stepNumber": 0,
"wifiInfo": "",
"wifiNumber": 0
}
],
"msg": ""
}

5.3 组织数据获取

  • 接口地址https://www.xxxx.com/openapi/vehicle-externalinterface/hxkj/interface/getGroupInfoList
  • 请求方式:POST
  • 接口描述:获取组织架构(部门树)信息,无查询条件参数。

请求参数:暂无

响应参数(data 为组织信息数组)

字段类型说明
groupNamestring部门名称
idinteger(int64)部门 ID
parentIdLong上级部门 ID
departmentCodestring部门编码(对应编码)
organizeIdstring组织 ID(对应编码)

响应示例

{
"code": 0,
"data": [
{
"groupName": "",
"id": 0,
"parentId": 0,
"departmentCode": "",
"organizeId": ""
}
],
"msg": ""
}

5.4 人员信息数据获取

  • 接口地址https://www.xxxx.com/openapi/vehicle-externalinterface/hxkj/interface/getPersonnelList
  • 请求方式:POST
  • 接口描述:获取人员实时在岗、考勤、工时、里程、责任工位等综合信息。

请求参数(Body)

参数类型必填说明
wholeIdListarray<integer(int64)>人员 ID 集合,为空返回全量

请求示例

{
"wholeIdList": []
}

响应参数(data 为人员信息数组)

字段类型说明
classNamestring排班(班次名)
equipmentIdstring设备 ID
phoneNumberstring手机号
cardIdstring身份证
wholeTypeNamestring职务
registerTimestring(date-time)签到时间
reschTypeNamestring当前排班
signoutTimestring(date-time)签退时间
stateCheckNamestring考勤状态
stateLiveNamestring在岗状态
stationListarray(Station)责任工位列表,见下方子结构
todayMileagenumber(double)今日里程(单位:KM)
todayStepNumberinteger(int32)今日步数
totaClassTimeinteger(int64)排班工时(单位:毫秒)
totalnegativeTimeinteger(int64)负工时(单位:毫秒)
wholeIdinteger(int64)人员 ID
wholeNamestring姓名
workDatestring(date-time)日期
workHourTimeinteger(int64)工时(单位:毫秒)
workMileagenumber(double)在岗里程(单位:KM)
workStepNumberinteger(int32)在岗步数

data[].stationList[] 子结构(Station)

字段类型说明
idinteger工位 ID
stationNamestring工位名称
wholeIdinteger人员 ID

响应示例

{
"code": 0,
"data": [
{
"className": "",
"equipmentId": "",
"phoneNumber": "",
"cardId": "",
"wholeTypeName": "",
"registerTime": "",
"reschTypeName": "",
"signoutTime": "",
"stateCheckName": "",
"stateLiveName": "",
"stationList": [
{ "id": 0, "stationName": "", "wholeId": 0 }
],
"todayMileage": 0,
"todayStepNumber": 0,
"totaClassTime": 0,
"totalnegativeTime": 0,
"wholeId": 0,
"wholeName": "",
"workDate": "",
"workHourTime": 0,
"workMileage": 0,
"workStepNumber": 0
}
],
"msg": ""
}

5.5 花名册数据获取

  • 接口地址https://www.xxxx.com/openapi/vehicle-externalinterface/hxkj/interface/getRosterList
  • 请求方式:POST
  • 接口描述:按组织获取人员花名册(在职状态)信息。

请求参数(Body)

参数类型必填说明
groupIdListarray<integer(int64)>组织 ID 集合,为空返回全量

请求示例

{
"groupIdList": []
}

响应参数(data 为花名册数组)

字段类型说明
idinteger(int64)人员 ID
isObJobinteger(int32)是否在职:0 离职,1 在职
wholeNamestring姓名
groupIdLong所属部门 ID

响应示例

{
"code": 0,
"data": [
{ "id": 0, "isObJob": 0, "wholeName": "", "groupId": 0 }
],
"msg": ""
}

5.6 人员排班信息数据获取

  • 接口地址https://www.xxxx.com/openapi/vehicle-externalinterface/hxkj/interface/getSchedulingList
  • 请求方式:POST
  • 接口描述:按人员与时间范围获取排班(班次)信息。

请求参数(Body)

参数类型必填说明
endDatestring(date-time)结束时间
startDatestring(date-time)开始时间
wholeIdListarray<integer(int64)>人员 ID 集合

请求示例

{
"endDate": "",
"startDate": "",
"wholeIdList": []
}

响应参数(data 为排班信息数组)

字段类型说明
classNamestring班次名称
idinteger(int64)排班详情 ID
isTemporaryinteger(int32)是否临时排班
reschTypeNamestring当前排班
restTimestring休息时间
wholeIdinteger(int64)员工 ID
workDatestring(date-time)排班日期
workTimestring工作时间

响应示例

{
"code": 0,
"data": [
{
"className": "",
"id": 0,
"isTemporary": 0,
"reschTypeName": "",
"restTime": "",
"wholeId": 0,
"workDate": "",
"workTime": ""
}
],
"msg": ""
}

5.7 工位 ID 信息获取

  • 接口地址https://www.xxxx.com/openapi/vehicle-externalinterface/hxkj/interface/getStationIdList
  • 请求方式:POST
  • 接口描述:按组织获取工位 ID 集合,供后续「工位信息获取」入参使用。

请求参数(Body)

参数类型必填说明
groupIdListarray<integer(int64)>组织 ID 集合,为空返回全量

请求示例

{
"groupIdList": []
}

响应参数(data 为工位 ID 信息对象)

字段类型说明
stationIdListarray<integer(int64)>工位 ID 集合

响应示例

{
"code": 0,
"data": { "stationIdList": [] },
"msg": ""
}

5.8 工位信息获取

  • 接口地址https://www.xxxx.com/openapi/vehicle-externalinterface/hxkj/interface/getStationInfoList
  • 请求方式:POST
  • 接口描述:按工位 ID 获取工位名称及其地理围栏详情(点/线/面)。

请求参数(Body)

参数类型必填说明
stationIdListarray<integer(int64)>工位 ID 集合,为空返回全量

请求示例

{
"stationIdList": []
}

响应参数(data 为工位信息数组)

字段类型说明
idinteger(int64)工位 ID
stationNamestring工位名称
stationDetailListarray(StationDetail)工位地理详情,见下方子结构

data[].stationDetailList[] 子结构(StationDetail,高德坐标系)

字段类型说明
drawTypeinteger画图类型:1-点,2-线,3-面
idintegerID
latnumber纬度(高德地图纬度)
lngnumber经度(高德地图经度)
pointOrderinteger画点的顺序
stationIdinteger工位 ID
stationLocpoIdinteger工位下的详情工位 ID(用于区分详细工位)

响应示例

{
"code": 0,
"data": [
{
"id": 0,
"stationName": "",
"stationDetailList": [
{
"drawType": 0, "id": 0, "lat": 0, "lng": 0,
"pointOrder": 0, "stationId": 0, "stationLocpoId": 0
}
]
}
],
"msg": ""
}

5.9 轨迹数据获取

  • 接口地址https://www.xxxx.com/openapi/vehicle-externalinterface/hxkj/interface/getTrajectoryList
  • 请求方式:POST
  • 接口描述:按人员与时间范围获取定位轨迹,返回结构为「人员 ID → 轨迹点列表」的映射。

请求参数(Body)

参数类型必填说明
endDatestring(date-time)结束时间
startDatestring(date-time)开始时间
wholeIdListarray<integer(int64)>人员 ID 集合

请求示例

{
"endDate": "",
"startDate": "",
"wholeIdList": []
}

响应参数(dataMap<人员ID, 轨迹信息列表>,轨迹点字段如下)

字段类型说明
directnumber(double)方向
equipmentIdstring设备 ID
gpsTimestring定位时间
latnumber(double)纬度
lngnumber(double)经度
powerNumberinteger(int32)电量(百分比)
reportTypeNamestring定位模式
speednumber(double)速度
stepNumberinteger(int32)步数
todayMileageinteger(int32)今日里程
todayStepNumberinteger(int32)今日步数
wholeIdinteger(int64)人员 ID
workMileageinteger(int32)在岗里程
workStepNumberinteger(int32)在岗步数

响应示例

{
"code": 0,
"data": {
"additionalProperties1": [
{
"direct": 0, "equipmentId": "", "gpsTime": "", "lat": 0, "lng": 0,
"powerNumber": 0, "reportTypeName": "", "speed": 0, "stepNumber": 0,
"todayMileage": 0, "todayStepNumber": 0, "wholeId": 0,
"workMileage": 0, "workStepNumber": 0
}
]
},
"msg": ""
}

5.10 月度报表统计数据获取

  • 接口地址https://www.xxxx.com/openapi/vehicle-externalinterface/hxkj/interface/gerMonthlyReportNewList
  • 请求方式:POST
  • 接口描述:获取人员月度考勤/工时/加班/脱岗等综合统计报表,结构较复杂,按分组对象返回。

注:原始接口路径为 gerMonthlyReportNewList(疑似 get 笔误),以平台实际路径为准。

请求参数(Body)

参数类型必填说明
endDatestring(date-time)结束日期
startDatestring(date-time)开始日期
wholeIdListarray<integer(int64)>人员 ID 集合

请求示例

{
"endDate": "",
"startDate": "",
"wholeIdList": []
}

响应参数(data 为每月统计报表数组)

data[] 顶层字段及分组对象:

分组字段类型说明
wholeIdstring人员 ID
wholeNamestring姓名
absentCardStatistics(缺卡补卡统计)absentCardCountinteger缺卡次数
reissueCardDaysinteger补卡天数
attendanceExceptionStatistics(出勤异常统计)lateCountinteger迟到次数
lateHoursCNstring迟到时长
lateMsinteger迟到(毫秒)
leaveEarlyinteger早退次数
leaveEarlyHoursCNstring早退时长
leaveEarlyMsinteger早退(毫秒)
severityLateCountinteger严重迟到次数
severityLateHoursCNstring严重迟到时长
severityLateMsinteger严重迟到(毫秒)
severityLeaveEarlyinteger严重早退次数
severityLeaveEarlyHoursCNstring严重早退时长
severityLeaveEarlyMsinteger严重早退(毫秒)
lossWorkListarray迟到早退明细集合,见下
attendanceGroupNamestring考勤组
attendanceTypestring考勤类型
attendanceResultByMonth(每日考勤结果)datestring日期
valuestring考勤结果
attendanceStatistics(出勤统计)attendanceDaysnumber出勤天数
exceptionDaysinteger异常考勤天数
leaveDaysnumber请假天数
noWorkDaysinteger旷工天数
planWorkDaysnumber应出勤天数
baseInfo(基本信息)agestring年龄
contractCompanystring合同公司
createDatestring入职日期
employStatusstring员工状态(0-正式,1-试用)
employTypestring人员类型(0-无类型,1-全职,2-兼职,3-实习,4-劳务派遣,5-退休返聘,6-劳务外包,7-灵活用工)
groupArchitecturestring组织
groupIdinteger部门 ID
groupNamestring部门
idCardHiddenstring身份证号
leadNamestring直属上级
overdueDatestring离职日期
phoneNumberstring电话
sexstring性别(1-男,2-女)
stationNamestring工位
wholeIdstring人员 ID
wholeIdNostring工号
wholeTypeNamestring职务
leaveStatistics(请假统计,数组)daystring请假天数
idstring请假类型 ID
typestring请假类型名称
overTimeStatistics(加班统计)holidayOverTimeHoursinteger节假日加班
holidayOverTimeHoursCNstring节假日加班(文本)
overTimeHoursinteger加班总时长
overTimeHoursCNstring加班总时长(文本)
overTimeHoursPayinteger加班总时长-计加班费
overTimeHoursPayCNstring加班总时长-计加班费(文本)
overTimeHoursRestinteger加班总时长-计调休
overTimeHoursRestCNstring加班总时长-计调休(文本)
restDayOverTimeHoursinteger休息日加班
restDayOverTimeHoursCNstring休息日加班(文本)
workDayOverTimeHoursinteger工作日加班
workDayOverTimeHoursCNstring工作日加班(文本)
sitOffWorkStatistics(坐岗脱岗统计)offWorkCountinteger脱岗次数
offWorkHoursstring脱岗时长
sitWorkCountinteger坐岗次数
sitWorkHoursstring坐岗时长
sitOffWorkListarray脱岗坐岗明细集合,见下
wholeIdstring人员 ID
wholeNamestring姓名
workHourStatistics(工时统计)absentHoursstring缺勤工时
noWorkHoursstring旷工时长
totaClassHoursstring排班工时
totalnegativeHoursstring负工时
workHoursstring工时

attendanceExceptionStatistics.lossWorkList[] 明细

字段类型说明
eventTypestring事件类型:27-迟到事件,28-早退事件
hourslong时长
hoursStringstring时长(文本)
typeinteger考勤类型:1-迟到,2-早退,12-严重迟到,13-严重早退,17-旷工迟到
eventDatestring事件日期

sitOffWorkStatistics.sitOffWorkList[] 明细

字段类型说明
eventTypeinteger事件类型:21-脱岗事件,25-坐岗事件
minutelong时长(分钟)
hoursstring时长
startTimestring开始时间
endTimestring结束时间
workDatestring事件日期

响应示例

{
"code": 0,
"data": [
{
"absentCardStatistics": { "absentCardCount": 0, "reissueCardDays": 0 },
"attendanceExceptionStatistics": {
"lateCount": 0, "lateHoursCN": "", "lateMs": 0,
"leaveEarly": 0, "leaveEarlyHoursCN": "", "leaveEarlyMs": 0,
"severityLateCount": 0, "severityLateHoursCN": "", "severityLateMs": 0,
"severityLeaveEarly": 0, "severityLeaveEarlyHoursCN": "", "severityLeaveEarlyMs": 0,
"lossWorkList": [],
"attendanceGroupName": "", "attendanceType": ""
},
"attendanceResultByMonth": [ { "date": "", "value": "" } ],
"attendanceStatistics": {
"attendanceDays": 0, "exceptionDays": 0, "leaveDays": 0, "noWorkDays": 0, "planWorkDays": 0
},
"baseInfo": {
"age": "", "contractCompany": "", "createDate": "", "employStatus": "",
"employType": "", "groupArchitecture": "", "groupId": 0, "groupName": "",
"idCardHidden": "", "leadName": "", "overdueDate": "", "phoneNumber": "",
"sex": "", "stationName": "", "wholeId": "", "wholeIdNo": "", "wholeTypeName": ""
},
"leaveStatistics": [ { "day": "", "id": "", "type": "" } ],
"overTimeStatistics": {
"holidayOverTimeHours": 0, "holidayOverTimeHoursCN": "", "overTimeHours": 0,
"overTimeHoursCN": "", "overTimeHoursPay": 0, "overTimeHoursPayCN": "",
"overTimeHoursRest": 0, "overTimeHoursRestCN": "", "restDayOverTimeHours": 0,
"restDayOverTimeHoursCN": "", "workDayOverTimeHours": 0, "workDayOverTimeHoursCN": ""
},
"sitOffWorkStatistics": {
"offWorkCount": 0, "offWorkHours": "", "sitWorkCount": 0, "sitWorkHours": "",
"sitOffWorkList": [], "wholeId": "", "wholeName": ""
},
"workHourStatistics": {
"absentHours": "", "noWorkHours": "", "totaClassHours": "", "totalnegativeHours": "", "workHours": ""
},
"wholeId": "", "wholeName": ""
}
],
"msg": ""
}

六、修订记录

版本日期变更
V1.42025-08-12基于《小钉云基础 API 文档 1.4》整理生成基础 API 文档(域名脱敏为 https://www.xxxx.com

📌 接入提示:实际 userKey、Base URL、字段枚举值(如考勤类型编码)以平台管理员下发为准;本文档字段说明与示例源自 V1.4 原始接口定义,如发现与线上不一致请以线上返回为准。