文件
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 匹配用户 
可以为空,upload_filename 有值时必须传true:保留上传文件中不在全量表中的用户,会将这部分用户同步到全量表
user.$first_id 按照设备 ID 同步用户user.$second_id 按照登录 ID 同步用户false:仅保留上传文件中存在于全量表中的用户 | 
|  | 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
查询目录
返回值: