API Reference

XXinstall 归因系统完整 API 接口文档,包括 SDK API 和管理后台 API。

认证

SDK API

SDK API 使用 appKey + HMAC-SHA256 签名认证:

  • 通过参数 appKey 或请求头 X-App-Key 传递
  • 签名算法:HMAC-SHA256(appKey + timestamp + fpMd5, appSecret)
  • fpMd5 = md5(phpJsonEncode(ksort(fingerprint)))

Admin API

管理后台 API 使用 JWT Bearer Token:

Authorization: Bearer <jwt-token>

SDK API

归因存储

POST /api/v1/attribution/store

上报推广落地页采集的设备指纹和归因参数。

请求参数:

参数类型必填说明
appKeystring应用 Key
fingerprintobject设备指纹对象
signstringHMAC-SHA256 签名
fpMd5string指纹 JSON 的 MD5(消除跨平台序列化差异)
timestampnumber秒级时间戳
inviteCodestring邀请码
channelstring渠道标识
sdkVersionstringSDK 版本号
extraParamsobject自定义扩展参数

响应示例:

{
  "code": 0,
  "msg": "ok",
  "data": {
    "recordId": 42,
    "clipCode": "aB3xK9mZ"
  }
}

归因匹配

POST /api/v1/attribution/resolve

客户端 SDK 调用,匹配设备的归因来源。

请求参数:

参数类型必填说明
appKeystring应用 Key
fingerprintobject设备指纹对象
signstringHMAC-SHA256 签名
fpMd5string指纹 JSON 的 MD5(消除跨平台序列化差异)
timestampnumber秒级时间戳
clipboardDatastring剪贴板内容(含零宽字符)

响应示例:

{
  "code": 0,
  "msg": "ok",
  "data": {
    "matched": true,
    "inviteCode": "ABC123",
    "channel": "wechat",
    "confidence": 0.92,
    "matchType": "fingerprint"
  }
}

设备画像上报

POST /api/v1/device/profile

App SDK 在归因匹配成功后异步上报设备画像数据,用于设备去重和防刷。

请求参数:

参数类型必填说明
appKeystring应用 Key
signstringHMAC-SHA256 签名
timestampnumber秒级时间戳
fingerprintobject归因时使用的设备指纹
fpMd5string指纹 JSON 的 MD5
deviceProfileobject设备画像数据
attributionResultobject本次归因结果
deviceIdstring设备标识
sdkVersionstringSDK 版本号

deviceProfile 字段:

字段类型说明
buildFingerprintstringAndroid: Build.FINGERPRINT; iOS: 机型+系统版本
installedAppsHashstring已安装常见 App 的 MD5 hash
sensorListHashstring设备传感器列表的 MD5 hash
brandstring品牌
modelstring型号
devicestring设备名(Android)
productstring产品名(Android)
hardwarestring硬件名(Android)
abisstringCPU 架构(Android)

响应示例:

{
  "code": 0,
  "msg": "ok",
  "data": {
    "deviceId": "dp_xxxx",
    "isNewDevice": true
  }
}

事件上报

POST /api/v1/event/track

上报单个用户行为事件。

参数类型必填说明
appKeystring应用 Key
deviceIdstring设备标识
eventNamestring事件名称
eventTypeint事件类型:1=下载, 2=安装, 3=打开, 4=注册, 5=留存, 6=付费
eventTimestringISO 8601 时间,默认当前时间
propertiesobject事件属性

批量事件上报

POST /api/v1/event/batch

批量上报事件,单次最多 50 条。

参数类型必填说明
appKeystring应用 Key
eventsarray事件数组(结构同单条上报)

mobileconfig 生成

GET /api/v1/mobileconfig/generate

生成 iOS WebClip 配置文件。

参数类型必填说明
appKeystring应用 Key
inviteCodestring邀请码
channelstring渠道标识

返回 Content-Type: application/x-apple-aspen-config


Admin API

登录

POST /admin/auth/login
参数类型必填
usernamestring
passwordstring

响应:

{
  "code": 0,
  "data": {
    "token": "eyJ...",
    "user": { "id": 1, "username": "admin", "role": "super_admin" }
  }
}

个人信息

GET /admin/auth/profile

返回当前登录用户信息。


租户管理

方法路径说明权限
GET/admin/tenants租户列表super_admin
POST/admin/tenants创建租户super_admin
PUT/admin/tenants/:id更新租户super_admin

应用管理

方法路径说明
GET/admin/apps应用列表
POST/admin/apps创建应用
PUT/admin/apps/:id更新应用
POST/admin/apps/:id/reset-secret重置 Secret

渠道管理

方法路径说明
GET/admin/channels渠道列表
POST/admin/channels创建渠道
PUT/admin/channels/:id更新渠道

数据统计

方法路径说明
GET/admin/stats/overview概览(今日/总量)
GET/admin/stats/attribution归因统计(按天/渠道/场景)
GET/admin/stats/events事件统计
GET/admin/stats/funnel转化漏斗

统计通用参数:

参数类型说明
appIdint按应用筛选
daysint时间范围(默认 7,最大 90)
groupBystring分组方式:day / channel / scene
channelstring渠道筛选(仅漏斗)

匹配日志

方法路径说明
GET/admin/match-logs日志列表(分页)
GET/admin/match-logs/:id日志详情

列表参数:

参数类型说明
appIdint按应用筛选
scenestring按场景筛选
matchedint0=未匹配, 1=已匹配
competitiveint1=仅竞争匹配
pageint页码
sizeint每页条数(最大 100)

频率限制

所有 SDK API 接口受双层频率限制保护:

限制维度默认限额说明
appKey1000 次/分钟按应用限流
IP120 次/分钟按客户端 IP 限流

超出限制返回 HTTP 429,响应头包含 Retry-After

租户可在管理后台自定义 appKey 层级的限额。


错误码

code说明
0成功
401认证失败(appKey 无效 / Token 过期)
403权限不足
404资源不存在
409资源冲突(如用户名已存在)
422参数校验失败
429请求频率超限
500服务器内部错误