用户

如何管理和控制用户数据。

用户

在项目中搜索用户。按属性(用户 id、email、国家/地区等)进行筛选,可选择性地使用自由文本 query 进行缩小范围,并对结果进行分页。

POST

/public/:projectKey/users

NameTypeDescription
projectKeystring项目密钥(必填)
qstring可选的自由文本查询(URL 查询参数)。当同时提供 qquery(请求体)时,q 优先生效。
NameTypeDescription
filtersarray筛选器列表(可选)
querystring针对用户 id / email / 名称的自由文本查询(最多 100)
startTimestampepoch (ms)时间窗口的起点(可选,最小 946684800000)
endTimestampepoch (ms)时间窗口的终点(可选,> startTimestamp)
limitinteger每页数量,1-200(可选,默认值:50)
pageinteger页码,从 1 开始(可选,默认值:1)
sortBystring用于排序的用户列(可选)
sortOrderstringascdesc(可选)
columnsarray要包含在响应中的额外用户列

Authorization: Bearer {YOUR_ORGANIZATION_API_KEY}

curl -X POST \
  {BASE_URL}/public/3sWXSsqHgSKnE87YkNJK/users \
  -H 'content-type: application/json' \
  -H 'Authorization: Bearer {YOUR_ORGANIZATION_API_KEY}' \
  --data-raw '{
    "query": "mickael",
    "limit": 50,
    "page":  1,
    "sortOrder": "desc"
  }'
{
  "data": {
    "total": 1,
    "users": [
      {
        "$user_id": "mickael@openreplay.com",
        "$email": "mickael@openreplay.com",
        "$name": "Mickael",
        "$first_name": "Mickael",
        "$last_name": "",
        "$created_at": 1623440822825,
        "$last_seen": 1623689478617
      }
    ]
  }
}

获取特定用户的身份属性和概要统计信息。

GET

/public/:projectKey/users/:userId

NameTypeDescription
projectKeystring项目密钥(必填)
userIdstring通过 tracker.setUserID 设置的 ID(必填,最多 256)

Authorization: Bearer {YOUR_ORGANIZATION_API_KEY}

200:响应以 JSON 形式在请求体中发送
400:无效的 userId(为空或 > 256 个字符)
404:未找到用户

curl -X GET \
  {BASE_URL}/public/3sWXSsqHgSKnE87YkNJK/users/mickael@openreplay.com \
  -H 'Authorization: Bearer {YOUR_ORGANIZATION_API_KEY}'
{
  "data": {
    "$user_id": "mickael@openreplay.com",
    "$email": "mickael@openreplay.com",
    "$name": "Mickael",
    "$first_name": "Mickael",
    "$last_name": "",
    "$phone": "",
    "$avatar": "",
    "$created_at": 1623440822825,
    "distinct_ids": ["15bd70f6-aedf-4544-8ae6-57eb66398e94"],
    "$country": "FR",
    "$state": "",
    "$city": "",
    "$first_event_at": 1623440822825,
    "$last_seen": 1623689478617
  }
}

删除某个用户及其所有关联数据。这会调度一个后台作业;响应中包含 jobId,你可以通过 Jobs API 进行轮询。

DELETE

/public/:projectKey/users/:userId

NameTypeDescription
projectKeystring项目密钥(必填)
userIdstring通过 tracker.setUserID 设置的 ID(必填,最多 256)

Authorization: Bearer {YOUR_ORGANIZATION_API_KEY}

200:作业已调度,在请求体中返回
400:无效的 userId(为空或 > 256 个字符)
409:该用户的删除作业已被调度或正在运行

curl -X DELETE \
  {BASE_URL}/public/3sWXSsqHgSKnE87YkNJK/users/mickael@example.com \
  -H 'Authorization: Bearer {YOUR_ORGANIZATION_API_KEY}'
{
  "data": {
    "jobId": 22345,
    "description": "Delete user sessions of userId = mickael@example.com",
    "status": "scheduled",
    "projectId": 1,
    "action": "delete_user_data",
    "referenceId": "mickael@example.com",
    "createdAt": 1623912962910,
    "updatedAt": null,
    "startAt": 1623954600000,
    "errors": null
  }
}

更改回放文件的删除时间?

Section titled 更改回放文件的删除时间?

删除作业是一个 2 步过程:首先,会话及其级联事件会在夜间从数据库中删除。其次,回放文件会被调度为在对象存储中过期(30 天后)。

如果你使用的是 minio(默认安装),并希望更改默认的过期/生命周期策略,请按照以下说明操作:

  1. 在你的服务器上,运行 openreplay -e
  2. chalice 部分下,定义一个名为 SCH_DELETE_DAYS 的新环境变量,其值等于你希望在删除前保留回放文件的天数(大于或等于 0)
  3. 使用 :wq 保存并退出
  4. 运行 k9s -n db
  5. 使用键盘方向键浏览列表并定位到 minio-* 容器
  6. s 以获取对 Minio(对象存储)容器的 shell 访问权限
  7. 运行 mc alias set minio http://localhost:9000 $MINIO_ACCESS_KEY $MINIO_SECRET_KEY
  8. 若要在删除作业执行 14 天后删除回放文件
export EXPIRATION_DAYS=14
mc ilm add --expiry-days $EXPIRATION_DAYS --tags "to_delete_in_days=${EXPIRATION_DAYS}" minio/mobs
  1. 使用 exit 退出 Minio 容器
  2. 运行 :quit 退出 Kubernetes CLI