文件
1.1 文件上传
API 说明
上传文件,支持文件切割分片上传
URL: /api/v2/sps/file/upload
Method: POST
Request
RequestHeader:
key |
value |
描述 |
Content-Type |
multipart/form-data |
|
Cookie |
api_server_id |
api_server_id 的值在 8 个字符以内
分片上传时,需要保证同一个文件的分片请求中的 api_server_id 的值是一样的
|
tips:
集群环境,进行分片上传的时候,需要保证所有的分片请求打到同一台机器;
可以将分片请求的第一次请求返回的结果中的全部 http header 信息,在后续分片请求的 http header 中传入,来保证所有分片请求打到同一台服务器。
key |
type |
value |
required |
description |
project |
string |
例: default |
true |
项目英文名 |
token |
string |
例:75eb2cfcbb73c40dd106d3d2f75628920517d77726b01400487326722d1082ac |
true |
token 获取文档
|
file_size |
integer |
例:1024 |
true |
文件总大小(字节),用于判断文件大小限制和磁盘剩余空间是否足够,不用于判断文件完整性,不得大于 2 GB(2147483648L)。
单次上传的文件大小不能超过 100 M,超过 100 M 需要将文件切片上传。
|
slice_amount |
integer |
例:1 |
true |
文件总数量(切片的时候,该值大于 1) |
index |
integer |
例:0 |
true |
文件索引(第几个文件),从 0 开始 |
file_name |
string |
例:test.txt |
true |
文件名称(同一批文件名称需一致) |
file_md5 |
string |
例:2724581a42dae8d9f71544c6fdaf3216 |
true |
整个文件的 md5 值 |
current_md5 |
string |
例:c1afb715b12ac8caf3df0aead131d251 |
true |
(切片文件上传时候,指定当前分配的 MD5)当前文件的 md5 值 |
RequestBody:
key |
type |
value |
required |
description |
file |
file |
|
true |
文件内容;文件内容超过 100 M 需要分片上传 |
Response
ResponseBody:
key
|
type |
value
|
description
|
is_finished |
boolean |
true/false |
是否完成全部文件上传 |
file_name |
string |
|
最终存储在服务器上的临时文件名称,只有 is_finished = true 时才会返回该字段 |
error |
string |
|
上传文件失败时的异常信息 |
使用 curl 命令模拟请求 API
上传第一个文件,文件内容为:
curl 命令:
返回值:
上传第二个文件,文件内容为:
curl 命令:
返回值:
1.1.7. java 样例
使用 Java 代码调用 API
1.1.8 postman 样例



2. 标签
2.1. ID 上传创建标签
API 说明
通过上传文件创建标签,支持选择是否将文件中不在当前全量用户列表中的 ID 同步到全量表中。
通过上传 用户属性与属性对应的标签值 来筛选目标用户并给用户打标签,通过属性筛选用户的方式分为两种:
- 若上传文件中用户属性为 设备 ID/登录 ID 可通过 ID 匹配或保留全部上传 ID 的方式筛选目标用户
- 若上传文件中用户属性为用户的其他属性,只能通过属性匹配的方式筛选目标用户
示例:

