搜索

搜索页面内容、功能和服务

今日水印相机api技术文档

1 简介

1.1 什么是今日水印相机api

开放平台支持今日水印相机用户自有系统接入,照片资源与水印信息等数据可同步至自有系统,获得对数据的二次开发的能力,从而满足各类定制化需求。

1.2 今日水印相机api能做什么

初步开放以下功能,更多功能正在逐步开发中。 - 获取照片数据 - 获取水印数据 - 团队组织架构

1.3 今日水印相机api的安全保障说明

开放平台 api 数据传输全程加密(密钥按月更新,可以支持更高安全标准的密钥动态下发),用户通过开放平台 api 传输的数据全程不存储、不落库,保证用户数据隐私和安全,系统全流程符合国家三级等保标准,系统无被入侵风险,数据无泄漏风险。

2. 接入流程图

目前支持两种接入方式:主动拉取数据,webhook推送数据

2.1 主动拉取数据

png2

2.2 webhook推送数据

通过提供webhook的domain,与开放平台建立绑定关系。一旦有新数据更新时,会自动将增量数据推送至自建系统。

文档插图

3. 开放平台加签流程

对接沟通后,我们会给提供跟团队绑定的唯一key和secret。

3.1 加签流程

以v2/department/sublist接口为例:

  1. 接口请求参数为:
{
  "departmentID": 1
}
  1. 将该请求参数序列化并进行一次签名,目前仅支持HmacSha256算法,签名函数如下:
// data是加密的内容
func sign(data string, groupSecret string) (ret string) {
    hmacObj := hmac.New(sha256.New, []byte(groupSecret))
    hmacObj.Write([]byte(data))
    ret = base64.StdEncoding.EncodeToString(hmacObj.Sum(nil))
    return ret
}
  1. 把groupKey、参数签名(第二步的结果)、timestamp拼接为一个字符串
timestamp := time.Now().Unix()
groupKey := "groupKey"
str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
    groupKey,
    sign,
    strconv.FormatInt(timestamp, 10),
)
  1. 把第三步拼接后的字符串再进行一次签名,并得到最终签名。
signature := sign(str, "groupSecret")
  1. 把对应的信息设置至header头中。
req, _ := http.NewRequest(http.MethodGet, "url", nil)
req.Header.Set("GroupKey", groupKey)
req.Header.Set("Timestamp", strconv.FormatInt(timestamp, 10))
req.Header.Set("Signature", signature)

完整Http客户端代码如下:

func main() {
    data := map[string]interface{}{
        "departmentID": 1,
    }
    buf, _ := json.Marshal(data)
 
    groupKey := "groupKey"       // 需申请
    groupSecret := "groupSecret" // 需申请
    dataSign := sign(string(buf), groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    // sign为加签流程中定义的函数
    signature := sign(str, groupSecret)
 
    url := "https://openapi.xhey.top/v2/department/sublist"
 
    client := &http.Client{}
    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(buf))
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    _, _ = client.Do(req)
}
 
func sign(source string, groupSecret string) string {
    hmacObj := hmac.New(sha256.New, []byte(groupSecret))
    hmacObj.Write([]byte(source))
    return base64.StdEncoding.EncodeToString(hmacObj.Sum(nil))
}
 

Python版本

# -*- coding: utf-8 -*-
import json
import requests
import hashlib
import time
import base64
import hmac
 
 
# 计算签名
def generate_signature(data, secret_key):
    hmac_obj = hmac.new(secret_key.encode('utf-8'), data.encode('utf-8'), hashlib.sha256)
    return base64.b64encode(hmac_obj.digest()).decode('utf-8')
 
 
# 请求数据
data = {
    "departmentID": 1,
}
 
json_data = json.dumps(data)
 
group_secret = "groupSecret"
group_key, timestamp = "groupKey", str(int(time.time()))
data_sign = generate_signature(json_data, group_secret)
 
str_to_sign = "groupKey={0}&sign={1}&timestamp={2}".format(group_key, data_sign, timestamp)
 
signature = generate_signature(str_to_sign, group_secret)
 
url = "https://openapi.xhey.top/v2/department/sublist"
 
# 构建请求头
headers = {
    "GroupKey": group_key,
    "Timestamp": timestamp,
    "Signature": signature
}
 
# 发送HTTP POST请求
response = requests.post(url, data=json_data, headers=headers)
 

3.2 Webhook推送

前提:配置了webhook地址的团队也必须申请groupKey以及groupSecret,否则无法进行签名验证。

  1. 获取header头中的Timestamp、GroupKey、Signature。
  2. 校验Timestamp、GroupKey是否合法。(Timestamp校验规则由接入方自行定义)
  3. 获取当前请求参数,并通过GroupKey对应的GroupSecret生成DataSign。
  4. GroupKey、DataSign、Timestamp拼接成一个字符串并通过GroupSecret生成最终的Signature
  5. 校验第四步生成的Signature是否与header中的Signature一致

参考代码:

body, _ := ioutil.ReadAll(c.Request.Body)
timestamp := c.GetHeader("Timestamp")
// 校验时间戳
groupKey := c.GetHeader("GroupKey")
// 通过groupKey获取groupSecret
dataSign := sign(string(body), "groupSecret")
 
str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
    groupKey,
    dataSign,
    timestamp,
)
signature := sign(str, "groupSecret")
 
return signature == c.GetHeader("Signature")

4. API总览

  • 获取团队成员id列表
  • 获取团队下一级部门列表
  • 获取子部门列表
  • 查询部门信息
  • 获取部门成员列表
  • 用户信息查询
  • 批量查询用户信息
  • 获取团队照片
  • 多维度查询团队照片
  • 根据照片id获取团队照片水印数据
  • 根据时间获取团队照片水印数据
  • 创建商品识别任务
  • 获取商品识别结果

5. API列表

5.1 获取团队成员id列表

获取团队成员id列表

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/group/user/idList

返回参数

名称类型示例值描述
codeInteger200状态码
msgStringsuccess状态码对应的提示内容
data[]String["open_6e13763f_68d4_49d1_9178_06998191a5c8"]返回数据
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/group/user/idList

请求示例(Golang API)

    url := "https://openapi.xhey.top/v2/group/user/idList"
 
    groupSecret := "groupSecret"// 需申请
    groupKey := "groupKey"// 需申请
    dataSign := sign("", groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    signature := sign(str, groupSecret)
    req, _ := http.NewRequest("POST", url, nil)
    req.Header.Add("Content-Type", "application/json")
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    client := &http.Client{}
    defer client.CloseIdleConnections()
    resp, err := client.Do(req)
 
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
 
    var buf bytes.Buffer
    _, err = buf.ReadFrom(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println(buf.String())

返回示例

{
    "code": 200,
    "msg": "success",
    "data": ["open-06ns8591-02pr-941q-n81r-snn8340598r5","open-3q3p3182-p7s6-90nr-4044-s5nq3ro9n6n5"],
    "timestamp": 1629099324
}

5.2 获取团队下一级部门列表

调用本接口获取团队下的所有直属子部门列表。

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/group/sublist

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
data[]Object返回内容
|—idInteger17部门id
|—groupIDInteger42180013团队id
|—nameString后勤处部门名称
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/group/sublist

请求示例(Golang API)

    url := "https://openapi.xhey.top/v2/group/sublist"
 
    groupSecret := "groupSecret" // 需申请
    groupKey := "groupKey"       // 需申请
    dataSign := sign("", groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    signature := sign(str, groupSecret)
    req, _ := http.NewRequest("POST", url, nil)
    req.Header.Add("Content-Type", "application/json")
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    client := &http.Client{}
    defer client.CloseIdleConnections()
    resp, err := client.Do(req)
 
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
 
    var buf bytes.Buffer
    _, err = buf.ReadFrom(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println(buf.String())

返回示例

{
    "code": 200,
    "msg": "success",
    "data": [{
        "id": 1,
        "groupID": 42180013,
        "name": "后勤处"
    }, {
        "id": 4,
        "groupID": 42180013,
        "name": "测试部门"
    }],
    "timestamp": 1629101164
}

5.3 获取某部门的子部门列表

通过部门id调用本接口,获取该部门下的所有直属子部门列表。

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/department/sublist

Body参数

名称类型是否必填示例值描述
departmentIDInteger241父部门id

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
data[]Object返回内容
|—idInteger981090726部门id
|—parentIDInteger241父部门id
|—nameString后勤处部门名称
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/department/sublist

请求示例(Golang API)

    reqStr := `{
        "departmentID": 46
    }`
    reader := bytes.NewReader(([]byte)(reqStr))
 
    url := "https://openapi.xhey.top/v2/department/sublist"
 
    groupSecret := "groupSecret" // 需申请
    groupKey := "groupKey"       // 需申请
    dataSign := sign(reqStr, groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    signature := sign(str, groupSecret)
    req, _ := http.NewRequest("POST", url, reader)
    req.Header.Add("Content-Type", "application/json")
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    client := &http.Client{}
    defer client.CloseIdleConnections()
    resp, err := client.Do(req)
 
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
 
    var buf bytes.Buffer
    _, err = buf.ReadFrom(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println(buf.String())

返回示例

{
    "code": 200,
    "msg": "success",
    "data": [{
        "id": 18,
        "parentID": 17,
        "name": "保安部门"
    },{
        "id": 73,
        "parentID": 17,
        "name": "测试部门2"
    }],
    "timestamp": 1629101550
}

5.4 查询部门信息

通过部门id调用本接口,获取该部门的详情信息。

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/department/info

Body参数

名称类型是否必填示例值描述
departmentIDInteger241父部门id

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
dataObject返回内容
|—idInteger981090726部门id
|—parentIDInteger241父部门id
|—avatarStringhttps://net-cloud.xhey.top/group/photo/a3bc63de58978dcb328ed84115d122c9.jpg部门头像
|—nameString后勤处部门名称
|—containSubDeptBooleanfalse是否包含下级部门
|—memberNumInteger166部门成员数
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/department/info

请求示例(Golang API)

    reqStr := `{
        "departmentID": 46
    }`
    reader := bytes.NewReader(([]byte)(reqStr))
 
    url := "https://openapi.xhey.top/v2/department/info"
 
    groupSecret := "groupSecret" // 需申请
    groupKey := "groupKey"       // 需申请
    dataSign := sign(reqStr, groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    signature := sign(str, groupSecret)
    req, _ := http.NewRequest("POST", url, reader)
    req.Header.Add("Content-Type", "application/json")
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    client := &http.Client{}
    defer client.CloseIdleConnections()
    resp, err := client.Do(req)
 
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
 
    var buf bytes.Buffer
    _, err = buf.ReadFrom(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println(buf.String())

返回示例

{
    "code": 200,
    "msg": "success",
    "data": {
        "id": 17,
        "parentID": 3,
        "avatar": "https://net-cloud.oss-cn-beijing.aliyuncs.com/icon/department-av.jpg",
        "name": "后勤处",
        "containSubDept": false,
        "memberNum": 166
    },
    "timestamp": 1629101848
}

5.5 获取部门成员列表

通过部门id调用本接口,获取该部门的详情信息。

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/department/userList

Body参数

名称类型是否必填示例值描述
departmentIDInteger17部门id
pageSizeInteger100支持分页查询,每页条目数,如果不传,默认值为1000
pageNoInteger1支持分页查询,分页页码,如果不传,默认值为1

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
data[]Object返回内容
|—hasMoreBooleantrue是否还有下一页数据
|—nextPageNoInteger2下一页的页码
|—users[]Object成员信息列表
|——userIDIntegeropen_6e13763f_68d4_49d1_9178_06998191a5c8用户id
|——nicknameStringzackhuang昵称
|——headImgUrlStringhttps://net-cloud.xhey.top/group/headimg/avatar_default_1_d0b9ef45-a1de-42f8-82f6-8f4d674a8b07.jpeg头像地址
|——mobileString18604xxxxxx手机号码
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/department/userList

请求示例(Golang API)

    reqStr := `{
        "departmentID": 46,
        "pageSize": 100,
        "pageNo": 1
    }`
    reader := bytes.NewReader(([]byte)(reqStr))
 
    url := "https://openapi.xhey.top/v2/department/userList"
 
    groupSecret := "groupSecret" // 需申请
    groupKey := "groupKey"       // 需申请
    dataSign := sign(reqStr, groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    signature := sign(str, groupSecret)
    req, _ := http.NewRequest("POST", url, reader)
    req.Header.Add("Content-Type", "application/json")
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    client := &http.Client{}
    defer client.CloseIdleConnections()
    resp, err := client.Do(req)
 
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
 
    var buf bytes.Buffer
    _, err = buf.ReadFrom(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println(buf.String())

返回示例

{
    "code": 200,
    "msg": "success",
    "data": {
        "hasMore": false,
        "nextPageNo": 0,
        "users": [{
            "userID": "open-81415183-2024-961s-n43s-4s98o566pr34",
            "nickname": "zackhuang",
            "headImgUrl": "https://net-cloud.xhey.top/group/headimg/avatar_default_1_44c84097-f99c-4603-aaf5-49ff10b1b8a0.jpeg",
            "mobile": "18801611111"
        }]
    },
    "timestamp": 1629102955
}

5.6 团队成员信息查询

通过用户id调用本接口,获取用户的详情信息。

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/user/info

Body参数

名称类型是否必填示例值描述
userIDStringopen_6e13763f_68d4_49d1_9178_06998191a5c8用户id

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
dataObject返回内容
|—userIDStringopen_6e13763f_68d4_49d1_9178_06998191a5c8用户id
|—nicknameStringzackhuang昵称
|—headImgUrlStringhttps://net-cloud.xhey.top/group/headimg/avatar_default_1_d0b9ef45-a1de-42f8-82f6-8f4d674a8b07.jpeg头像地址
|——mobileString18604xxxxxx手机号码
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/user/info

请求示例(Golang API)

    reqStr := `{
        "userID": "open-991733sq-3pqr-988q-o816-5n98r988sqrn"
    }`
    reader := bytes.NewReader(([]byte)(reqStr))
 
    url := "https://openapi.xhey.top/v2/user/info"
 
    groupSecret := "groupSecret" // 需申请
    groupKey := "groupKey"       // 需申请
    dataSign := sign(reqStr, groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    signature := sign(str, groupSecret)
    req, _ := http.NewRequest("POST", url, reader)
    req.Header.Add("Content-Type", "application/json")
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    client := &http.Client{}
    defer client.CloseIdleConnections()
    resp, err := client.Do(req)
 
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
 
    var buf bytes.Buffer
    _, err = buf.ReadFrom(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println(buf.String())

返回示例

{
    "code": 200,
    "msg": "success",
    "data": {
        "userID": "open-991733sq-3pqr-988q-o816-5n98r988sqrn",
        "nickname": "zackhuang",
        "headImgUrl": "https://net-cloud.xhey.top/group/headimg/avatar_default_1.jpeg",
        "mobile": "18602222221"
    },
    "timestamp": 1629102431
}

5.7 批量查询团队成员信息

批量传入用户id,获取用户详细信息 最大支持一次查询1000条员工信息

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/user/infos

Body参数

名称类型是否必填示例值描述
userIDs[]String["open_6e13763f_68d4_49d1_9178_06998191a5c8","open_6e13763f_68d4_49d1_9178_06998191a5c8"]用户id

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
dataObject返回内容
|—userInfos[]Object成员信息集合
|———userIDStringopen_6e13763f_68d4_49d1_9178_06998191a5c8用户id
|———nicknameStringzackhuang昵称
|———headImgUrlStringhttps://net-cloud.xhey.top/group/headimg/avatar_default_1_d0b9ef45-a1de-42f8-82f6-8f4d674a8b07.jpeg头像地址
|————mobileString18604xxxxxx手机号码
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/user/infos

请求示例(Golang API)

	reqStr := `{
	    "userIDs": ["open-991733sq-3pqr-988q-o816-5n98r988sqrn"]
	}`
	reader := bytes.NewReader(([]byte)(reqStr))
 
	url := "https://openapi.xhey.top/v2/user/infos"
 
	groupSecret := "groupSecret" // 需申请
	groupKey := "groupKey"       // 需申请
	dataSign := sign(reqStr, groupSecret)
	timestamp := strconv.FormatInt(time.Now().Unix(), 10)
	str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
		groupKey,
		dataSign,
		timestamp,
	)
	signature := sign(str, groupSecret)
	req, _ := http.NewRequest("POST", url, reader)
	req.Header.Add("Content-Type", "application/json")
	req.Header.Set("GroupKey", groupKey)
	req.Header.Set("Timestamp", timestamp)
	req.Header.Set("Signature", signature)
 
	client := &http.Client{}
	defer client.CloseIdleConnections()
	resp, err := client.Do(req)
 
	if err != nil {
		fmt.Println(err)
		return
	}
	defer resp.Body.Close()
 
	var buf bytes.Buffer
	_, err = buf.ReadFrom(resp.Body)
	if err != nil {
		fmt.Println(err)
		return
	}
 
	fmt.Println(buf.String())

返回示例

{
    "code": 200,
    "msg": "success",
    "data": {
        "userInfos":[{
            "userID": "open-991733sq-3pqr-988q-o816-5n98r988sqrn",
            "nickname": "zackhuang",
            "headImgUrl": "https://net-cloud.xhey.top/group/headimg/avatar_default_1.jpeg",
            "mobile": "18602222221"
        }]
    },
    "timestamp": 1629102431
}

5.8 获取团队照片

通过筛选条件获取团队下的照片。

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/group/photo

Body参数

名称类型是否必填示例值描述
startTimeInteger1623826153Unix时间戳,筛选条件的开始时间点
endTimeInteger1629096554Unix时间戳,筛选条件的结束时间点
userID[]String["open-06ns8591-02pr-941q-n81r-snn8340598r5","open-3q3p3182-p7s6-90nr-4044-s5nq3ro9n6n5"]用户id列表
mediaTypeInteger0资源类型,0-照片 1-视频,如果不传该值,将会查询满足0或1的资源
pageSizeInteger100支持分页查询,每页条目数,如果不传,默认值为1000
pageNoInteger1支持分页查询,分页页码,如果不传,默认值为1

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
dataObject返回内容
|—hasMoreBooleantrue是否还有下一页数据
|—nextPageNoInteger2下一页的页码
|—photos[]Object水印数据数组
|——idInteger981090726照片id
|——mediaUrlStringhttps://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg资源地址(用户上传的原图)
|——mediaSimpleUrlStringhttps://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg?x-oss-process=video/snapshot,t_0,m_fast,ar_auto,w_300简版资源地址 照片类型时为缩略图,视频类型时为首祯图片
|——mediaTypeInteger0资源类型,0-照片 1-视频,如果不传该值,将会查询满足0或1的资源
|——timeInteger1627612拍照时间,Unix时间戳
|——userIDStringopen-0q325626-s606-93qr-33q9-n535snnoqn77拍照人id
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/group/photo

请求正文

{
	"startTime": 1625483483,
	"endTime": 1628161884,
	"userID": ["open_6e13763f_68d4_49d1_9178_06998191a5c8","open_6e13763f_68d4_49d1_9178_06998191a5c8"],
	"mediaType": 0,
	"pageSize":100,
	"pageNo":1
}

请求示例(Golang API)

    reqStr := `{
        "startTime": 1625483483,
        "endTime": 1628161884,
        "userID": ["open_6e13763f_68d4_49d1_9178_06998191a5c8","open_6e13763f_68d4_49d1_9178_06998191a5c8"],
        "mediaType": 0,
        "pageSize":10,
        "pageNo":1
    }`
    reader := bytes.NewReader(([]byte)(reqStr))
 
    url := "https://openapi.xhey.top/v2/group/photo"
 
    groupSecret := "groupSecret" // 需申请
    groupKey := "groupKey"       // 需申请
    dataSign := sign(reqStr, groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    signature := sign(str, groupSecret)
    req, _ := http.NewRequest("POST", url, reader)
    req.Header.Add("Content-Type", "application/json")
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    client := &http.Client{}
    defer client.CloseIdleConnections()
    resp, err := client.Do(req)
 
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
 
    var buf bytes.Buffer
    _, err = buf.ReadFrom(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println(buf.String())

返回示例

{
	"code": 200,
	"msg": "success",
	"data": {
		"hasMore": true,
		"nextPageNo": 2,
		"photos": [{
			"id": 981090726,
			"mediaUrl": "https://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg",
			"mediaSimpleUrl":"https://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg?x-oss-process=video/snapshot,t_0,m_fast,ar_auto",
			"mediaType": 0,
			"time": 1627612397,
			"userID": "open-0q325626-s606-93qr-33q9-n535snnoqn77"
		}, {
			"id": 981090725,
			"mediaUrl": "https://net-cloud.xhey.top/group/photo/7b4b1def-da53-470e-baec-7b5ed4945aed.jpg",
			"mediaSimpleUrl":"https://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg?x-oss-process=video/snapshot,t_0,m_fast,ar_auto",
			"mediaType": 0,
			"time": 1626056664,
			"userID": "open-0q325626-s606-93qr-33q9-n535snnoqn77"
		}, {
			"id": 981090724,
			"mediaUrl": "https://net-cloud.xhey.top/group/photo/d08a25b5-576c-49eb-8e6d-d34e3b537068.jpg",
			"mediaSimpleUrl":"https://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg?x-oss-process=video/snapshot,t_0,m_fast,ar_auto",
			"mediaType": 0,
			"time": 1626056654,
			"userID": "open-0q325626-s606-93qr-33q9-n535snnoqn77"
		}]
	},
	"timestamp": 1629100265
}

5.9 多维度查询团队照片

通过筛选条件获取团队下的照片。 目前最大支持查询1000条数据,超出时只显示1000条

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/group/photo/search

Body参数

名称类型是否必填示例值描述
startTimeInteger1623826153Unix时间戳,筛选条件的开始时间点 开始时间与结束时间最长支持180天,不传值的情况下默认为当前时间的180天之前
endTimeInteger1629096554Unix时间戳,筛选条件的结束时间点 开始时间与结束时间最长支持180天,不传值的情况下默认为当前时间
userIds[]String["open-06ns8591-02pr-941q-n81r-snn8340598r5","open-3q3p3182-p7s6-90nr-4044-s5nq3ro9n6n5"]用户id列表
mediaTypeInteger0资源类型,0-照片 1-视频,如果不传该值,将会查询满足0或1的资源
watermarkContent[]string["水印内容"]|水印中携带的关键词信息,最多支持三个关键词,每个关键词最长支持15个字符

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
dataObject返回内容
|—photos[]Object水印数据数组
|——idInteger981090726照片id
|——mediaUrlStringhttps://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg资源地址
|——mediaSimpleUrlStringhttps://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg?x-oss-process=video/snapshot,t_0,m_fast,ar_auto,w_300简版资源地址 照片类型时为缩略图,视频类型时为首祯图片
|——mediaTypeInteger0资源类型,0-照片 1-视频,如果不传该值,将会查询满足0或1的资源
|——timeInteger1627612拍照时间,Unix时间戳
|——userIDStringopen-0q325626-s606-93qr-33q9-n535snnoqn77拍照人id
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/group/photo/search

请求正文

{
	"startTime": 1625483483,
	"endTime": 1628161884,
	"UserIds":["open_6e13763f_68d4_49d1_9178_06998191a5c8","open_6e13763f_68d4_49d1_9178_06998191a5c8"],
	"mediaType": 0,
	"watermarkContent":["水印关键词"]
}

请求示例(Golang API)

    reqStr := `{
        "startTime": 1625483483,
        "endTime": 1628161884,
        "userIds":["open_6e13763f_68d4_49d1_9178_06998191a5c8","open_6e13763f_68d4_49d1_9178_06998191a5c8"],
        "mediaType": 0,
        "watermarkContent":["水印关键词"]
    }`
    reader := bytes.NewReader(([]byte)(reqStr))
 
    url := "https://openapi.xhey.top/v2/group/photo/search"
 
    groupSecret := "groupSecret" // 需申请
    groupKey := "groupKey"       // 需申请
    dataSign := sign(reqStr, groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    signature := sign(str, groupSecret)
    req, _ := http.NewRequest("POST", url, reader)
    req.Header.Add("Content-Type", "application/json")
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    client := &http.Client{}
    defer client.CloseIdleConnections()
    resp, err := client.Do(req)
 
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
 
    var buf bytes.Buffer
    _, err = buf.ReadFrom(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println(buf.String())

返回示例

{
	"code": 200,
	"msg": "success",
	"data": {
		"photos": [{
			"id": 981090726,
			"mediaUrl": "https://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg",
			"mediaSimpleUrl":"https://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg?x-oss-process=video/snapshot,t_0,m_fast,ar_auto",
			"mediaType": 0,
			"time": 1627612397,
			"userID": "open-0q325626-s606-93qr-33q9-n535snnoqn77"
		}, {
			"id": 981090725,
			"mediaUrl": "https://net-cloud.xhey.top/group/photo/7b4b1def-da53-470e-baec-7b5ed4945aed.jpg",
			"mediaSimpleUrl":"https://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg?x-oss-process=video/snapshot,t_0,m_fast,ar_auto",
			"mediaType": 0,
			"time": 1626056664,
			"userID": "open-0q325626-s606-93qr-33q9-n535snnoqn77"
		}, {
			"id": 981090724,
			"mediaUrl": "https://net-cloud.xhey.top/group/photo/d08a25b5-576c-49eb-8e6d-d34e3b537068.jpg",
			"mediaSimpleUrl":"https://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg?x-oss-process=video/snapshot,t_0,m_fast,ar_auto",
			"mediaType": 0,
			"time": 1626056654,
			"userID": "open-0q325626-s606-93qr-33q9-n535snnoqn77"
		}]
	},
	"timestamp": 1629100265
}

5.10 根据照片id获取团队照片水印数据

通过照片ID列表,获取对应的水印数据。经纬度坐标系为gcj02。

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/group/watermark/byPhotoId

Body参数

名称类型是否必填示例值描述
photoID[]Integer[981090726,981090735,981090728]照片id列表
pageSizeInteger100支持分页查询,每页条目数,如果不传,默认值为1000
pageNoInteger1支持分页查询,分页页码,如果不传,默认值为1

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
dataObject返回内容
|—hasMoreBooleantrue是否还有下一页数据
|—nextPageNoInteger2下一页的页码
|—watermarks[]Object水印数据数组
|——watermarkIDInteger1444928478914561水印id,用于多维度查询照片数据
|——photoIDInteger981090726照片id
|——userIDStringopen-0q325626-s606-93qr-33q9-n535snnoqn77拍照人id
|——watermarkNameString时间地点天气水印名称
|——timeInteger1627612拍照时间,Unix时间戳
|——addrString成都市·天荟拍照地点
|——weatherString晴 11° 北风≤3级天气
|——lngString104.065727经度
|——latString30.554810纬度
|——altitudeString50.7海拔高度,单位 ‘米’
|——extends[]Object981090726照片id
|———titleString工程名称水印中的自定义条目标题
|———contentString工程记录水印中的自定义条目内容
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/group/watermark/byPhotoId

请求正文

{
    "photoID": [981090726,981090735,981090728,981090718,981090716],
    "pageSize": 100,
    "pageNo": 1
}

请求示例(Golang API)

	reqStr := `{
	    "photoID": [981090726,981090735,981090728,981090718,981090716],
	    "pageSize": 100,
	    "pageNo": 1
	}`
	reader := bytes.NewReader(([]byte)(reqStr))
 
	url := "https://openapi.xhey.top/v2/group/watermark/byPhotoId"
 
	groupSecret := "groupSecret" // 需申请
	groupKey := "groupKey"       // 需申请
	dataSign := sign(reqStr, groupSecret)
	timestamp := strconv.FormatInt(time.Now().Unix(), 10)
	str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
		groupKey,
		dataSign,
		timestamp,
	)
	signature := sign(str, groupSecret)
	req, _ := http.NewRequest("POST", url, reader)
	req.Header.Add("Content-Type", "application/json")
	req.Header.Set("GroupKey", groupKey)
	req.Header.Set("Timestamp", timestamp)
	req.Header.Set("Signature", signature)
 
	client := &http.Client{}
	defer client.CloseIdleConnections()
	resp, err := client.Do(req)
 
	if err != nil {
		fmt.Println(err)
		return
	}
	defer resp.Body.Close()
 
	var buf bytes.Buffer
	_, err = buf.ReadFrom(resp.Body)
	if err != nil {
		fmt.Println(err)
		return
	}
 
	fmt.Println(buf.String())

返回示例

{
	"code": 200,
	"msg": "success",
	"data": {
		"hasMore": false,
		"nextPageNo": 0,
		"watermarks": [{
			"watermarkID": 1444928478913901,
			"photoID": 981090716,
			"userID": "open-6oq698q3-04ps-99s8-o21o-43058r291507",
			"watermarkName": "时间地点天气",
			"time": 1625732,
			"addr": "成都市·天荟",
			"weather": "晴 17° 西南风≤3级",
			"lng": "104.065598",
			"lat": "30.554556",
			"altitude": "51.0",
			"extends": []
		}, {
			"watermarkID": 1444928478914289,
			"photoID": 981090718,
			"userID": "open-06ns8591-02pr-941q-n81r-snn8340598r5",
			"watermarkName": "时间地点天气",
			"time": 1625732,
			"addr": "成都市·天荟",
			"weather": "晴 17° 西南风≤3级",
			"lng": "104.065552",
			"lat": "30.554632",
			"altitude": "50.5",
			"extends": [{
				"title": "工程名称",
				"content": "工程记录"
			}]
		}, {
			"watermarkID": 1444928478914561,
			"photoID": 981090726,
			"userID": "open-0q325626-s606-93qr-33q9-n535snnoqn77",
			"watermarkName": "时间地点天气",
			"time": 1627612,
			"addr": "成都市·天荟",
			"weather": "晴 11° 北风≤3级",
			"lng": "104.065727",
			"lat": "30.554810",
			"altitude": "50.7",
			"extends": []
		}]
	},
	"timestamp": 1629093972
}

5.11 根据时间范围获取团队照片水印数据

通过开始和结束时间的范围,获取对应的水印数据。经纬度坐标系为gcj02。

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/group/watermark/byTime

Body参数

名称类型是否必填示例值描述
startTimeInteger1623826153Unix时间戳,筛选条件的开始时间点
endTimeInteger1629096554Unix时间戳,筛选条件的结束时间点
pageSizeInteger100支持分页查询,每页条目数,如果不传,默认值为1000
pageNoInteger1支持分页查询,分页页码,如果不传,默认值为1

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
dataObject返回内容
|—hasMoreBooleantrue是否还有下一页数据
|—nextPageNoInteger2下一页的页码
|—watermarks[]Object水印数据数组
|——watermarkIDInteger1444928478914561水印id,用于多维度查询照片数据
|——photoIDInteger981090726照片id
|——userIDStringopen-0q325626-s606-93qr-33q9-n535snnoqn77拍照人id
|——watermarkNameString时间地点天气水印名称
|——timeInteger1627612拍照时间,Unix时间戳
|——addrString成都市·天荟拍照地点
|——weatherString晴 11° 北风≤3级天气
|——lngString104.065727经度
|——latString30.554810纬度
|——altitudeString50.7海拔高度,单位 ‘米’
|——extends[]Object981090726照片id
|———titleString工程名称水印中的自定义条目标题
|———contentString工程记录水印中的自定义条目内容
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/group/watermark/byTime

请求正文

{
	"startTime": 1623826153,
	"endTime": 1629096554,
	"pageSize": 100,
	"pageNo": 1
}

请求示例(Golang API)

	reqStr := `{
	    "startTime": 1623826153,
	    "endTime": 1629096554,
	    "pageSize": 100,
	    "pageNo": 1
	}`
	reader := bytes.NewReader(([]byte)(reqStr))
 
	url := "https://openapi.xhey.top/v2/group/watermark/byTime"
 
	groupSecret := "groupSecret" // 需申请
	groupKey := "groupKey"       // 需申请
	dataSign := sign(reqStr, groupSecret)
	timestamp := strconv.FormatInt(time.Now().Unix(), 10)
	str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
		groupKey,
		dataSign,
		timestamp,
	)
	signature := sign(str, groupSecret)
	req, _ := http.NewRequest("POST", url, reader)
	req.Header.Add("Content-Type", "application/json")
	req.Header.Set("GroupKey", groupKey)
	req.Header.Set("Timestamp", timestamp)
	req.Header.Set("Signature", signature)
 
	client := &http.Client{}
	defer client.CloseIdleConnections()
	resp, err := client.Do(req)
 
	if err != nil {
		fmt.Println(err)
		return
	}
	defer resp.Body.Close()
 
	var buf bytes.Buffer
	_, err = buf.ReadFrom(resp.Body)
	if err != nil {
		fmt.Println(err)
		return
	}
 
	fmt.Println(buf.String())

返回示例

{
    "code": 200,
    "msg": "success",
    "data": {
        "hasMore": false,
        "nextPageNo": 0,
        "watermarks": [{
            "watermarkID": 1444928478914521,
            "photoID": 981090716,
            "userID": "open-6oq698q3-04ps-99s8-o21o-43058r291507",
            "watermarkName": "时间地点天气",
            "time": 1625732,
            "addr": "成都市·天荟",
            "weather": "晴 17° 西南风≤3级",
            "lng": "104.065598",
            "lat": "30.554556",
            "altitude": "51.0",
            "extends": []
        }, {
            "watermarkID": 1444928478915527,
            "photoID": 981090718,
            "userID": "open-06ns8591-02pr-941q-n81r-snn8340598r5",
            "watermarkName": "时间地点天气",
            "time": 1625732,
            "addr": "成都市·天荟",
            "weather": "晴 17° 西南风≤3级",
            "lng": "104.065552",
            "lat": "30.554632",
            "altitude": "50.5",
            "extends": [{
                "title": "工程名称",
                "content": "工程记录"
            }]
        }, {
            "watermarkID": 1444928478915527,
            "photoID": 981090726,
            "userID": "open-0q325626-s606-93qr-33q9-n535snnoqn77",
            "watermarkName": "时间地点天气",
            "time": 1627612,
            "addr": "成都市·天荟",
            "weather": "晴 11° 北风≤3级",
            "lng": "104.065727",
            "lat": "30.554810",
            "altitude": "50.7",
            "extends": []
        }]
    },
    "timestamp": 1629093972
}

5.12 创建商品识别任务

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/sku/check/task/create

Body参数

名称类型是否必填示例值描述
imageUrlStringhttps://net-cloud.xhey.top/SKU/71c506de1f1541f2aa0dcf60af07778f.jpg待识别图片地址

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
dataObject返回内容
|—taskIDString4e9da3a6-7724-11ee-a826-0000028ce680识别任务ID
timestampInteger1629092630请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/sku/check/task/create

请求正文

{
    "imageUrl": "https://net-cloud.xhey.top/SKU/71c506de1f1541f2aa0dcf60af07778f.jpg"
}

请求示例(Golang API)

    reqStr := `{
        "imageUrl": "https://net-cloud.xhey.top/SKU/71c506de1f1541f2aa0dcf60af07778f.jpg"
    }`
    reader := bytes.NewReader(([]byte)(reqStr))
 
    url := "https://openapi.xhey.top/v2/sku/check/task/create"
 
    groupSecret := "groupSecret" // 需申请
    groupKey := "groupKey"       // 需申请
    dataSign := sign(reqStr, groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    signature := sign(str, groupSecret)
    req, _ := http.NewRequest("POST", url, reader)
    req.Header.Add("Content-Type", "application/json")
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    client := &http.Client{}
    defer client.CloseIdleConnections()
    resp, err := client.Do(req)
 
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
 
    var buf bytes.Buffer
    _, err = buf.ReadFrom(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println(buf.String())

返回示例

{
    "code": 200, // -10004团队商品为空
    "msg": "success",
    "data": {
        "taskID": "03c01878-7794-11ee-be54-000000007530"
    },
    "timestamp": 1698718809
}

5.13 获取识别结果

基本信息

请求方式:POST

请求地址:https://openapi.xhey.top/v2/sku/check/task/get

Body参数

名称类型是否必填示例值描述
taskIDString03c01878-7794-11ee-be54-000000007530识别任务ID

返回参数

名称类型示例值描述
codeString200状态码
msgStringsuccess状态码对应的提示内容
dataObject返回内容
|—statusInteger1识别状态 0识别中 1识别完成 2识别失败
|—display[]Object识别结果
|—-skuCodeString40sku编号
|—-skuNumInteger2sku个数
|—-skuNameString无糖可乐500mlsku详细名称
|—-instances[]Objectsku在图片中的详细信息
|—--bbox[]Integer[368,1006,431,1131]sku的图像位置
|—--tag[]string["front"]sku的标签

timestamp | Integer | 1629092630 | 请求时间,Unix时间戳

示例

请求示例(HTTP)

POST https://openapi.xhey.top/v2/sku/check/task/get

请求正文

{
    "taskID": "6353e466-7706-11ee-943d-000000007530"
}

请求示例(Golang API)

    reqStr := `{
        "taskID": "6353e466-7706-11ee-943d-000000007530"
    }`
    reader := bytes.NewReader(([]byte)(reqStr))
 
    url := "https://openapi.xhey.top/v2/sku/check/task/get"
 
    groupSecret := "groupSecret" // 需申请
    groupKey := "groupKey"       // 需申请
    dataSign := sign(reqStr, groupSecret)
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    str := fmt.Sprintf("groupKey=%s&sign=%s&timestamp=%s",
        groupKey,
        dataSign,
        timestamp,
    )
    signature := sign(str, groupSecret)
    req, _ := http.NewRequest("POST", url, reader)
    req.Header.Add("Content-Type", "application/json")
    req.Header.Set("GroupKey", groupKey)
    req.Header.Set("Timestamp", timestamp)
    req.Header.Set("Signature", signature)
 
    client := &http.Client{}
    defer client.CloseIdleConnections()
    resp, err := client.Do(req)
 
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
 
    var buf bytes.Buffer
    _, err = buf.ReadFrom(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println(buf.String())

返回示例

{
    "code": 200,  // -10003识别任务ID不存在
    "msg": "success",
    "data": {
        "status": 1,
        "display": [
            {
                "skuCode": "41",
                "instances": [
                    {
                        "bbox": [
                            368,
                            1006,
                            431,
                            1131
                        ],
                        "tag": [
                            "front"
                        ]
                    },
                    {
                        "bbox": [
                            496,
                            997,
                            562,
                            1128
                        ],
                        "tag": [
                            "front"
                        ]
                    }
                ],
                "skuNum": 2,
                "skuName": "茶憨憨冰凤梨茶"
            }
        ]
    },
    "timestamp": 1698670838
}

6.webhook 定义

webhook 请求 header 携带鉴权信息

接收参数

名称类型示例值描述
groupIDString11971798团队号
photoObject资源信息
|—idInteger981090726资源id
|—mediaUrlStringhttps://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg资源地址
|—mediaSimpleUrlStringhttps://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg?x-oss-process=video/snapshot,t_0,m_fast,ar_auto,w_300简版资源地址 照片类型时为缩略图,视频类型时为首祯图片
|—mediaTypeInteger0资源类型,0-照片 1-视频,如果不传该值,将会查询满足0或1的资源
|—timeInteger1627612拍照时间,Unix时间戳
|—userIDStringopen-0q325626-s606-93qr-33q9-n535snnoqn77拍照人id
|—userNameString拍摄人拍照人昵称
watermarkObject水印信息
|—watermarkIDInteger1444928478914561水印id,用于多维度查询照片数据
|-watermarkIdentificationString182ba62d-257e-11ec-5660-3f95007345e9水印标识
|—photoIDInteger981090726照片id
|—userIDStringopen-0q325626-s606-93qr-33q9-n535snnoqn77拍照人id
|—watermarkNameString时间地点天气水印名称
|—timeInteger拍摄时间,Unix时间戳
|—addrString成都市·天荟拍摄地址
|—weatherString晴 11° 北风≤3级天气
|—lngString104.065727经度
|—latString30.554810纬度
|—altitudeString50.7海拔高度,单位 ‘米’
|—extends[]Object水印自定义内容
|———titleString工程名称水印中的自定义条目标题
|———contentString工程记录水印中的自定义条目内容

返回参数

名称类型示例值描述
statusInteger200接收到消息返回200认为发送成功,否则会一直重试
messageString失败时返回的特殊消息

请求正文

{
  "groupID":11971798,
  "photo": {
    "id": 29043766,
    "mediaUrl": "https://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg",
    "mediaSimpleUrl":"https://net-cloud.xhey.top/group/photo/87485164-6394-4b9d-966e-05ac786b5160.jpg?x-oss-process=video/snapshot,t_0,m_fast,ar_auto,w_300",
    "mediaType": 0,
    "time": 1631761794,
    "userID": "open-4814n211-8789-95p3-o84o-972159218n8s",
    "userName":"拍摄人"
  },
  "watermark": {
	"watermarkID":1444928478914561,
    "watermarkIdentification":"182ba62d-257e-11ec-5660-3f95007345e9",
    "photoID": 29043766,
    "userID": "open-4814n211-8789-95p3-o84o-972159218n8s",
    "watermarkName": "工程记录",
    "time": 1631761794,
    "addr": "北京市·上地佳园",
    "weather": "晴 28° 西北风2级",
    "lng": "113.133652",
    "lat": "29.376331",
    "altitude": "46.8",
    "extends": []
  }
}

返回示例

{
	"code": 200,
	"msg": ""
}

7. 状态码列表

当code值不等于200时,返回数据的data为null

code值类型错误内容
200Integersuccess
2001Integeryou can query a maximum of 1000 records, please be precise with your query conditions
400Integerparam error
401Integerverify error
403Integerforbidden
404Integernot found
500Integerservice error
4007Integergroup key or secret not right
4008Integeryou can query a maximum of 1000 personnel information at a time
4009Integertime param error
4010Integeryou can query longest of 180 days data
4011Integeryou can use a maximum of three keywords to search
4012Integerone keyword contain a maximum of 15 characters
4013Integernot support watermark ids query