Method: PUT
Request
RequestParam:
key
|
type |
value
|
required |
description
|
project |
string |
例: default |
true |
项目英文名 |
token |
string |
|
true |
token 获取文档 |
RequestHeader:
key
|
value
|
Content-Type |
application/json;charset=utf-8 |
RequestBody:
key
|
type |
value
|
required
|
description
|
name |
|
string |
例:user_tag_1 |
true |
标签英文名(唯一标识名)
必须以 user_tag_ 开头
|
cname |
|
string |
例:标签1 |
true |
标签中文名(显示名) |
data_type |
|
string |
例:STRING、BOOL、LIST、NUMBER、DATETIME |
true |
标签值的数据类型 |
source_type |
|
integer |
|
true |
固定值:5 |
status |
|
string |
|
true |
固定值:RUNNING |
dir_id
|
|
integer |
例:1 |
true |
标签目录 ID,默认放置于未分类目录
通过下文 2.4.2 描述的接口:/api/v2/sps/user_tag_di/ 获取目录信息
|
upload_content |
|
object |
|
true |
标签上传规则信息 |
|
upload_filename |
string |
例:dGVzdDEwMy50eHQCVuSFdUoQ |
false |
上传文件产生的临时文件名,由上传文件的接口返回
该项为空时表示只创建标签,暂不上传文件
|
|
matched_field |
string |
|
false |
需要上传的属性,通过属性匹配来筛选目标用户:
可选值 user.$first_id、user.$second_id、以及其他用户列表中的属性
可以为空,upload_filename 有值时必须传
|
|
sync_profile |
boolean |
例:true/false |
false |
是否保留上传文件中不在全量列表中的用户:
只在 matched_field 选择 user.$first_id、user.$second_id 时生效,选择其他属性不支持将属性同步到全量用户列表。
使用 user.$first_id、user.$second_id 都是使用 distinct_id 匹配用户
- true:保留上传文件中不在全量表中的用户,会将这部分用户同步到全量表
- user.$first_id 按照 设备 ID 同步用户
- user.$second_id 按照 登录 ID 同步用户
- false:仅保留上传文件中存在于全量表中的用户
可以为空,upload_filename 有值时必须传
|
|
upload_type |
string |
|
false |
固定值:CREATE
可以为空,upload_filename 有值时必须传
|
|
data_format |
string |
|
false |
文件内容格式,固定值:JSON、CSV_FILE、LINE_OF_DISTINCT_ID
JSON:json 格式;property 表示匹配属性值,value 表示标签值,类型需要跟「-t --data_type」的类型保持一致;分群的 value 固定为 true;例如:{"property":"xxxxx","value":"xxxx"}
CSV_FILE:csv 文件格式,逗号分割;第一列表示匹配属性值;第二例为标签值, LIST 类型的标签值用「、」分割;例如:
749f8ca636a8a098,北京、上海、广州
LINE_OF_DISTINCT_ID:仅支持一列,一行即为一列;仅支持分群或 BOOL 类型的标签
可以为空,upload_filename 有值时必须传
|
Response
HTTP 状态码返回 200 即算创建成功
使用 curl 命令模拟请求 API
curl 命令:
返回值:
标签
API 说明
修改标签信息,支持修改标签中文名;支持文件上传重新计算标签。
Method: POST
Request
RequestParam:
key |
type |
value |
required |
description |
project |
string |
例: default |
true |
项目英文名 |
token |
string |
|
true |
token 获取文档 |
PathVariable
key |
type |
value |
required |
description |
id |
integer |
例:1 |
true |
url 路径变量,标签的 id |
RequestHeader:
key |
value |
Content-Type |
application/json;charset=utf-8 |
RequestBody
key |
type |
value |
required |
description |
name |
|
string |
|
true |
标签英文名(唯一标识名)
必须以 user_tag_ 开头 不能修改,传创建时的值 |
cname |
|
string |
例:标签1 |
true |
修改后的标签中文名(显示名) |
data_type |
|
string |
|
true |
标签的数据类型,不能修改,传创建时的值 |
dir_id |
|
string |
|
true |
标签目录 ID,建议传创建标签时的值;跟创建时的值不一样时,会更新 |
source_type |
|
integer |
|
true |
固定值:5 |
upload_content |
|
object |
|
false |
重新上传文件时,必须传。 |
|
upload_filename |
string |
例:dGVzdDEwMy50eHQCVuSFdUoQ |
false |
上传文件产生的临时文件名,由上传文件的接口返回 |
|
matched_field |
string |
|
false |
需要上传的属性,通过属性匹配来筛选目标用户:
可选值 user.$first_id、user.$second_id、以及其他用户列表中的属性
可以为空,upload_filename 有值时必须传 |
|
sync_profile |
boolean |
例:true/false |
false |
是否保留上传文件中不在全量列表中的用户:
只在 matched_field 选择 user.$first_id、user.$second_id 时生效,选择其他属性不支持将属性同步到全量用户列表。
使用 user.$first_id、user.$second_id 都是使用 distinct_id 匹配用户
- true:保留上传文件中不在全量表中的用户,会将这部分用户同步到全量表
- user.$first_id 按照设备 ID 同步用户
- user.$second_id 按照登录 ID 同步用户
- false:仅保留上传文件中存在于全量表中的用户
可以为空,upload_filename 有值时必须传 |
|
upload_type |
string |
|
false |
可选值:CREATE、OVERWRITE
CREATE:第一次上传
OVERWRITE:覆盖上传
可以为空,upload_filename 有值时必须传 |
|
data_format |
string |
|
false |
文件内容格式,固定值:JSON、CSV_FILE、LINE_OF_DISTINCT_ID
JSON:json 格式;property 表示匹配属性值,value 表示标签值,类型需要跟「-t --data_type」的类型保持一致;分群的 value 固定为 true;例如:{"property":"xxxxx","value":"xxxx"}
CSV_FILE:csv 文件格式,逗号分割;第一列表示匹配属性值;第二例为标签值, LIST 类型的标签值用「、」分割;例如:
749f8ca636a8a098,北京、上海、广州
LINE_OF_DISTINCT_ID:仅支持一列,一行即为一列;仅支持分群或 BOOL 类型的标签
可以为空,upload_filename 有值时必须传 |
|
base_time |
string |
例:日期格式 yyyy-MM-dd |
false |
操作指定日期的数据 |
Response
HTTP 状态码返回 200 即算调用成功
使用 curl 命令模拟请求 API
curl 命令:
返回值:
2.3. 创建标签目录
2.3.1. API 说明
创建一个标签目录,标签目录名称不能重复。
URL: /api/v2/sps/user_tag_dir
Method: POST
Request
RequestParam:
key |
type |
value |
required |
description |
project |
string |
例: default |
true |
项目英文名 |
token |
string |
|
true |
token 获取文档 |
parents |
boolean |
|
false |
默认 false
为 true 时,效果类似 mkdir -p 创建多级目录
|
RequestHeader:
key |
value |
Content-Type |
application/json;charset=utf-8 |
RequestBody:
key |
type |
value |
required |
description |
id |
|
integer |
例:1 |
false |
目录 ID |
cname |
|
string |
例:标签目录 1 |
true |
目录名 |
type |
|
string |
例:DIR |
true |
类型,固定:DIR |
parent |
|
object |
|
false |
上级目录,创建子目录时必传;不传默认为一级目录(跟「未分类」目录同级)
|
|
id |
integer |
例:1 |
false |
上级目录中的 ID,RequestParam 中的 parents 参数为 false 时,必传 |
|
cname |
string |
例:上级目录 1 |
true |
上级目录中的目录名 |
|
type |
string |
例:DIR |
true |
上级目录中的类型,固定值:DIR |
|
parent |
object |
|
false |
上级目录,结构同上 |
2.3.5. Response
HTTP 状态码返回 200 即算创建成功
使用 curl 命令模拟请求 API
创建一级目录
curl 'http://127.0.0.1:8107/api/v2/sps/user_tag_dir?project=default&token=0cde93ddaa12fb940f7dacc93fd00db394a213a56f820c5bb00aaa8acf4ed156&parents=false' \
-X 'POST' \
-H 'Content-Type: application/json' \
--data-binary '{"cname":"测试100","type":"DIR"}' \
--compressed \
--insecure
返回值:
{"id": 61, "cname": "测试100", "type": "DIR" }
创建子目录一:
curl 'http://127.0.0.1:8107/api/v2/sps/user_tag_dir?project=default&token=0cde93ddaa12fb940f7dacc93fd00db394a213a56f820c5bb00aaa8acf4ed156&parents=false' \
-X 'POST' \
-H 'Content-Type: application/json' \
--data-binary '{"cname":"测试300","type":"DIR","parent":{"id":1,"cname":"未分类","type":"DIR"}}' \
--compressed \
--insecure
返回值:
{"id": 62, "cname": "测试300", "type": "DIR", "parent": {"id": 1, "cname": "未分类", "type": "DIR"} }
创建子目录二:
curl 'http://127.0.0.1:8107/api/v2/sps/user_tag_dir?project=default&token=0cde93ddaa12fb940f7dacc93fd00db394a213a56f820c5bb00aaa8acf4ed156&parents=false' \
-X 'POST' \
-H 'Content-Type: application/json' \
--data-binary '{"cname":"测试400","type":"DIR","parent":{"id": 62, "cname": "测试300", "type": "DIR", "parent": {"id": 1, "cname": "未分类", "type": "DIR"} }}' \
--compressed \
--insecure
返回值:
{"id": 63, "cname": "测试400", "type": "DIR", "parent": {"id": 62, "cname": "测试300", "type": "DIR", "parent": {"id": 1, "cname": "未分类", "type": "DIR"} }}
创建多级目录
# 注意 RequestParma 中的 parents 的值是 true
curl 'http://127.0.0.1:8107/api/v2/sps/user_tag_dir?project=default&token=0cde93ddaa12fb940f7dacc93fd00db394a213a56f820c5bb00aaa8acf4ed156&parents=true' \
-X 'POST' \
-H 'Content-Type: application/json' \
--data-binary '{"cname": "测试多级", "type": "DIR", "parent": {"cname": "父级二", "type": "DIR", "parent": {"cname": "父级一", "type": "DIR"} }}' \
--compressed \
--insecure
返回值:
{"id": 65, "cname": "测试多级", "type": "DIR", "parent": {"id": 64, "cname": "父级二", "type": "DIR", "parent": {"id": 63, "cname": "父级一", "type": "DIR"} }}
2.4. 查询标签目录
2.4.1. API 说明
查询所有的标签目录
URL: /api/v2/sps/user_tag_dir
Method: GET
Request
RequestParam:
key
|
type |
value
|
required |
description
|
project |
string |
例: default |
true |
项目英文名 |
token |
string |
|
true |
token 获取文档
|
need_user_tag |
boolean |
|
true |
固定值:false
|
Response
http 状态码返回 200 即算调用成功
使用 curl 命令模拟请求 API
查询目录
返回值: