--- title: Gewechat language_tabs: - shell: Shell - http: HTTP - javascript: JavaScript - ruby: Ruby - python: Python - php: PHP - java: Java - go: Go toc_footers: [] includes: [] search: true code_clipboard: true highlight_theme: darkula headingLevel: 2 generator: "@tarslib/widdershins v4.0.30" --- # Gewechat Base URLs: # Authentication # 基础API/登录模块 ## POST 获取登录二维码(步骤2) POST /login/getLoginQrCode - appId参数为设备ID,首次登录传空,会自动触发创建设备,掉线后重新登录则必须传接口返回的appId,注意**同一个号避免重复创建设备**,以免触发官方风控 - **取码时传的appId需要与上次登录扫码的微信一致,否则会导致登录失败** - 响应结果中的qrImgBase64为微信二维码图片的base64,前端需要**将二维码图片展示给用户并进行手机扫码操作**(PS: **扫码后调用步骤2,手机上才显示登录**)。(或使用响应结果中的qrData生成二维码) > Body 请求参数 ```json { "appId": "{{appid}}" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID,首次登录传空,之后传接口返回的appId| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "appId": "wx_wR_U4zPj2M_OTS3BCyoE4", "qrData": "http://weixin.qq.com/x/4dmHZZMtoLbHoLZwd1wE", "qrImgBase64": "data:image/jpg;base64,XXX", "uuid": "4dmHZZMtoLbHoLZwd1wE" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||响应数据| |»» qrData|string|true|none||二维码内包含的信息(可用二维码生成工具结合值生成可扫描的微信二维码)| |»» appId|string|true|none||设备ID| |»» qrImgBase64|string|true|none||二维码图片base64| |»» uuid|string|true|none||二维码的uuid| ## POST 获取Token(步骤1) POST /tools/getTokenId > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": "" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|string|true|none||token| ## POST 执行登录(步骤3) POST /login/checkLogin - 获取到登录二维码后需每间隔5s调用本接口来判断是否登录成功 - 新设备登录平台,次日凌晨会掉线一次,重新登录时需调用[获取二维码且传appId取码](/apidoc/shared-69ba62ca-cb7d-437e-85e4-6f3d3df271b1/api-196794502),登录成功后则可以长期在线 - 登录成功后请保存appId与wxid的对应关系,后续接口中会用到 > Body 请求参数 ```json { "appId": "{{appid}}", "uuid": "IZDexGAEu9_6JkDX0pX-" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» uuid|body|string| 是 |取码返回的uuid| |» captchCode|body|string| 是 |扫码后手机提示输入的验证码| > 返回示例 ```json { "ret": 200, "msg": "操作成功", "data": { "uuid": "AZ0yN8d1wJmiNfQBKFgu", "headImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/ZYUmcl1UNzyB2onM08Ij901TaUOLIjHj2UicK3XGDsjEWl4XgQN5IjodunHicBVsZiaZc1iaGCRfluAxkzyibbiau3WBfFj2nprzKp2KryicMjGIvDbWOQGmibwVK648a3o4A8hD/0", "nickName": "G", "expiredTime": 225, "status": 1, "loginInfo": null } } ``` ```json { "ret": 200, "msg": "操作成功", "data": { "uuid": "4YHmGvoXvgmS1MqWVtQ2", "headImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/ZYUmcl1UNzyB2onM08Ij901TaUOLIjHj2UicK3XGDsjEWl4XgQN5IjodunHicBVsZiaZc1iaGCRfluAxkzyibbiau3WBfFj2nprzKp2KryicMjGIvDbWOQGmibwVK648a3o4A8hD/0", "nickName": "G", "expiredTime": 230, "status": 2, "loginInfo": { "uin": 4077276085, "wxid": "wxid_0xsqb3o0tsvz22", "nickName": "G", "mobile": "17114312382", "alias": null } } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||响应数据| |»» uuid|string|true|none||二维码的uuid| |»» headImgUrl|string|true|none||头像地址| |»» nickName|string|true|none||昵称| |»» expiredTime|integer|true|none||二维码超时时间| |»» status|integer|true|none||状态| |»» loginInfo|object|true|none||登录成功信息| |»»» uin|integer|true|none||uin| |»»» wxid|string|true|none||微信ID,返回此值则是登录成功| |»»» nickName|string|true|none||昵称| |»»» mobile|string|true|none||绑定的手机号| |»»» alias|string|true|none||微信号| ## POST 设置消息回调地址 POST /tools/setCallback > Body 请求参数 ```json { "token": "{{gewe-token}}", "callbackUrl": "http://www.baidu.com" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» token|body|string| 是 |token| |» callbackUrl|body|string| 是 |回调接收地址| > 返回示例 ```json { "ret": 200, "msg": "操作成功" } ``` ```json { "ret": 200, "msg": "操作成功", "data": { "uuid": "4YHmGvoXvgmS1MqWVtQ2", "headImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/ZYUmcl1UNzyB2onM08Ij901TaUOLIjHj2UicK3XGDsjEWl4XgQN5IjodunHicBVsZiaZc1iaGCRfluAxkzyibbiau3WBfFj2nprzKp2KryicMjGIvDbWOQGmibwVK648a3o4A8hD/0", "nickName": "G", "expiredTime": 230, "status": 2, "loginInfo": { "uin": 4077276085, "wxid": "wxid_0xsqb3o0tsvz22", "nickName": "G", "mobile": "17114312382", "alias": null } } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 查看设备列表 POST /login/deviceList > Body 请求参数 ```json {} ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| > 返回示例 ```json { "ret": 200, "msg": "操作成功", "data": [ "wx_YQFamjNEfV1LFFl9TRYVb" ] } ``` ```json { "ret": 200, "msg": "操作成功", "data": { "uuid": "4YHmGvoXvgmS1MqWVtQ2", "headImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/ZYUmcl1UNzyB2onM08Ij901TaUOLIjHj2UicK3XGDsjEWl4XgQN5IjodunHicBVsZiaZc1iaGCRfluAxkzyibbiau3WBfFj2nprzKp2KryicMjGIvDbWOQGmibwVK648a3o4A8hD/0", "nickName": "G", "expiredTime": 230, "status": 2, "loginInfo": { "uin": 4077276085, "wxid": "wxid_0xsqb3o0tsvz22", "nickName": "G", "mobile": "17114312382", "alias": null } } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|[string]|true|none||none| # 基础API/联系人模块 ## POST 获取通讯录列表 POST /contacts/fetchContactsList - 本接口为长耗时接口,耗时时间根据好友数量递增,若接口返回超时可通过[获取通讯录列表缓存接口](https://apifox.com/apidoc/shared-69ba62ca-cb7d-437e-85e4-6f3d3df271b1/api-196794505)获取响应结果 - 本接口返回的群聊仅为[保存到通讯录中的群聊](https://zhidao.baidu.com/question/144774265918920605/answer/4326874247.html),若想获取会话列表中的所有群聊,需要通过[消息订阅](https://apifox.com/apidoc/shared-69ba62ca-cb7d-437e-85e4-6f3d3df271b1/api-196884570)做二次处理。原因:当未获取的群有成员在群内发消息的话会有消息回调, 开发者此刻调用[获取群详情接口](https://apifox.com/apidoc/shared-69ba62ca-cb7d-437e-85e4-6f3d3df271b1/api-196794513)查询群信息入库保存即可,比如说手机上三年前不说话的群,侧滑删除了,用户手机上也不会看到被删除的群聊的 ,但是有群成员说了话他会显示,原理就是各个终端(Android、IOS、桌面版微信)取得了消息回调,又去获取群详情信息,本地数据库缓存了下来,显示的手机群聊,让用户感知的。 > Body 请求参数 ```json { "appId": "{{appid}}" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "friends": [ "tmessage", "medianote", "qmessage", "qqmail", "wxid_910acevfm2nb21", "qqsafe", "wxid_9299552988412", "weixin", "exmail_tool", "wxid_mp05xmje0ctn22", "wxid_09oq4f4j4wg912", "wxid_6bfguz79h8n122", "wxid_lyuq4hr4lrjq22", "wxid_a1zqyljsrsdu12", "wxid_lv3pb3zhna3522", "wxid_k2biq6fuinsr22", "wxid_ujredjhxz9y712", "wxid_uwb7989u0jea12", "wxid_in46ey732vxu12", "wxid_3rvervwohj6921", "wxid_4wkls7tu62ua12", "wxid_g0bdknnotx2f12", "wxid_ce5fgp0icb3y21", "wxid_1482424825211", "wxid_vw3p4f6jy7bm12", "wxid_o2m8xm71c23522", "wxid_bclqpc2ho6o412", "wxid_98pjjzpiisi721", "wxid_noq2wsn5c8h222" ], "chatrooms": [ "2180313478@chatroom", "14358945067@chatroom", "17362526147@chatroom", "11685224357@chatroom", "17522822550@chatroom" ], "ghs": [ "gh_7aac992b0363", "gh_d7293b5f14f4", "gh_f51ce3ef83a4", "gh_7d20df86e26b", "gh_69bfb92a3e43" ] } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» friends|[string]|true|none||好友的wxid| |»» chatrooms|[string]|true|none||保存到通讯录中群聊的ID| |»» ghs|[string]|true|none||关注的公众号ID| ## POST 获取通讯录列表缓存 POST /contacts/fetchContactsListCache 通讯录列表数据缓存10分钟,超时则需要重新调用[获取通讯录列表接口](https://apifox.com/apidoc/shared-69ba62ca-cb7d-437e-85e4-6f3d3df271b1/api-196794504) > Body 请求参数 ```json { "appId": "{{appid}}" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 搜索好友 POST /contacts/search 搜索的联系人信息若已经是好友,响应结果的v3则为好友的wxid 本接口返回的数据可通过[添加联系人接口](https://apifox.com/apidoc/shared-69ba62ca-cb7d-437e-85e4-6f3d3df271b1/api-196794507)发送添加好友请求 > Body 请求参数 ```json { "appId": "{{appid}}", "contactsInfo": "zhangch" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» contactsInfo|body|string| 是 |搜索的联系人信息,微信号、手机号...| > 返回示例 ```json { "ret": 200, "msg": "操作成功", "data": { "v3": "v3_020b3826fd030100000000006c20217514f7f2000000501ea9a3dba12f95f6b60a0536a1adb690dcccc9bf58cc80765e6eb16bc2678a36a0ed264e1b22596f787de6acc71a4beb20b69ab88bfd6d71aa1858b3@stranger", "nickName": "zhang", "sex": 1, "signature": "学习、成长、锻炼", "bigHeadImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/yoYJGtDmGicz9QGOFRb71Ns6onQO63bnfJibicBwEmO73m18N7BicrGzeYsdxOrUf5qwJq9mMaQbDwEBA92uPOuibZg/0", "smallHeadImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/yoYJGtDmGicz9QGOFRb71Ns6onQO63bnfJibicBwEmO73m18N7BicrGzeYsdxOrUf5qwJq9mMaQbDwEBA92uPOuibZg/132", "v4": "v4_000b708f0b04000001000000000056d3690365e0eefe00ef467a8e651000000050ded0b020927e3c97896a09d47e6e9ec65e1f9d32b06f86df4790587a6308149b3c8a90185e824efccd5b41bd75f6240ab020f9dd4b5915a083c6784a5cfcb806f53ca340b4c95b24f474d6e3fc0661301b3b3b741aac3eb5@stranger" } } ``` ```json { "ret": 500, "msg": "搜索联系人失败", "data": { "code": "-4", "msg": "用户不存在" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» v3|string|true|none||搜索好友的v3,添加好友时使用| |»» nickName|string|true|none||搜索好友的昵称| |»» sex|integer|true|none||搜索好友的性别| |»» signature|null|true|none||搜索好友的签名| |»» bigHeadImgUrl|string|true|none||搜索好友的大尺寸头像| |»» smallHeadImgUrl|string|true|none||搜索好友的小尺寸头像| |»» v4|string|true|none||搜索好友的v4,添加好友时使用| ## POST 添加联系人/同意添加好友 POST /contacts/addContacts 本接口建议在线3天后再进行调用。 好友添加成功后,会通过回调消息推送一条包含v3的消息,可用于判断好友是否添加成功。 > Body 请求参数 ```json { "appId": "{{appid}}", "scene": 3, "content": "hallo", "v4": "v4_000b708f0b04000001000000000054a9e826263634356493c57b8e651000000050ded0b020927e3c97896a09d47e6e9e455d674c2544e251e77c7cba08cc6cef8f7df9e52d2bd4a3cef771c8661331fa1939fbe54f4e479d6d9d4522d70aeba057ffd0dd82398730da44ee57332a7bdea4862304d4799758ba@stranger", "v3": "v3_020b3826fd030100000000003a070e7757675c000000501ea9a3dba12f95f6b60a0536a1adb690dcccc9bf58cc80765e6eb16bffa5996420bb1b2577634516ff82090419d8bdcd5689df8dfb21d40af93d286f72c3a0e8cfa6dcb68afed39226f008c6@stranger", "option": 2 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» scene|body|integer| 是 |添加来源,同意添加好友时传回调消息xml中的scene值。| |» option|body|integer| 是 |操作类型,2添加好友 3同意好友 4拒绝好友| |» v3|body|string| 是 |通过搜索或回调消息获取到的v3| |» v4|body|string| 是 |通过搜索或回调消息获取到的v4| |» content|body|string| 是 |添加好友时的招呼语| #### 详细说明 **» scene**: 添加来源,同意添加好友时传回调消息xml中的scene值。 添加好友时的枚举值如下: 3 :微信号搜索 4 :QQ好友 8 :来自群聊 15:手机号 > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 删除好友 POST /contacts/deleteFriend > Body 请求参数 ```json { "appId": "{{appid}}", "wxid": "wxid_phyyedw9xap22" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» wxid|body|string| 是 |删除好友的wxid| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 上传手机通讯录 POST /contacts/uploadPhoneAddressList > Body 请求参数 ```json { "appId": "{{appid}}", "phones": [ "18616561632", "18134173174" ], "opType": 1 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» phones|body|[string]| 是 |需要上传的手机号| |» opType|body|integer| 是 |操作类型,1:上传 2:删除| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 获取群/好友简要信息 POST /contacts/getBriefInfo > Body 请求参数 ```json { "appId": "{{appid}}", "wxids": [ "wxid_phyyedw9xap22" ] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» wxids|body|[string]| 是 |好友的wxid| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "获取联系人信息成功", "data": [ { "userName": "wxid_phyyedw9xap22", "nickName": "Ashley", "pyInitial": "ASHLEY", "quanPin": "Ashley", "sex": 2, "remark": "", "remarkPyInitial": "", "remarkQuanPin": "", "signature": null, "alias": "zero-one_200906", "snsBgImg": null, "country": "AD", "bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/buiaXybHTBK3BuGr1edN72zBDermWVFJ7YC8Jib2RcCSdiauAtZcPgUQpdhE9KY5NsumDAWD16fsg3A6OKuhdEr97VAHdTGgk6R1Eibuj7ZNwJ4/0", "smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/buiaXybHTBK3BuGr1edN72zBDermWVFJ7YC8Jib2RcCSdiauAtZcPgUQpdhE9KY5NsumDAWD16fsg3A6OKuhdEr97VAHdTGgk6R1Eibuj7ZNwJ4/132", "description": null, "cardImgUrl": null, "labelList": "", "province": "", "city": "", "phoneNumList": null } ] } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|[object]|true|none||none| |»» userName|string|false|none||none| |»» nickName|string|false|none||none| |»» pyInitial|string|false|none||none| |»» quanPin|string|false|none||none| |»» sex|integer|false|none||none| |»» remark|string|false|none||none| |»» remarkPyInitial|string|false|none||none| |»» remarkQuanPin|string|false|none||none| |»» signature|null|false|none||none| |»» alias|string|false|none||none| |»» snsBgImg|null|false|none||none| |»» country|string|false|none||none| |»» bigHeadImgUrl|string|false|none||none| |»» smallHeadImgUrl|string|false|none||none| |»» description|null|false|none||none| |»» cardImgUrl|null|false|none||none| |»» labelList|string|false|none||none| |»» province|string|false|none||none| |»» city|string|false|none||none| |»» phoneNumList|null|false|none||none| ## POST 获取群/好友详细信息 POST /contacts/getDetailInfo > Body 请求参数 ```json { "appId": "{{appid}}", "wxids": [ "yc-081726" ] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» wxids|body|[string]| 是 |好友的wxid| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "获取联系人信息成功", "data": [ { "userName": "wxid_phyyedw9xap22", "nickName": "Ashley", "pyInitial": null, "quanPin": "Ashley", "sex": 2, "remark": null, "remarkPyInitial": null, "remarkQuanPin": null, "signature": "山林不向四季起誓 枯荣随缘。", "alias": "zero-one_200906", "snsBgImg": "http://shmmsns.qpic.cn/mmsns/UaAfqYic92wm7ZCrsEwlQMXSmBLs8dpwBzrXnrOyyP3B8bDibCCFInJ9PicC9LPYY17uWH1yIOmBYQ/0", "country": "AD", "bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/buiaXybHTBK3BuGr1edN72zBDermWVFJ7YC8Jib2RcCSdiauAtZcPgUQpdhE9KY5NsumDAWD16fsg3A6OKuhdEr97VAHdTGgk6R1Eibuj7ZNwJ4/0", "smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/buiaXybHTBK3BuGr1edN72zBDermWVFJ7YC8Jib2RcCSdiauAtZcPgUQpdhE9KY5NsumDAWD16fsg3A6OKuhdEr97VAHdTGgk6R1Eibuj7ZNwJ4/132", "description": null, "cardImgUrl": null, "labelList": null, "province": null, "city": null, "phoneNumList": null } ] } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|[object]|true|none||none| |»» userName|string|false|none||好友的wxid| |»» nickName|string|false|none||好友的昵称| |»» pyInitial|null|false|none||好友昵称的拼音首字母| |»» quanPin|string|false|none||好友昵称的全拼| |»» sex|integer|false|none||好友的性别| |»» remark|null|false|none||好友备注| |»» remarkPyInitial|null|false|none||好友备注的拼音首字母| |»» remarkQuanPin|null|false|none||好友备注的全拼| |»» signature|string|false|none||好友的签名| |»» alias|string|false|none||好友的微信号| |»» snsBgImg|string|false|none||朋友圈背景图链接| |»» country|string|false|none||国家| |»» bigHeadImgUrl|string|false|none||大尺寸头像链接| |»» smallHeadImgUrl|string|false|none||小尺寸头像链接| |»» description|null|false|none||好友的描述| |»» cardImgUrl|null|false|none||好友描述的图片链接| |»» labelList|null|false|none||好友的标签ID| |»» province|null|false|none||省份| |»» city|null|false|none||城市| |»» phoneNumList|null|false|none||好友的手机号码| ## POST 设置好友仅聊天 POST /contacts/setFriendPermissions 设置完好友仅聊天后若发现手机展示不是设置的结果,可能是手机缓存未刷新,重新进入页面刷新查看 > Body 请求参数 ```json { "appId": "{{appid}}", "wxid": "wxid_phyyedw9xap22", "onlyChat": true } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» wxid|body|string| 是 |好友的wxid| |» onlyChat|body|boolean| 是 |设置好友是否仅聊天| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "设置好友权限成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 设置好友备注 POST /contacts/setFriendRemark > Body 请求参数 ```json { "appId": "{{appid}}", "wxid": "wxid_phyyedw9xap22", "remark": "备注" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» wxid|body|string| 是 |好友的wxid| |» remark|body|string| 是 |备注的备注| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "设置好友权限成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 获取手机通讯录 POST /contacts/getPhoneAddressList > Body 请求参数 ```json { "appId": "{{appid}}", "phones": [] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» phones|body|[string]| 否 |获取哪些手机号的好友详情,不传获取所有| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "获取手机通讯录成功", "data": [ { "userName": "wxid_ddgsghdfafaphh22", "v4": null, "nickName": null, "sex": 1, "phoneMd5": "d36f4cc1c8bca1ef41b93d2215133cdb", "signature": "......", "alias": null, "country": "CN", "bigHeadImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/vwGdLRK5jtpXagA7dfXlUiaU9VayWNSqia1c2Wib7icJNhPd6WHhqMIVuYuNDfEqPRC2TnmlRSkfYrib9fHyYONwdccv17gibCls7ia8elaunvgMmYicAw22wUJQ3CDw0Cm5ibrOT/0", "smallHeadImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/vwGdLRK5jtpXagA7dfXlUiaU9VayWNSqia1c2Wib7icJNhPd6WHhqMIVuYuNDfEqPRC2TnmlRSkfYrib9fHyYONwdccv17gibCls7ia8elaunvgMmYicAw22wUJQ3CDw0Cm5ibrOT/132", "province": "Jiangsu", "city": "Xuzhou", "personalCard": 0 } ] } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|[object]|true|none||none| |»» userName|string|false|none||none| |»» v4|null|false|none||none| |»» nickName|null|false|none||none| |»» sex|integer|false|none||none| |»» phoneMd5|string|false|none||none| |»» signature|string|false|none||none| |»» alias|null|false|none||none| |»» country|string|false|none||none| |»» bigHeadImgUrl|string|false|none||none| |»» smallHeadImgUrl|string|false|none||none| |»» province|string|false|none||none| |»» city|string|false|none||none| |»» personalCard|integer|false|none||none| # 基础API/群模块 ## POST 创建微信群 POST /group/createChatroom 创建微信群时最少要选择两位微信好友 > Body 请求参数 ```json { "appId": "{{appid}}", "wxids": [ "wxid_0xsqb3o0tsvz22", "wxid_phyyedw9xap22" ] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» wxids|body|[string]| 是 |好友的wxid列表| > 返回示例 ```json { "ret": 200, "msg": "操作成功", "data": { "headImgBase64": "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", "chatroomId": "34757816141@chatroom" } } ``` ```json { "ret": 500, "msg": "创建群聊失败", "data": { "code": "0", "msg": "MemberList are wrong" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» headImgBase64|string|true|none||群头像的base64图片| |»» chatroomId|string|true|none||群ID| ## POST 修改群名称 POST /group/modifyChatroomName 修改完群名称后若发现手机未展示修改后的名称,可能是手机缓存未刷新,手机聊天框多切换几次会刷新。 > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomName": "GeWe test", "chatroomId": "34757816141@chatroom" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomName|body|string| 是 |群名称| |» chatroomId|body|string| 是 |群ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 修改群备注 POST /group/modifyChatroomRemark 群备注仅自己可见 修改完群备注后若发现手机未展示修改后的备注,可能是手机缓存未刷新,手机聊天框多切换几次会刷新。 > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomRemark": "GeWe test private", "chatroomId": "34757816141@chatroom" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomRemark|body|string| 是 |群备注| |» chatroomId|body|string| 是 |群ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 修改我在群内的昵称 POST /group/modifyChatroomNickNameForSelf > Body 请求参数 ```json { "appId": "{{appid}}", "nickName": "廖静", "chatroomId": "34757816141@chatroom" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» nickName|body|string| 是 |群昵称| |» chatroomId|body|string| 是 |群ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 邀请/添加 进群 POST /group/inviteMember > Body 请求参数 ```json { "appId": "{{appid}}", "wxids": "wxid_8pvka4jg6qzt22", "chatroomId": "34757816141@chatroom", "reason": "" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» wxids|body|string| 是 |邀请进群的好友wxid,多个英文逗号分隔| |» chatroomId|body|string| 是 |群ID| |» reason|body|string| 是 |邀请进群的说明| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 删除群成员 POST /group/removeMember > Body 请求参数 ```json { "appId": "{{appid}}", "wxids": "wxid_8pvka4jg6qzt22", "chatroomId": "34757816141@chatroom" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» wxids|body|string| 是 |删除的群成员wxid,多个英文逗号分隔| |» chatroomId|body|string| 是 |群ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 退出群聊 POST /group/quitChatroom > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "21425161836@chatroom" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 解散群聊 POST /group/disbandChatroom > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "21425161836@chatroom" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 获取群信息 POST /group/getChatroomInfo > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "chatroomId": "34757816141@chatroom", "nickName": "GeWe test", "pyInitial": "GEWETEST", "quanPin": "GeWetest", "sex": 0, "remark": "GeWe test private", "remarkPyInitial": "GEWETESTPRIVATE", "remarkQuanPin": "GeWetestprivate", "chatRoomNotify": 1, "chatRoomOwner": "zhangchuan2288", "smallHeadImgUrl": "https://wx.qlogo.cn/mmcrhead/PiajxSqBRaEJEIII6n6NUHudK1r5a29cMDlW0Ef7b1ibzksfrwIcRkTicPRoWm7Km3ZQIpq8xp65nD6yUm8BHxzqhV1ic1jQvvnv/0", "memberList": [ { "wxid": "zhangchuan2288", "nickName": "朝夕。", "inviterUserName": null, "memberFlag": 1, "displayName": null, "bigHeadImgUrl": null, "smallHeadImgUrl": null }, { "wxid": "wxid_phyyedw9xap22", "nickName": "Ashley", "inviterUserName": "zhangchuan2288", "memberFlag": 1, "displayName": null, "bigHeadImgUrl": null, "smallHeadImgUrl": null }, { "wxid": "wxid_0xsqb3o0tsvz22", "nickName": "G", "inviterUserName": "zhangchuan2288", "memberFlag": 1, "displayName": null, "bigHeadImgUrl": null, "smallHeadImgUrl": null } ] } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» chatroomId|string|true|none||群ID| |»» nickName|string|true|none||群名称| |»» pyInitial|string|true|none||群名称的拼音首字母| |»» quanPin|string|true|none||群名称的全拼| |»» sex|integer|true|none||none| |»» remark|string|true|none||群备注,仅自己可见| |»» remarkPyInitial|string|true|none||群备注的拼音首字母| |»» remarkQuanPin|string|true|none||群备注的全拼| |»» chatRoomNotify|integer|true|none||群消息是否提醒| |»» chatRoomOwner|string|true|none||群主的wxid| |»» smallHeadImgUrl|string|true|none||群头像链接| |»» memberList|[object]|true|none||群成员列表| |»»» wxid|string|true|none||群成员的wxid| |»»» nickName|string|true|none||群成员的昵称| |»»» inviterUserName|string¦null|true|none||邀请人的wxid| |»»» memberFlag|integer|true|none||标识| |»»» displayName|null|true|none||在本群内的昵称| |»»» bigHeadImgUrl|null|true|none||大尺寸头像| |»»» smallHeadImgUrl|null|true|none||小尺寸头像| ## POST 获取群成员列表 POST /group/getChatroomMemberList > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "memberList": [ { "wxid": "zhangchuan2288", "nickName": "朝夕。", "inviterUserName": null, "memberFlag": 1, "displayName": null, "bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/T0MtLBu618rUlZqaAiaWfucmVibiawiciaSibPfz11siaLZr0qSxQTAR9lu7YicDwYAHNia1je79icxul6bzQ4LLZopiaM9EdYAEublPCLV29QKLv26ictBHjWsWnE0lvYGjibB9DkE6q/0", "smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/T0MtLBu618rUlZqaAiaWfucmVibiawiciaSibPfz11siaLZr0qSxQTAR9lu7YicDwYAHNia1je79icxul6bzQ4LLZopiaM9EdYAEublPCLV29QKLv26ictBHjWsWnE0lvYGjibB9DkE6q/132" }, { "wxid": "wxid_phyyedw9xap22", "nickName": "Ashley", "inviterUserName": "zhangchuan2288", "memberFlag": 1, "displayName": null, "bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/5ibSibfNKwpv0TLLuSFv2hibEBqShib4BKsaxHZ2v10y9F93ibO5lK4bwib47qtuwsLZD8HY7fVicibWlWvehCLDCdicy38NaIbVupuMZMDwiaXozjUhk/0", "smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/5ibSibfNKwpv0TLLuSFv2hibEBqShib4BKsaxHZ2v10y9F93ibO5lK4bwib47qtuwsLZD8HY7fVicibWlWvehCLDCdicy38NaIbVupuMZMDwiaXozjUhk/132" }, { "wxid": "wxid_0xsqb3o0tsvz22", "nickName": "G", "inviterUserName": "zhangchuan2288", "memberFlag": 2049, "displayName": "G1", "bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/FMkteDauMN35F3lhfavibDYpGibfHqrsMICtqBbWDfwfQOnIYfgHBpOJLLbac0Wf3odowXcePFHMzj954EeFOiaKcsgIaMedw5KWZhBpaLsFfSK5HNAE7AQODQ1FfrPiaTCh/0", "smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/FMkteDauMN35F3lhfavibDYpGibfHqrsMICtqBbWDfwfQOnIYfgHBpOJLLbac0Wf3odowXcePFHMzj954EeFOiaKcsgIaMedw5KWZhBpaLsFfSK5HNAE7AQODQ1FfrPiaTCh/132" }, { "wxid": "wxid_8pvka4jg6qzt22", "nickName": "白开水加糖", "inviterUserName": "wxid_phyyedw9xap22", "memberFlag": 2049, "displayName": null, "bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/3d34Q9DWL6pHiaASIBMIG3J9deRhwz4yKpZxGibDqiaRGmF6XckV0VSeRTGHSTq55bSwK1qF4Sy1JVXIkB7tYHpR4qPh3ECcodpkqRQjSwKUa4/0", "smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/3d34Q9DWL6pHiaASIBMIG3J9deRhwz4yKpZxGibDqiaRGmF6XckV0VSeRTGHSTq55bSwK1qF4Sy1JVXIkB7tYHpR4qPh3ECcodpkqRQjSwKUa4/132" } ], "chatroomOwner": "zhangchuan2288", "adminWxid": [ "wxid_8pvka4jg6qzt22" ] } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» memberList|[object]|true|none||群成员列表| |»»» wxid|string|true|none||群成员的wxid| |»»» nickName|string|true|none||群成员昵称| |»»» inviterUserName|string¦null|true|none||邀请人的wxid| |»»» memberFlag|integer|true|none||标识| |»»» displayName|string¦null|true|none||在本群内的昵称| |»»» bigHeadImgUrl|string|true|none||大尺寸头像| |»»» smallHeadImgUrl|string|true|none||小尺寸头像| |»» chatroomOwner|null|true|none||群主的wxid| |»» adminWxid|null|true|none||管理的wxid| ## POST 获取群成员详情 POST /group/getChatroomMemberDetail > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom", "memberWxids": [ "wxid_0xsqb3o0tsvz22", "wxid_phyyedw9xap22" ] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| |» memberWxids|body|[string]| 是 |none| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": [ { "userName": "wxid_0xsqb3o0tsvz22", "nickName": "G", "pyInitial": "G", "quanPin": "G", "sex": 0, "remark": null, "remarkPyInitial": null, "remarkQuanPin": null, "chatRoomNotify": 0, "signature": null, "alias": null, "snsBgImg": "http://shmmsns.qpic.cn/mmsns/s5BUfupeMYsJx3WHf6RyTxAqLUpGZPsgD9l68D5iaf7qibkcjz08RwNwDxj9ToFvnaicFD2X8CtPe4/0", "bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/tmlG7SpZJMJEh0dA14icl4CWnliaI8pKvVicEMaowRywgVpljBK3nmBib0jHG4eVo5hiaqS7Gg0p7GwCuHopGYqdNBu9WVtxMB8icSFGUjibCDPoGXicPic1r3gx3PQ4YMf3GPfXj/0", "smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/tmlG7SpZJMJEh0dA14icl4CWnliaI8pKvVicEMaowRywgVpljBK3nmBib0jHG4eVo5hiaqS7Gg0p7GwCuHopGYqdNBu9WVtxMB8icSFGUjibCDPoGXicPic1r3gx3PQ4YMf3GPfXj/132", "description": null, "cardImgUrl": null, "labelList": null, "country": "CN", "province": "Guangdong", "city": "Foshan", "phoneNumList": null, "friendUserName": "wxid_0xsqb3o0tsvz22", "inviterUserName": "zhangchuan2288", "memberFlag": 0 }, { "userName": "wxid_phyyedw9xap22", "nickName": "Ashley", "pyInitial": "ASHLEY", "quanPin": "Ashley", "sex": 2, "remark": "小号", "remarkPyInitial": "XH", "remarkQuanPin": "xiaohao", "chatRoomNotify": 0, "signature": "山林不向四季起誓 枯荣随缘。", "alias": "zero-one_200906", "snsBgImg": "http://shmmsns.qpic.cn/mmsns/UaAfqYic92wm7ZCrsEwlQMXSmBLs8dpwBzrXnrOyyP3B8bDibCCFInJ9PicC9LPYY17uWH1yIOmBYQ/0", "bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/buiaXybHTBK3BuGr1edN72zBDermWVFJ7YC8Jib2RcCSdiauAtZcPgUQpdhE9KY5NsumDAWD16fsg3A6OKuhdEr97VAHdTGgk6R1Eibuj7ZNwJ4/0", "smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/buiaXybHTBK3BuGr1edN72zBDermWVFJ7YC8Jib2RcCSdiauAtZcPgUQpdhE9KY5NsumDAWD16fsg3A6OKuhdEr97VAHdTGgk6R1Eibuj7ZNwJ4/132", "description": null, "cardImgUrl": null, "labelList": "27", "country": "AD", "province": null, "city": null, "phoneNumList": [ "\n\u000b14752126220" ], "friendUserName": "wxid_phyyedw9xap22", "inviterUserName": null, "memberFlag": null } ] } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|[object]|true|none||none| |»» userName|string|true|none||群成员的wxid| |»» nickName|string|true|none||群成员的昵称| |»» pyInitial|string|true|none||群成员昵称的拼音首字母| |»» quanPin|string|true|none||群成员昵称的全拼| |»» sex|integer|true|none||性别| |»» remark|string¦null|true|none||备注| |»» remarkPyInitial|string¦null|true|none||备注的拼音首字母| |»» remarkQuanPin|string¦null|true|none||备注的全拼| |»» chatRoomNotify|integer|true|none||消息通知| |»» signature|string¦null|true|none||签名| |»» alias|string¦null|true|none||微信号| |»» snsBgImg|string|true|none||朋友圈背景图链接| |»» bigHeadImgUrl|string|true|none||大尺寸头像| |»» smallHeadImgUrl|string|true|none||小尺寸头像| |»» description|null|true|none||描述| |»» cardImgUrl|null|true|none||描述的图片链接| |»» labelList|string¦null|true|none||标签列表,多个英文逗号分隔| |»» country|string|true|none||国家| |»» province|string¦null|true|none||省份| |»» city|string¦null|true|none||城市| |»» phoneNumList|[string]|true|none||手机号码| |»» friendUserName|string|true|none||好友的wxid| |»» inviterUserName|string¦null|true|none||邀请人的wxid| |»» memberFlag|integer¦null|true|none||标识| ## POST 获取群公告 POST /group/getChatroomAnnouncement > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "announcement": "群公告哈", "announcementEditor": "zhangchuan2288", "publishTime": 1703839509 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» announcement|string|true|none||群公告内容| |»» announcementEditor|string|true|none||群公告作者的wxid| |»» publishTime|integer|true|none||群公告发布时间| ## POST 设置群公告 POST /group/setChatroomAnnouncement 仅群主或管理员可以发布群公告 > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom", "content": "群公告哈" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| |» content|body|string| 是 |公告内容| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 同意进群 POST /group/agreeJoinRoom > Body 请求参数 ```json { "appId": "{{appid}}", "url": "https://support.weixin.qq.com/cgi-bin/mmsupport-bin/addchatroombyinvite?ticket=A%2FtYjg2L%2FGB%2FHYqOwzWNMQ%3D%3D" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» url|body|string| 是 |邀请进群回调消息中的url| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "chatroomId": "19189253160@chatroom" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» chatroomId|string|true|none||群ID| ## POST 添加群成员为好友 POST /group/addGroupMemberAsFriend 添加群成员为好友,若对方关闭从群聊添加的权限则添加失败 > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom", "content": "hallo", "memberWxid": "wxid_phyyedw9xap22" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| |» memberWxid|body|string| 是 |群成员的wxid| |» content|body|string| 是 |加好友的招呼语| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "v3": "v3_020b3826fd030100000000003a070e7757675c000000501ea9a3dba12f95f6b60a0536a1adb690dcccc9bf58cc80765e6eb16bffa5996420bb1b2577634516ff82090419d8bdcd5689df8dfb21d40af93d286f72c3a0e8cfa6dcb68afed39226f008c6@stranger" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» v3|string|true|none||添加群成员的v3,通过好友后会通过回调消息返回此值| ## POST 获取群二维码 POST /group/getChatroomQrCode ### 注意 - 在新设备登录后的1-3天内,无法使用本功能。在此期间,如果尝试进行获取,您将收到来自微信团队的提醒。请注意遵守相关规定。 - 生成的群二维码图片7天有效 > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "qrBase64": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/wAALCAG4AbgBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/AP1Tooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooor+Veiiiiiiv6qK/lXr+qiiiv5V6/qor+Vev6qKKKKK/lXoooooor+qiiiv5V6KK/qoor+Veiv6qKKK/lXr+qiv5V6KKKKKK/qoooooor+Vev6qKKKKK/lXr+qiiiv5V6KKKKKK/qor+Veiiiv6qKK/lXor+qiiv5V6K/qoor+Veiv6qKK/lXr+qiv5V6KK/qor+Vev6qKKKKK/lXr+qiiiiiiv5V6/qor+Veiiv6qK/lXr+qiiv5V6K/qoor+Veiiv6qK/lXor+qiv5V6/qoor+Veiv6qK/lXor+qiiv5V6/qor+Veiv6qKKKKK/lXor+qiv5V6/qor+Veiiv6qK/lXr+qiiiiiiv5V6/qor+Veiiv6qK/lXr+qiiv5V6K/qor+Veiiiv6qKK/lXor+qiiv5V6/qor+Veiiiv6qKK/lXr+qiiiiv5V6KK/qor+Vev6qKK/lXr+qiv5V6KK/qor+Vev6qKKKKKK/lXr+qiv5V6KK/qor+Vev6qK/lXr+qiiv5V6K/qooor+Veiiiv6qKK/lXoooor+qiv5V6KK/qor+Vev6qKK/lXoor+qiiiiv5V6/qor+Veiiv6qK/lXr+qiiiiiiv5V6/qooooor+Vev6qK/lXr+qiv5V6K/qoor+Vev6qK/lXr+qiiv5V6/qoor+Vev6qKKK/lXoor+qiv5V6KK/qoor+Veiv6qK/lXr+qiiiv5V6/qooooor+Vev6qKKKKKK/lXoooooor+qiv5V6/qor+Vev6qK/lXr+qiv5V6/qor+Vev6qK/lXr+qiv5V6/qor+Vev6qK/lXr+qiv5V6/qor+Vev6qK/lXr+qiv5V6/qor+Vev6qK/lXr+qiv5V6/qor+Vev6qK/lXoooooor+qiiiiiiiiiiiiiiiiiiiv5V6/qor+Veiiiv6qKKK/lXr+qiiiv5V6/qor+Veiv6qK/lXr+qiv5V6/qor+Veiv6qK/lXor+qiiiiiiiiiiiiiiiiv5V6KKKKKK/qor+Veiiv6qK/lXooooooor+qiv5V6KKKK/qoooooor+Veiv6qK/lXor+qiv5V6/qooor+Veiv6qKKK/lXr+qiiiiiiv5V6KKK/qor+Vev6qK/lXr+qiiv5V6/qor+Vev6qK/lXoor+qiv5V6K/qor+Veiiv6qKKK/lXr+qiv5V6KK/qooor+Veiiv6qKKK/lXor+qiiv5V6/qooooooooor+Vev6qK/lXoor+qiv5V6/qor+Veiiv6qKKK/lXoor+qiiiv5V6KKK/qor+Veiiv6qKK/lXr+qiiv5V6/qoor+Veiv6qKK/lXor+qiv5V6/qor+Veiiiv6qKKKKKKK/lXoor+qiv5V6/qooor+Vev6qKKKK/lXoor+qiiv5V6/qooooor+Vev6qKK/lXr+qiiv5V6/qoor+Veiiv6qKKK/lXooor+qiiiv5V6/qooooooor+Vev6qK/lXr+qiiv5V6K/qor+Vev6qK/lXoor+qiv5V6K/qor+Vev6qKKKK/lXr+qiiv5V6K/qor+Vev6qK/lXor+qiiv5V6KKK/qor+Veiv6qK/lXor+qiiiiv5V6/qoooooor+Vev6qK/lXoor+qiiiv5V6K/qor+Vev6qKKKK/lXor+qiiiiv5V6KKK/qooor+Veiv6qKKKKK/lXor+qiv5V6/qoor+Vev6qKKK/lXr+qiiiiiiiiv5V6K/qor+Vev6qK/lXoor+qiv5V6K/qor+Vev6qKKK/lXr+qiiv5V6/qor+Veiv6qK/lXoor+qiv5V6/qooooor+Veiiv6qKK/lXoor+qiiv5V6KKKK/qooooooor+Veiiv6qK/lXr+qiv5V6/qoooor+Veiv6qK/lXoor+qiv5V6K/qoor+Vev6qKKK/lXr+qiv5V6/qoooor+Veiiiiiiv6qK/lXr+qiv5V6/qor+Veiiv6qKKKKKK/lXr+qiv5V6/qoor+Veiiiv6qK/lXoooor+qiiv5V6K/qor+Veiiv6qK/lXor+qiiv5V6/qoor+Vev6qK/lXooor+qiv5V6/qoor+Veiv6qKK/lXr+qiiiiiiiiiv5V6/qooor+Vev6qKK/lXr+qiiiiv5V6K/qoor+Vev6qKKKKKK/lXr+qiiiiiv5V6/qoor+Vev6qK/lXr+qiv5V6KKK/qoor+Veiv6qK/lXor+qiiiiiiiiiv5V6/qor+Vev6qK/lXoor+qiiiv5V6K/qooooor+Veiiiiv6qK/lXor+qiiv5V6/qor+Vev6qKK/lXr+qiiiiiiiv5V6KKKK/qor+Veiv6qKKKKKKK/lXr+qiiv5V6/qooor+Vev6qK/lXr+qiv5V6/qor+Veiiiv6qK/lXoor+qiiv5V6K/qoor+Veiv6qK/lXoooor+qiv5V6KK/qoor+Veiiv6qKKKKKKKKKKKKKKK/lXoor+qiv5V6/qor+Vev6qKKKKKK/lXor+qiiv5V6K/qor+Vev6qKK/lXr+qiiv5V6/qoooor+Veiiiiv6qK/lXor+qiiv5V6K/qooooooooor+Vev6qK/lXor+qiiv5V6/qoor+Veiiv6qK/lXoor+qiv5V6KKK/qooor+Veiiiiv6qK/lXr+qiiv5V6K/qoooor+Veiv6qKK/lXr+qiiiiiiiiiv5V6KK/qor+Veiiiiiv6qKK/lXor+qiv5V6KKKK/qor+Veiiiiiv6qKK/lXr+qiv5V6/qoor+Vev6qKKK/lXr+qiv5V6KKKK/qor+Veiiv6qKKKKKKKK/lXoor+qiiiv5V6/qoor+Vev6qK/lXor+qiiiv5V6/qor+Vev6qK/lXr+qiiiv5V6/qooor+Vev6qKK/lXr+qiiv5V6/qoor+Veiv6qKKK/lXr+qiiiv5V6/qoooooooooor+Vev6qK/lXr+qiv5V6K/qoor+Veiv6qK/lXr+qiiv5V6/qoor+Veiv6qK/lXr+qiv5V6K/qor+Veiiv6qKKK/lXoor+qiiv5V6/qor+Vev6qK/lXoor+qiiiiiiiiiiiiv5V6/qooor+Veiiiv6qKKK/lXr+qiiv5V6KKKK/qooor+Vev6qKK/lXor+qiv5V6/qoor+Veiiv6qKK/lXr+qiiiv5V6KKKK/qooooooor+Veiiiiiiiiiv6qKK/lXr+qiv5V6/qor+Vev6qK/lXr+qiv5V6KKKKKK/qoor+Vev6qK/lXor+qiiiv5V6/qoor+Veiiiiiiv6qK/lXr+qiiiiiiv5V6/qooor+Veiv6qK/lXoor+qiv5V6/qor+Veiv6qKK/lXoor+qiv5V6/qor+Vev6qK/lXoor+qiiiiv5V6K/qooor+Veiv6qK/lXor+qiv5V6/qor+Vev6qK/lXor+qiiiiiiv5V6K/qor+Veiiiiv6qK/lXor+qiiiiv5V6K/qoor+Veiiiv6qK/lXor+qiiv5V6KKK/qor+Vev6qK/lXoor+qiv5V6KK/qoooor+Vev6qK/lXr+qiiiiiiv5V6KK/qoooor+Veiiv6qKK/lXoor+qiv5V6KKK/qooor+Vev6qKK/lXooooor+qiv5V6/qor+Vev6qK/lXr+qiiiv5V6/qor+Veiiv6qK/lXr+qiiiiiiiiiiiv5V6KKK/qor+Vev6qKKK/lXr+qiiv5V6/qooooor+Vev6qKK/lXor+qiv5V6K/qoor+Vev6qK/lXoooooooor+qiv5V6KK/qor+Vev6qKKKKKK/lXr+qiv5V6/qor+Veiv6qKKK/lXor+qiv5V6/qor+Veiv6qKK/lXr+qiv5V6KK/qoor+Veiiv6qK/lXr+qiiiiv5V6/qor+Vev6qKK/lXor+qiiv5V6K/qooooooooooooor+Vev6qK/lXor+qiiiiv5V6K/qor+Veiv6qKKK/lXr+qiiv5V6K/qoor+Vev6qK/lXooooooor+qiv5V6/qor+Veiiiiiiiiv6qKKKKKKKK/lXr+qiiiv5V6/qor+Veiiv6qK/lXr+qiv5V6/qoor+Vev6qKK/lXr+qiv5V6K/qor+Vev6qKK/lXooor+qiv5V6/qoooor+Vev6qKK/lXr+qiiv5V6/qooor+Vev6qKKKKKKKK/lXoor+qiv5V6KKKK/qor+Vev6qK/lXr+qiiiiiiv5V6KK/qooooor+Vev6qKK/lXoooor+qiiiiiv5V6K/qor+Veiv6qKK/lXr+qiiiiiiiv5V6KKK/qooooor+Vev6qK/lXr+qiv5V6KK/qooooor+Veiv6qK/lXr+qiv5V6/qor+Vev6qK/lXor+qiiiv5V6K/qooooor+Veiv6qKKKKKKKKKK/lXor+qiv5V6K/qor+Vev6qK/lXr+qiiiv5V6K/qor+Vev6qKKK/lXor+qiv5V6/qor+Vev6qKK/lXr+qiv5V6KK/qooor+Veiv6qK/lXoor+qiiv5V6/qor+Veiiv6qKKKKKKKKK/lXr+qiv5V6K/qor+Vev6qK/lXr+qiiiv5V6/qoooor+Veiv6qKK/lXr+qiiv5V6K/qoor+Veiv6qK/lXr+qiiv5V6KK/qoor+Vev6qKK/lXr+qiv5V6/qor+Vev6qKKKKKKKK/lXr+qiiiv5V6KK/qor+Vev6qK/lXoooor+qiiiiiv5V6K/qooor+Veiiv6qKK/lXr+qiiiiv5V6KKKKKKKK/qooor+Vev6qKKKKKKK/lXoor+qiiiv5V6KK/qooor+Vev6qKKK/lXoor+qiiiiiv5V6KKK/qor+Veiiiv6qK/lXr+qiiiiiv5V6/qor+Vev6qK/lXr+qiv5V6K/qoooooor+Veiiv6qKKK/lXor+qiv5V6K/qor+Vev6qKK/lXooor+qiiv5V6KKKKK/qoor+Veiv6qKKKK/lXoor+qiv5V6KKKKK/qooor+Vev6qKKKKKKKKKKKKKK/lXor+qiv5V6/qoor+Veiiiv6qKK/lXoor+qiiiv5V6K/qoor+Veiiiv6qK/lXor+qiiiv5V6/qooor+Vev6qKKKKKKKKKK/lXoooooor+qiv5V6/qoor+Vev6qK/lXor+qiiv5V6KKKKK/qor+Vev6qK/lXoooor+qiv5V6/qoor+Vev6qK/lXr+qiiv5V6/qor+Vev6qK/lXor+qiiv5V6/qoooooor+Vev6qKKKKK/lXr+qiv5V6/qooor+Vev6qKK/lXor+qiv5V6/qooor+Vev6qKKK/lXor+qiiv5V6/qor+Veiiiiiiiiv6qKKK/lXr+qiiv5V6K/qoooooor+Vev6qK/lXoor+qiv5V6/qor+Vev6qK/lXooor+qiv5V6/qor+Veiv6qKKK/lXoooor+qiiv5V6KK/qor+Vev6qK/lXooooooooor+qiv5V6/qor+Vev6qKKKKKK/lXr+qiv5V6KK/qor+Vev6qK/lXor+qiv5V6/qoooooor+Veiv6qK/lXor+qiiiiiv5V6KK/qor+Vev6qKK/lXr+qiv5V6/qor+Vev6qK/lXor+qiv5V6/qor+Veiiv6qKKKKKK/lXr+qiv5V6KK/qor+Vev6qK/lXr+qiv5V6KKKKKKK/qoor+Veiv6qK/lXor+qiv5V6K/qor+Vev6qKKK/lXor+qiv5V6KK/qor+Veiv6qK/lXr+qiiv5V6KK/qoooooor+Vev6qKKKKK/lXr+qiv5V6K/qoor+Vev6qKK/lXoor+qiv5V6K/qor+Vev6qKKKK/lXr+qiv5V6/qoor+Veiv6qK/lXor+qiiv5V6K/qor+Vev6qK/lXr+qiiiv5V6/qoooooor+Veiiiiiiv6qKK/lXr+qiiv5V6KK/qooor+Vev6qKK/lXoor+qiv5V6K/qoooor+Vev6qKKK/lXoor+qiiv5V6/qoooor+Veiiiv6qKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK//2Q==", "qrTips": "该二维码7天内(1月5日前)有效,重新进入将更新" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» qrBase64|string|true|none||群二维码图片的base64| |»» qrTips|string|true|none||群二维码的提示| ## POST 群保存到通讯录 POST /group/saveContractList > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom", "operType": 3 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| |» operType|body|integer| 是 |操作类型 3保存到通讯录 2从通讯录移除| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 管理员操作 POST /group/adminOperate 添加、删除群管理员,转让群主 > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom", "operType": 1, "wxids": [ "wxid_0xsqb3o0tsvz22" ] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| |» operType|body|integer| 是 |操作类型 1:添加群管理(可添加多个微信号) 2:删除群管理(可删除多个) 3:转让(只能转让一个微信号)| |» wxids|body|[string]| 是 |none| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 聊天置顶 POST /group/pinChat > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom", "top": true } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| |» top|body|boolean| 是 |是否置顶| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 设置消息免打扰 POST /group/setMsgSilence > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom", "silence": true } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| |» silence|body|boolean| 是 |是否免打扰| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 扫码进群 POST /group/joinRoomUsingQRCode qrUrl是通过解析群二维码图片获得的内容 > Body 请求参数 ```json { "appId": "{{appid}}", "qrUrl": "https://weixin.qq.com/g/AwYAALLELoeKLg-qWAtkYtBdyTg_i2TG22w1GS-cL1GFO9J4AemIyZAw7RSuIpZw" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» qrUrl|body|string| 是 |二维码的链接| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "chatroomName": "GeWe-test-room(2)", "html": null, "chatroomId": "34559815390@chatroom" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» chatroomName|string|true|none||群名称| |»» html|null|true|none||none| |»» chatroomId|string|true|none||群ID| ## POST 确认进群申请 POST /group/roomAccessApplyCheckApprove 群聊开启邀请确认后,有人申请进群时群主和管理员会收到进群申请,本接口用于确认进群申请 > Body 请求参数 ```json { "appId": "{{appid}}", "chatroomId": "34757816141@chatroom", "msgContent": "\n\t\n\t\t \n\t\t \n\t\t\troomaccessapplycheck_approve\n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\t1\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\n\t\t\t\n\t\t\n\t\t \n\t\n", "newMsgId": "8866462780395237368" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» chatroomId|body|string| 是 |群ID| |» newMsgId|body|string| 是 |消息ID| |» msgContent|body|string| 是 |消息内容| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| # 基础API/消息模块 ## POST 发送文字消息 POST /message/postText #### 注意 在群内发送消息@某人时,content中需包含@xxx > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "wxid_tdkou97nquqz22", "ats": "wxid_phyyedw9xap22", "content": "@猿猴 我在测试艾特内容" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» content|body|string| 是 |消息内容| |» ats|body|string| 否 |@的好友,多个英文逗号分隔。群主或管理员@全部的人,则填写'notify@all'| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 1703841160, "msgId": 0, "newMsgId": 3768973957878705000, "type": 1 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 发送文件消息 POST /message/postFile > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "fileName": "a909.xls", "fileUrl": "https://scrm-1308498490.cos.ap-shanghai.myqcloud.com/pkg/a909-99066ce80e03.xls?q-sign-algorithm=sha1&q-ak=AKIDmOkqfDUUDfqjMincBSSAbleGaeQv96mB&q-sign-time=1703841209;1703848409&q-key-time=1703841209;1703848409&q-header-list=&q-url-param-list=&q-signature=2a60b0f8d9169550cd83c4a3ca9cd18138b4bb88" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» fileUrl|body|string| 是 |文件链接| |» fileName|body|string| 是 |文件名| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 1703841225, "msgId": 769523509, "newMsgId": 4399037329770756000, "type": 6 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 发送图片消息 POST /message/postImage #### 注意 发送图片接口会返回cdn相关的信息,如有需求同一张图片发送多次,第二次及以后发送时可使用接口返回的cdn信息拼装xml调用[转发图片接口](https://apifox.com/apidoc/shared-69ba62ca-cb7d-437e-85e4-6f3d3df271b1/api-196794551),这样可以缩短发送时间 > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "imgUrl": "http://dummyimage.com/400x400" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» imgUrl|body|string| 是 |图片链接| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 0, "msgId": 640355969, "newMsgId": 8992614056172360000, "type": null, "aesKey": "7678796e6d70626e6b626c6f7375616b", "fileId": "3052020100044b30490201000204e49785f102033d11fd0204136166b4020465966eea042437646265323234362d653662662d343464392d393363362d3139313661363863646266390204052418020201000400", "length": 1096, "width": 400, "height": 400, "md5": "e6355eab0393facbd6a2cde3f990ef60" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|null|true|none||消息类型| |»» aesKey|string|true|none||cdn相关的aeskey| |»» fileId|string|true|none||cdn相关的fileid| |»» length|integer|true|none||图片文件大小| |»» width|integer|true|none||图片宽度| |»» height|integer|true|none||图片高度| |»» md5|string|true|none||图片md5| ## POST 发送语音消息 POST /message/postVoice > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "voiceUrl": "https://scrm-1308498490.cos.ap-shanghai.myqcloud.com/pkg/response.silk?q-sign-algorithm=sha1&q-ak=AKIDmOkqfDUUDfqjMincBSSAbleGaeQv96mB&q-sign-time=1703841529;1703848729&q-key-time=1703841529;1703848729&q-header-list=&q-url-param-list=&q-signature=781831fe71ad4bbb582715bf197a9cf86ec80c97", "voiceDuration": 2000 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» voiceUrl|body|string| 是 |语音文件的链接,仅支持silk格式| |» voiceDuration|body|integer| 是 |语音时长,单位毫秒| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 1704357563, "msgId": 640355967, "newMsgId": 2321462558768366600, "type": null } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 发送视频消息 POST /message/postVideo #### 注意 发送视频接口会返回cdn相关的信息,如有需求同一个视频发送多次,第二次及以后发送时可使用接口返回的cdn信息拼装xml调用[转发视频接口](https://apifox.com/apidoc/shared-69ba62ca-cb7d-437e-85e4-6f3d3df271b1/api-196794552),这样可以缩短发送时间 > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "{{toWxid}}", "videoUrl": "https://scrm-1308498490.cos.ap-shanghai.myqcloud.com/1/41734f00f3803ca1cd8f5ad6d5f8d559.mp4?q-sign-algorithm=sha1&q-ak=AKIDmOkqfDUUDfqjMincBSSAbleGaeQv96mB&q-sign-time=1724227372;2588140972&q-key-time=1724227372;2588140972&q-header-list=&q-url-param-list=&q-signature=4e18eb97ab165f27afe0444516e54204f506c7e1", "thumbUrl": "https://scrm-1308498490.cos.ap-shanghai.myqcloud.com/1/logo.jpg?q-sign-algorithm=sha1&q-ak=AKIDmOkqfDUUDfqjMincBSSAbleGaeQv96mB&q-sign-time=1724227462;2588141062&q-key-time=1724227462;2588141062&q-header-list=&q-url-param-list=&q-signature=0bc8b973567d2672e5eaada1b5d466e23ce6b750", "videoDuration": 10 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» videoUrl|body|string| 是 |视频的链接| |» thumbUrl|body|string| 是 |缩略图的链接| |» videoDuration|body|integer| 是 |视频的播放时长,单位秒| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": null, "msgId": 769523567, "newMsgId": 945590746179451500, "type": null, "aesKey": "687a636f627579667a756a7168717968", "fileId": "3052020100044b304902010002043904752002033d11ff02045dd79b240204658e9072042466633131376136662d366566632d343638662d613633662d3536316139616133383362350204012400040201000400", "length": 1315979 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|null|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|null|true|none||消息类型| |»» aesKey|string|true|none||cdn相关的aeskey| |»» fileId|string|true|none||cdn相关的fileid| |»» length|integer|true|none||视频文件大小| ## POST 发送链接消息 POST /message/postLink > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "title": "澳门这一夜", "desc": "39岁郭碧婷用珠圆玉润的身材,狠狠打脸了白幼瘦女星", "linkUrl": "https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_8864265500294006781%22%7D&n_type=-1&p_from=-1", "thumbUrl": "https://pics3.baidu.com/feed/0824ab18972bd407a9403f336648d15c0db30943.jpeg@f_auto?token=d26f7f142871542956aaa13799ba1946" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» title|body|string| 是 |链接标题| |» desc|body|string| 是 |链接描述| |» linkUrl|body|string| 是 |链接地址| |» thumbUrl|body|string| 是 |链接缩略图地址| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 1703841982, "msgId": 769523572, "newMsgId": 3358797740318931000, "type": 5 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 发送名片消息 POST /message/postNameCard > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "nickName": "谭艳", "nameCardWxid": "wxid_0xsqb3o0tsvz22" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» nickName|body|string| 是 |名片的昵称| |» nameCardWxid|body|string| 是 |名片的wxid| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 1703842036, "msgId": 0, "newMsgId": 3285058507819179500, "type": 42 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 发送emoji消息 POST /message/postEmoji > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "emojiMd5": "4cc7540a85b5b6cf4ba14e9f4ae08b7c", "emojiSize": 102357 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» emojiMd5|body|string| 是 |emoji图片的md5| |» emojiSize|body|integer| 是 |emoji的文件大小| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": null, "msgId": 769523643, "newMsgId": 891398861855787000, "type": null } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 发送appmsg消息 POST /message/postAppMsg #### 注意 本接口可用于发送所有包含节点的消息,例如:音乐分享、视频号、引用消息等等 > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "appmsg": "\n\t\t一审宣判!蔡鄂生被判死缓\n\t\t\n\t\t\n\t\t5\n\t\t0\n\t\t0\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t0\n\t\thttp://mp.weixin.qq.com/s?__biz=MjM5MjAxNDM4MA==&mid=2666774093&idx=1&sn=aa405094dd00034d004f6e8287f86e9b&chksm=bcc9d903635a9c284591edda1f027c467245d922d7d66c32d3cd2c6af1c969a7ea0896aa7639&scene=0&xtrack=1#rd\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t0\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t3057020100044b304902010002048399cc8402032f57ed02041388e6720204658e922d042462666538346165322d303035382d343262322d616538322d3337306231346630323534360204051408030201000405004c53d900\n\t\t\tea3d5e8d4059cb4db0a3c39c789f2d6f\n\t\t\t93065\n\t\t\t1080\n\t\t\t459\n\t\t\t849df42ab37c8cadb324fe94ba46d76e\n\t\t\t849df42ab37c8cadb324fe94ba46d76e\n\t\t\t0\n\t\t\n\t\t\n\t\tgh_363b924965e9\n\t\t人民日报\n\t\thttps://mmbiz.qpic.cn/sz_mmbiz_jpg/xrFYciaHL08DCJtwQefqrH8JcohbOHhTpyCPab8IgDibkTv3Pspicjw8TRHnoic2tmiafBtUHg7ObZznpWocwkCib6Tw/640?wxtype=jpeg&wxfrom=0\n\t\t\n\t\t\n\t\t\n\t\t\t0\n\t\t\n\t" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» appmsg|body|string| 是 |回调消息中的appmsg节点内容| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 1703842453, "msgId": 769523712, "newMsgId": 3090682956820882400, "type": 0 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 发送小程序消息 POST /message/postMiniApp > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "miniAppId": "wx1f9ea355b47256dd", "userName": "gh_690acf47ea05@app", "title": "最快29分钟 好吃水果送到家", "coverImgUrl": "https://che-static.vzhimeng.com/img/2023/10/30/67d55942-e43c-4fdb-8396-506794ddbdbc.jpg", "pagePath": "pages/homeDelivery/index.html", "displayName": "百果园+" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» miniAppId|body|string| 是 |小程序ID| |» displayName|body|string| 是 |小程序名称| |» pagePath|body|string| 是 |小程序打开的地址| |» coverImgUrl|body|string| 是 |小程序封面图链接| |» title|body|string| 是 |小程序标题| |» userName|body|string| 是 |归属的用户ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 1704162674, "msgId": 769533691, "newMsgId": 3190424380344821000, "type": 33 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 转发文件 POST /message/forwardFile > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "xml": "\n\n\t\n\t\tinfo.json\n\t\t\n\t\t\n\t\t6\n\t\t0\n\t\t0\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t0\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t63\n\t\t\t@cdn_3057020100044b304902010002043904752002032f7d6d02046bb5bade02046593760c042433653765306131612d646138622d346662322d383239362d3964343665623766323061370204051400050201000405004c53d900_f46be643aa0dc009ae5fb63bbc73335d_1\n\t\t\t\n\t\t\tjson\n\t\t\t3057020100044b304902010002043904752002032f7d6d02046bb5bade02046593760c042433653765306131612d646138622d346662322d383239362d3964343665623766323061370204051400050201000405004c53d900\n\t\t\tf46be643aa0dc009ae5fb63bbc73335d\n\t\t\t0\n\t\t\t594239960546299206\n\t\t\tv1_0bgfyCkUmoZYYyvXys0cCiJdd2R/pKPdD2TNi9IY6FOt+Tvlhp3ijUoupZHzyB2Lp7xYgdVFaUGL4iu3Pm9/YACCt20egPGpT+DKe+VymOzD7tJfsS8YW7JObTbN8eVoFEetU5HSRWTgS/48VVsPZMoDF6Gz1XJDLN/dWRxvzrbOzVGGNvmY4lpXb0kRwXkSxwL+dO4=\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\td16070253eee7173e467dd7237d76f60\n\t\t\n\t\n\tzhangchuan2288\n\t0\n\t\n\t\t1\n\t\t\n\t\n\t\n" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» xml|body|string| 是 |文件消息的xml| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 1704162866, "msgId": 769533740, "newMsgId": 6455486805605396000, "type": 6 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 转发图片 POST /message/forwardImage #### 注意 若通过发送图片消息获取cdn信息后可替换xml中的aeskey、cdnthumbaeskey、cdnthumburl、cdnmidimgurl、length、md5等参数来进行转发 > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "xml": "\n\n\t\n\t\n\t\n" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» xml|body|string| 是 |文件消息的xml| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 0, "msgId": 769533749, "newMsgId": 7003061792458481000, "type": null, "aesKey": "294774c8ac2ca8f8114e4d58d2ba78a5", "fileId": "3057020100044b304902010002043904752002032f7d6d02046bb5bade020465937656042436626431373937632d613430642d346137662d626230352d3832613335353935333130630204051818020201000405004c543d00", "length": null, "width": null, "height": null, "md5": null } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|null|true|none||消息类型| |»» aesKey|string|true|none||cdn相关的aeskey| |»» fileId|string|true|none||cdn相关的fileid| |»» length|integer|true|none||图片文件大小| |»» width|integer|true|none||图片宽度| |»» height|integer|true|none||图片高度| |»» md5|string|true|none||图片md5| ## POST 转发视频 POST /message/forwardVideo #### 注意 若通过发送视频消息获取cdn信息后可替换xml中的aeskey、cdnthumbaeskey、cdnvideourl、cdnthumburl、length等参数来进行转发 > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "xml": "\n\n\t\n" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» xml|body|string| 是 |文件消息的xml| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": null, "msgId": 769533762, "newMsgId": 2099537549112929300, "type": null, "aesKey": "5c5163d06757faae44eacc2146ba0575", "fileId": null, "length": 490566 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|null|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|null|true|none||消息类型| |»» aesKey|string|true|none||cdn相关的aeskey| |»» fileId|string|true|none||cdn相关的fileid| |»» length|integer|true|none||视频文件大小| ## POST 转发链接 POST /message/forwardUrl > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "xml": "\n\n\t\n\t\t“李在明遇袭,颈部出血”\n\t\t\n\t\t\n\t\t5\n\t\t0\n\t\t0\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t0\n\t\thttp://mp.weixin.qq.com/s?__biz=MjM5MzI5NTU3MQ==&mid=2652294920&idx=1&sn=ad415f5d83e1471b845b2cb3fca7c3ce&chksm=bce58367ee6ae84b711255705422d1554ee96b92d75648751316639d4aa09289d7827ff1cc85&scene=0&xtrack=1#rd\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t0\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t3057020100044b304902010002048399cc8402032f7d6d020468b5bade0204659376ec042463663234636366642d323736612d343533342d623734342d3864623065633235636135390204051808030201000405004c56f900\n\t\t\t8e32cafa882f9b4f7c51fb568c0c4f8e\n\t\t\t38637\n\t\t\t658\n\t\t\t280\n\t\t\taccc71cbe8ff795a94583fc514d198a8\n\t\t\taccc71cbe8ff795a94583fc514d198a8\n\t\t\t0\n\t\t\n\t\t\n\t\tgh_d29e0d22a6f9\n\t\t澎湃新闻\n\t\thttps://mmbiz.qpic.cn/mmbiz_jpg/yl6JkZAE3SibWvw5icQJpv87X084SRJOVeS3k7KMscRzov1nwicjMYzicyBIpRdJchWKTGPf4eN2H07Jicl11zMK2Pw/640?wxtype=jpeg&wxfrom=0\n\t\t\n\t\t\n\t\t\n\t\t\t0\n\t\t\n\t\n\tzhangchuan2288\n\t0\n\t\n\t\t1\n\t\t\n\t\n\t\n" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» xml|body|string| 是 |文件消息的xml| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 1704163083, "msgId": 769533781, "newMsgId": 1947412320722133800, "type": 5 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 转发小程序 POST /message/forwardMiniApp > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "xml": "\n\n\t\n\t\t👇晒出新年第一杯,点赞赢饮茶月卡\n\t\t\n\t\t\n\t\t33\n\t\t0\n\t\t0\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t0\n\t\thttps://mp.weixin.qq.com/mp/waerrpage?appid=wxafec6f8422cb357b&type=upgrade&upgradetype=3#wechat_redirect\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t0\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t3057020100044b30490201000204573515c902032f7d6d020416b7bade020465922a53042437383139393934652d323662652d346430662d396466362d3466303137346139616362390204051408030201000405004c53d900\n\t\t\t33cf0a1101e7f8cd3057cd417a691f0b\n\t\t\t96673\n\t\t\t600\n\t\t\t500\n\t\t\t6f3098f2ee8b351b6cc9b1818d580356\n\t\t\t6f3098f2ee8b351b6cc9b1818d580356\n\t\t\t0\n\t\t\n\t\t\n\t\tgh_e9d25e745aae@app\n\t\t霸王茶姬\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t2\n\t\t\t193\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t0\n\t\t\t\t\n\t\t\t\n\t\t\t0\n\t\t\n\t\n\tzhangchuan2288\n\t0\n\t\n\t\t1\n\t\t\n\t\n\t\n", "coverImgUrl": "http://dummyimage.com/400x400" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» xml|body|string| 是 |文件消息的xml| |» coverImgUrl|body|string| 是 |小程序封面图链接| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "toWxid": "34757816141@chatroom", "createTime": 1704163145, "msgId": 769533801, "newMsgId": 5271007655758710000, "type": 33 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» toWxid|string|true|none||接收人的wxid| |»» createTime|integer|true|none||发送时间| |»» msgId|integer|true|none||消息ID| |»» newMsgId|integer|true|none||消息ID| |»» type|integer|true|none||消息类型| ## POST 撤回消息 POST /message/revokeMsg > Body 请求参数 ```json { "appId": "{{appid}}", "toWxid": "34757816141@chatroom", "msgId": "769533801", "newMsgId": "5271007655758710001", "createTime": "1704163145" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» toWxid|body|string| 是 |好友/群的ID| |» msgId|body|string| 是 |发送类接口返回的msgId| |» newMsgId|body|string| 是 |发送类接口返回的newMsgId| |» createTime|body|string| 是 |发送类接口返回的createTime| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| # 基础API/消息模块/下载 ## POST 下载图片 POST /message/downloadImage **注意** 如果下载图片失败,可尝试下载另外两种图片类型,并非所有图片都会有高清、常规图片 > Body 请求参数 ```json { "appId": "{{appid}}", "type": 2, "xml": "\n\n\t\n\t\n\t\n\t\n\t\t\n\t\t0\n\t\n\n" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» xml|body|string| 是 |回调消息中的XML| |» type|body|integer| 是 |下载的图片类型 1:高清图片 2:常规图片 3:缩略图| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "fileUrl": "/download/20240720/wx_BTVoJ_o_r6DpxNCNiycFE/0ca5b675-8e2c-4dc1-b288-3c44a40086ec4" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» fileUrl|string|true|none||图片链接地址,7天有效| # 基础API/标签模块 ## POST 添加标签 POST /label/add #### 注意 标签名称不存在则是添加标签,如果标签名称已经存在,此接口会直接返回标签名及ID > Body 请求参数 ```json { "appId": "{{appid}}", "labelName": "testtest" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» labelName|body|string| 是 |标签名称| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "labelName": "testtest", "labelId": 31 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» labelName|string|true|none||标签名称| |»» labelId|integer|true|none||标签ID| ## POST 删除标签 POST /label/delete > Body 请求参数 ```json { "appId": "{{appid}}", "labelIds": "31" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» labelIds|body|string| 是 |标签ID,多个逗号分隔| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 标签列表 POST /label/list > Body 请求参数 ```json { "appId": "{{appid}}" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "labelList": [ { "labelName": "朋友", "labelId": 1 } ] } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» labelList|[object]|true|none||none| |»»» labelName|string|false|none||标签名称| |»»» labelId|integer|false|none||标签ID| ## POST 修改好友标签 POST /label/modifyMemberList #### 注意 由于好友标签信息存储在用户客户端,因此每次在修改时都需要进行全量修改。举例来说,考虑好友A(wxid_asdfaihp123),该好友已经被标记为标签ID为1和2。 在添加标签ID为3时,传递的参数如下:labelIds:1,2,3,wxIds:[wxid_asdfaihp123]。这表示要给好友A添加标签ID为3,同时保留已有的标签ID 1和2。 而在删除标签ID为1时,传递的参数如下:labelIds:2,3 ,wxIds:[wxid_asdfaihp123]。这表示要将好友A的标签ID 1删除,而保留标签ID 2。 > Body 请求参数 ```json { "appId": "{{appid}}", "labelIds": "15", "wxIds": [ "zhangchuan2288" ] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» labelIds|body|string| 是 |标签ID,多个逗号分隔| |» wxIds|body|[string]| 是 |修改的好友wxid| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| # 基础API/个人模块 ## POST 获取个人资料 POST /personal/getProfile > Body 请求参数 ```json { "appId": "{{appid}}", "proxyIp": "" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "alias": null, "wxid": "zhangchuan2288", "nickName": "朝夕。", "mobile": "18761670817", "uin": 1042679712, "sex": 1, "province": "Jiangsu", "city": "Xuzhou", "signature": ".......", "country": "CN", "bigHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/REoLX7KfdibFAgDbtoeXGNjE6sGa8NCib8UaiazlekKjuLneCvicM4xQpuEbZWjjQooSicsKEbKdhqCOCpTHWtnBqdJicJ0I3CgZumwJ6SxR3ibuNs/0", "smallHeadImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/REoLX7KfdibFAgDbtoeXGNjE6sGa8NCib8UaiazlekKjuLneCvicM4xQpuEbZWjjQooSicsKEbKdhqCOCpTHWtnBqdJicJ0I3CgZumwJ6SxR3ibuNs/132", "regCountry": "CN", "snsBgImg": "http://shmmsns.qpic.cn/mmsns/FzeKA69P5uIdqPfQxp59LvOohoE2iaiaj86IBH1jl0F76aGvg8AlU7giaMtBhQ3bPibunbhVLb3aEq4/0" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» alias|string|true|none||微信号| |»» wxid|string|true|none||微信ID| |»» nickName|string|true|none||昵称| |»» mobile|string|true|none||绑定的手机号| |»» uin|integer|true|none||uin| |»» sex|integer|true|none||性别| |»» province|string|true|none||省份| |»» city|string|true|none||城市| |»» signature|string|true|none||签名| |»» country|string|true|none||国家| |»» bigHeadImgUrl|string|true|none||大尺寸头像| |»» smallHeadImgUrl|string|true|none||小尺寸头像| |»» regCountry|string|true|none||注册国家| |»» snsBgImg|string|true|none||朋友圈背景图| ## POST 获取自己的二维码 POST /personal/getQrCode > Body 请求参数 ```json { "appId": "{{appid}}", "proxyIp": "" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "qrCode": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAIAAgADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5kooor8XP6jCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK1tP03biWUc9lPb61+7FfUYXIaten7SpLlv0tf9UfAZhxdQwlZ0aFP2lt3eyv5aO5+CNFfvdRXZ/q5/wBPv/Jf+CeZ/rv/ANQ3/k//ANqfgjRX73UUf6uf9Pv/ACX/AIIf67/9Q3/k/wD9qfgjRX73UUf6uf8AT7/yX/gh/rv/ANQ3/k//ANqfgjRX73UUf6uf9Pv/ACX/AIIf67/9Q3/k/wD9qfgjRX73UUf6uf8AT7/yX/gh/rv/ANQ3/k//ANqfgjRX73UUf6uf9Pv/ACX/AIIf67/9Q3/k/wD9qfgjRX73UUf6uf8AT7/yX/gh/rv/ANQ3/k//ANqfgjRX73UUf6uf9Pv/ACX/AIIf67/9Q3/k/wD9qfgjRX73UUf6uf8AT7/yX/gh/rv/ANQ3/k//ANqfgjRX73UUf6uf9Pv/ACX/AIIf67/9Q3/k/wD9qfgjRX73UUf6uf8AT7/yX/gh/rv/ANQ3/k//ANqfgjRX73UUf6uf9Pv/ACX/AIIf67/9Q3/k/wD9qfgjRX73UUf6uf8AT7/yX/gh/rv/ANQ3/k//ANqfgjRX73UUf6uf9Pv/ACX/AIIf67/9Q3/k/wD9qfgjRX73UUf6uf8AT7/yX/gh/rv/ANQ3/k//ANqfgjRX73UUf6uf9Pv/ACX/AIIf67/9Q3/k/wD9qfgjRX73UUf6uf8AT7/yX/gh/rv/ANQ3/k//ANqfgjRX73UUf6uf9Pv/ACX/AIIf67/9Q3/k/wD9qfgjRX73UUf6uf8AT7/yX/gh/rv/ANQ3/k//ANqfgjRRRXxZ+pBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSqpdgqjJPQCmk27IltRV3sABYgAZJ7Vr6fpwhxJKMv2HpT7DTxbgO/Mn8qu193leUKlaviF73RdvXz/ACPyPiDiR4i+EwT9zrLv5Ly/P03K/cavw5r9xq+sPzo/A/xF4ixutbVvZ5Af0Fc7Z2ct/OsMK7nP5D3NFnZy386wwruc/kPc1/QlSSsU227s/CjSdJi0qDYnzSH7745P/wBasbxF4ixutbVvZ5Af0FfvhRSsU56WR/PbZ2ct/OsMK7nP5D3Nd3pOkxaVBsT5pD998cn/AOtX7r0U2rijJR6H4H+IvEWN1rat7PID+gr98K/nts7OW/nWGFdzn8h7mv6EqFoKTctWFFfgf4i8RY3Wtq3s8gP6Cv3woQSSTsj+e2zs5b+dYYV3OfyHua/oSr8KNJ0mLSoNifNIfvvjk/8A1q/dehO45R5Uj8D/ABF4ixutbVvZ5Af0FfvhRX4EeHvDxuitzcriHqqH+L3+lGwazZ++9fhZqGoQ6XbGSQ4A4VR1J9BX7p0UNXCMuU/nx1HUZdTuDLKfZVHRRWv4e8PG6K3NyuIeqof4vf6V++9fhZqGoQ6XbGSQ4A4VR1J9BSemxUFd3YahqEOl2xkkOAOFUdSfQV+6dfz46jqMup3BllPsqjoorX8PeHjdFbm5XEPVUP8AF7/ShaA3zuyP33r8LNQ1CHS7YySHAHCqOpPoKNQ1CHS7YySHAHCqOpPoK4TUdRl1O4Msp9lUdFFL4h/ww1HUZdTuDLKfZVHRRWv4e8PG6K3NyuIeqof4vf6V++9FUZp63Z+FmoahDpdsZJDgDhVHUn0FcJqOoy6ncGWU+yqOiiv6DqKErDlNyPwI8PeHjdFbm5XEPVUP8Xv9K6TUNQh0u2MkhwBwqjqT6Cv3TopNXGp8qskfz46jqMup3BllPsqjoor+g6vwI8PeHjdFbm5XEPVUP8Xv9K/femS092fhZqGoQ6XbGSQ4A4VR1J9BXCajqMup3BllPsqjooo1HUZdTuDLKfZVHRRX9B1JKxUpcx+BHh7w8borc3K4h6qh/i9/pXSahqEOl2xkkOAOFUdSfQV+6dFDVwU+VWSP58dR1GXU7gyyn2VR0UVr+HvDxuitzcriHqqH+L3+lfvvRTJT1uz8LNQ1CHS7YySHAHCqOpPoK/dOv58dR1GXU7gyyn2VR0UV/QdQlYc5czPwRooor8YP6gCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKfFC87hEGWNVGLm1GKu2ROcacXObsluxI42lcKoyx7Vt2Ngtqu4/NIep9KfZ2S2iernq1WK/QcrylYZKtW1n+X/BPxnP+IpY9vDYV2pdX1l/wPL7wooor6U+FCv3Gr8Oa/cagD8KNJ0mLSoNifNIfvvjk/wD1q/devwP8ReIsbrW1b2eQH9BX74VKNJtbI/nMooor8+P6/Cv6M6/nMr+jOvoso/5efL9T8d8Qv+YX/t//ANsPwo0nSYtKg2J80h+++OT/APWr916/A/xF4ixutbVvZ5Af0FfvhXvo/IptbIK/CjSdJi0qDYnzSH7745P/ANav3Xr8D/EXiLG61tW9nkB/QUPUINK7Z++FFFFUZhX4WahqEOl2xkkOAOFUdSfQUahqEOl2xkkOAOFUdSfQV+6dT8Rt/DCvwI8PeHjdFbm5XEPVUP8AF7/Sv33r8LNQ1CHS7YySHAHCqOpPoKGyYJPVn7p1/PjqOoy6ncGWU+yqOiiv6DqKozCiiv58dR1GXU7gyyn2VR0UUAf0HUV+BHh7w8borc3K4h6qh/i9/pXSahqEOl2xkkOAOFUdSfQVLZooXV2funX8+Oo6jLqdwZZT7Ko6KK/oOoqjM/Ajw94eN0VublcQ9VQ/xe/0r996K/nx1HUZdTuDLKfZVHRRSKbVj+g6ivwI8PeHjdFbm5XEPVUP8Xv9K6TUNQh0u2MkhwBwqjqT6Ck2UoXV2GoahDpdsZJDgDhVHUn0FfunX8+Oo6jLqdwZZT7Ko6KK/oOppWFOXMz8CPD3h43RW5uVxD1VD/F7/Sv33r8LNQ1CHS7YySHAHCqOpPoK/dOkncc0o2SP5zKKKK/Pj+vwr+jOv5zK/ozr6LKP+Xny/U/HfEL/AJhf+3//AGw/A/w74dxturpfdIyP1NfvhX4Uatq0WlQb3+aQ/cTPJ/8ArV+69e+tT8jmkrJH4I0UUV+Mn9PBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVNbWr3Um1Rx3bsK0p051ZKEFdsxrVqeHpurVlaK3YkFu9zIEQZPc+lbtraJapheWPVvWlt7ZLaPag+p7mpa/RcsyuGDXtJ6zf4en+Z+JZ7xBUzOTo0vdpLp1fm/0QUUUV758eFFFFABX7jV+HNfuNQB/PbZ2ct/OsMK7nP5D3Nf0JV+E+k6VFpUGxPmkP33xya/dikncuUeVI/nMor+jOivn/AOyP+nn4f8E/Xv8AiIX/AFC/+T//AGh/OZX9GdFFehhMJ9V5veve3Q+P4h4h/t72X7rk5Ob7V73t5Lsfz22dnLfzrDCu5z+Q9zX9CVfhPpOlRaVBsT5pD998cmv3Yr0E7nyMo8qQV/PPRXQeH/D5uStzcr+56qh/i/8ArUbEpNuyF8PeHjdFbm5XEPVUP8Xv9K6TUNQh0u2MkhwBwqjqT6Cv3Tr+fHUdRl1O4Msp9lUdFFJq5opqK0DUdRl1O4Msp9lUdFFf0HV+A/h/w+bkrc3K/ueqof4v/rV+/FMhp7s/CzUNQh0u2MkhwBwqjqT6CuE1HUZdTuDLKfZVHRRRqOoy6ncGWU+yqOiitbw/4fNyVublf3PVUP8AF/8AWpJWLbc3ZH78UUUVRkfz46jqMup3BllPsqjoorX8PeHjdFbm5XEPVUP8Xv8ASk8P+Hzclbm5X9z1VD/F/wDWr9+KXki9tWfhZqGoQ6XbGSQ4A4VR1J9BXCajqMup3BllPsqjooo1HUZdTuDLKfZVHRRWt4f8Pm5K3Nyv7nqqH+L/AOtSSsU25uyF8PeHjdFbm5XEPVUP8Xv9K/fevwrv9Ri0y2MkhwBwqjqT6Cv3UoTuKaUbJBX4EeHvDxuitzcriHqqH+L3+lJ4f8Pm5K3Nyv7nqqH+L/61dJf6jFplsZJDgDhVHUn0FDfRFRj1Z+6lfz46jqMup3BllPsqjoor+g6iqMQor8K7/UYtMtjJIcAcKo6k+gr91KSdy5R5T+fHUdRl1O4Msp9lUdFFf0HV+A/h/wAPm5K3Nyv7nqqH+L/61fvxQJp7s/nMor+jOivn/wCyP+nn4f8ABP1//iIX/UL/AOT/AP2h/OZX9GdFFehhMJ9V5veve3Q+P4h4h/t72X7rk5Ob7V73t5Lsfz23l5LfztNM25z+Q9hX9CVfgd4e8PY23V0vPVIyP1NfvjXoHyDTWrPwRooor8YP6hCiiigAooooAKKKKACiiigAooooAKKKKACiirVlYtdNk/LGOrVtRo1MRNU6au2cuKxVHB0nWrytFf19420s3u3wOEHVq3YYEt4wiDA/nSxxrCgRBhR2p1fpOXZbDAxu9Zvd/oj8NzrPK2bVOVe7TWy/V+f5BRRRXsnzAUUUUAFFFFABX7jV+HNfuNQB+B3iHxDjda2rc9HkB/QVz1nZy306xRLuY/kPev6EqKVrFOXM7s/CbStKi0uDYnzSH7745NY/iHxDjda2rc9HkB/QV++NFKxTnpZH89tnZy306xRLuY/kPeu50rSotLg2J80h+++OTX7s0U2rijJR6H4HeIfEON1ratz0eQH9BX740UUJWFJuTuz8BvD/AIfNyVublcQ9VQ/xf/Wr9+a/Cq/1CHTLYySHAHCqOpPoK/dWkncqaUbJH8+Oo6jLqVwZZT7Ko6KK/oOr8BvD/h/7SVubkYi6qh/i/wDrV0l/qEOmWxkkOAOFUdSfQUXtoNQb1YX9/DplsZJDgDhVHUn0FfurRX4DeH/D/wBpK3NyMRdVQ/xf/Wo2E25uyDw/4fNyVublcQ9VQ/xf/Wr9+aK/nx1HUZdSuDLKfZVHRRTJbVg1HUZdSuDLKfZVHRRX9B1fgN4f8P8A2krc3IxF1VD/ABf/AFq/fmgGnuz8Kr+/h0y2MkhwBwqjqT6Cv3Vr+fHUdRl1K4Msp9lUdFFavh/w/wDaStzcjEXVUP8AF/8AWpLQtvndkHh/w+bkrc3K4h6qh/i/+tX780V/PjqOoy6lcGWU+yqOiimQ2rBqOoy6lcGWU+yqOiiv6Dq/Abw/4f8AtJW5uRiLqqH+L/61dJf6hDplsZJDgDhVHUn0FK9tC1BvVhf38OmWxkkOAOFUdSfQV+6tFFNKxMpcx+A3h/w+bkrc3K4h6qh/i/8ArV+/NfhVf6hDplsZJDgDhVHUn0FfurSTuOaUbJH8+Oo6jLqVwZZT7Ko6KK/oOooqjPc/Cq/v4dMtjJIcAcKo6k+grhtR1GXUrgyyn2VR0UV/QdRSSsXKbkfgd4e8PY23V0vPVIyP1NbGq6rFpcG9/mkP3Ezya/dmila5SnZWSP57by8lvp2llbcx/Ie1dD4e8PY23V0vPVIyP1NfvjRTZCdndn4TarqsWlwb3+aQ/cTPJr92aKKErDlLmPwRooor8YP6gCiiigAooooAKKKKACiiigAooooAKKKv2GnGciSQYj7D1rqw2GqYqoqdJXZwY3HUMvouvXdkvvb7LzGWOntcnc3EY7+tbaIsahVACjoBSqoUAAYA7Civ0rAYCngYWjrJ7v8ArofhOb5xXzarzT0gto9v835hRRRXqHghRRRQAUUUUAFFFFABX7jV+HNfuNQAUV+BniDxBjdbWzezyA/oKwLS0lvZ1iiXcx/T3pFNWdkf0JUV+EmlaVFpcG1fmkP3n9a/duhO45R5bH4GeIPEGN1tbN7PID+grmqK3tA0A3JW4uFxF1VD/F/9ajYNZsNA0A3JW4uFxF1VD/F/9aujv7+HTbcySHAHCqOpPoK/dev58NQ1CXUrgyyn/dUdFFJq5SmorQ/oPor8BdA0A3JW4uFxF1VD/F/9av36pmbTSuFfz4ahqEupXBllP+6o6KK/oPopiCvwov7+HTbcySHAHCqOpPoK/dev58NQ1CXUrgyyn/dUdFFJq5cZcqYahqEupXBllP8AuqOiiv6D6KKZG4UUUUAfgLoGgG5K3FwuIuqof4v/AK1fv1RX8+GoahLqVwZZT/uqOiikU2rBqGoS6lcGWU/7qjoor+g+ivwov7+HTbcySHAHCqOpPoKG7DS5rtsL+/h023MkhwBwqjqT6Cv3Xor8BdA0A3JW4uFxF1VD/F/9alsNtzZ+/VfhRf38Om25kkOAOFUdSfQUX9/DptuZJDgDhVHUn0FfuvR8RX8MK/AXQNANyVuLhcRdVQ/xf/Wo0DQDclbi4XEXVUP8X/1q6O/v4dNtzJIcAcKo6k+gob6IIR6s/deiv58NQ1CXUrgyyn/dUdFFf0H1RifgZ4f8P423NyvukZH6mtjVdVi0uDc3zSH7qetGq6rFpcG5vmkP3U9a/duoSvqbtqCsgor8DPD/AIfxtublfdIyP1NbGq6rFpcG5vmkP3U9adyVDS7P3br+e27u5b2dpZW3Mf09q/oSr8DPD/h/G25uV90jI/U03oRFOWiP3zor8JNV1WLS4NzfNIfup61+7dCdxyjyn4I0UUV+MH9QBRRRQAUUUUAFFFFABRRRQAUUUUAaWn6b5mJJRhey+tawGBRRX6zg8FSwVPkp79X3P5zzPNK+aVva1np0XRL+t2FFFFd55AUUUUAFFFFABRRRQAUUUUAFfuNX4c1+41AH89tpaS3s6xRLuY/kPev6EqK/AvXtfxutrZvZ5B/IUikk0Gv6/jdbWzc9HkH8hXN0V/QxQlYJNyd2fgLoOgm4K3Fwv7rqqH+L/wCtX79UV/PhqGoS6jOZJD7Ko6KKAbVg1DUJdRnMkh9lUdFFf0H0UUydz8Jr6+i023MkhwBwqjqT6CuJ1DUJdRnMkh9lUdFFf0H0UkrFym5H4C6DoJuCtxcL+66qh/i/+tX79UV/PhqGoS6jOZJD7Ko6KKBNqwahqEuozmSQ+yqOiitXQdBNwVuLhf3XVUP8X/1q/fqigE9bs/Ca+votNtzJIcAcKo6k+gr92aKKErDlLmCvwmvr6LTbcySHAHCqOpPoK/dmihq4Rlyn8+GoahLqM5kkPsqjoor+g+vwE0HQTcFbi4X911VD/F7/AErob6+i023MkhwBwqjqT6Cle2hSg3qxb6+i023MkhwBwqjqT6Cv3Zor8BNB0E3BW4uF/ddVQ/xe/wBKNhNubsj9+6/Ca+votNtzJIcAcKo6k+gr92aKbVxRlyhX4C6DoJuCtxcL+66qh/i/+tX79UUEppPU/Ca+votNtzJIcAcKo6k+gridQ1CXUZzJIfZVHRRRqGoS6jOZJD7Ko6KK/oPpJWLlLmCvwi1TVItMg3N80h+6nc1+7tfz23d3LeztLK25j+Q9qbVxRlypn9CVFFfhFqmqRaZBub5pD91O5obsEY3DVNUi0yDc3zSH7qdzXFXd3LeztLK25j+Q9q/oSr8C9A0HG25uV90jP8zS2Kbc3YNA0DG25uV56pGf5mv30r8ItU1SLTINzfNIfup3Nfu7QtQmkrJBRRRVGR+CNFFFfi5/UYUUUUAFFFFABRRRQAUUUUAFFFFAHUUUUV+0H8uBRRRQAUUUUAFFFFABRRRQAUUUUAFfuNX4c1+41AH4F69r/wB62tm9nkH8hX76UV+AehaEbkrcXC/uuqof4v8A61LYvWbP38r8Jb6/h063MknA6Ko6n2FNvr6LTrcySHA6Ko6n2Ffu5S+Iv+GFfgHoOh/aCtxcL+66qh/i/wDrUaFoRuStxcL+66qh/i/+tX7+U9yEuXVn4S31/Dp1uZJOB0VR1PsK4rUNQl1GcyyH/dUdFFf0H1+AehaEbkrcXC/uuqof4v8A61K1im3N2R+/lFFFUZBRRRQAUV/Pff38uoTmSQ/7qjoorU0LQjclbi4X911VD/F/9alexSV3ZBoOh/aCtxcL+66qh/i/+tX7+V+Ed9fRadbmSQ4HRVHU+wr93KSdyppRskFFFFUZhRRRQAV+Et9fw6dbmSTgdFUdT7Cm319Fp1uZJDgdFUdT7CuLv7+XUJzJIf8AdUdFFR8Rt/DP6EK/APQdD+0Fbi4X911VD/F/9av38oqjJNJ6n4S31/Dp1uZJOB0VR1PsK/dqiihKxUpcwUUV/PZdXUl5M0srbmP6UyD+hOvwK0HQgNtzcr7pGR+po0LQsbbm5X3SM/zNa2p6nHpsO5vmkP3U9alvojaMbe9IXU9Vi02Hc3zSH7qetfu9RRTSsRKXMfgVoOhAbbm5X3SMj9TWvqeqxabDub5pD91PWk1PU49Nh3N80h+6nrX7v1KV9TRtQVkfz23d3LeztLK25j+Q9q3dB0IDbc3K+6RkfqaNC0LG25uV90jP8zX761W+iI+HVn4Q6nqsWmw7m+aQ/dT1r93qKKErClLmPwRooor8YP6gCiiigAooooAKKKKACiiigAooooA6iiiiv2g/lwKKKKACiiigAooooAKKKKACiiigAr9xq/Dmv3GoAKKK/nvvr6XUJzJIfoo6AUAf0IV+AWh6GbgrcXC/uuqof4v/AK1fv7X4QXt9Fp8Bd+AOFUd/YVLZpBJ6s/d+v577+/l1CcySH/dXsBRfX0uoTmSQ/RR0Ar+hCqI8kfgFoehm4K3Fwv7rqqH+L/61b97fR6fbmSQ4A4VR1PsK/d6ipauWp8qskfz339/LqE5kkP8Aur2Ar+hCiiqM9z8Ib2+j0+3MkhwBwqjqfYV+71fz3319LqE5kkP0UdAK0tE0X7QVnuF/ddVQ/wAX/wBapWhq3zuyF0PQzcFbi4X911VD/F/9at+9vo9PtzJIcAcKo6n2FJe30WnwF34A4VR39hX7v0tym1BWR/Pff38uoTmSQ/7q9gK/oQr8AdE0X7QVnuF/ddVQ/wAX/wBav3+qjJp7s/CG9vo9PtzJIcAcKo6n2Fcbf38uoTmSQ/7q9gKL6+l1CcySH6KOgFaWiaL9oKz3C/uuqof4v/rUkrFtubshdD0M3BW4uF/ddVQ/xf8A1q372+j0+3MkhwBwqjqfYUl7fRafAXfgDhVHf2Ffu/S3KbUFZBX4BaHoZuCtxcL+66qh/i/+tX7+0VRimk9Qor+e++vpdQnMkh+ijoBX9CFMQV+D2papHpsO5jukP3U9a/eGik1cuMuU/nsurqS8maWVtzH9K3NC0PG25uF90Q/zNGh6JjbcXC+6If5mv33o30Q/h1YV/PZdXUl5M0srbmP6UXV1JeTNLK25j+lf0J0yAr8HtS1SPTYdzHdIfup61+8Nfz2XV1JeTNLK25j+lJq5UZcqZ/QnX4EaFoeNtzcL7oh/ma/feihiTSd2fg9qWqR6bDuY7pD91PWv3hr+ey6upLyZpZW3Mf0r+hOhKw5S5mFFfg7qWpx6dDub5nP3U9a/eKhO4Sjyn4I0UUV+MH9QBRRRQAUUUUAFFFFABRRRQAUUUUAdRRRRX7Qfy4FFFFABRRRQAUUUUAFFFFABRRRQAV+41fhzX7jUAFfgDomifaCJ5x+66qp/i/8ArUmi6L9oInnH7rqqn+L/AOtX7/0ty0uXVn4P3t7Fp8BkkOB0VR1PsK4++vpL+cySH6KOgFf0IUUJWCU3I/AHRNE+0ETzj911VT/F/wDWrevb2LT4DJIcDoqjqfYUy8vIrCDe/A6BR39q/eOp3NG1BWR/PffX0l/OZJD9FHQCtLRNE+0ETzj911VT/F/9av3+oqjJPW7Cv5776+kv5zJIfoo6AUXt7JfzGSQ/RewFaOi6L9oInnH7rqqn+L/61AJNuyP3/oor+e+9vZL+YySH6L2Apkn9CFfgDomifaCJ5x+66qp/i/8ArUmi6L9oInnH7rqqn+L/AOtW5eXkVhBvfgdAo7+1S30RtCPVn7x0UUVRiFfg/e3sWnwGSQ4HRVHU+wr94KKTVy4y5Qr8AdE0T7QRPOP3XVVP8X/1qTRdF+0ETzj911VT/F/9aty8vIrCDe/A6BR39qTfRFwj1Y+9vYtPgMkhwOiqOp9hX7wUUU0rESlzH4D6JomNtxcL7oh/ma1NS1KPTodzfM5+6nrTdR1GPT4dzcufup61yVzcyXczSSNlj+lTuatqCsgurqS8maWVssf0r+hOivwZ1HUY9Ph3Ny5+6nrVN2Mkua7bP3mor+ey5uZLuZpJGyx/StrRdFxtuLhfdEP8zQ3YSjzOyP35r8G9S1KPTodzfM5+6nrTdR1GPT4dzcufup61yVzcyXczSSNlj+lLc0/h6ILq6kvJmllbLH9K29E0TG24uF90Q/zNfvxRTZmnZ3YV/PZdXUl5M0srZY/pRc3Ml3M0kjZY/pW1oui423FwvuiH+ZobsCTbshdE0TG24uF90Q/zNampalHp0O5vmc/dT1r95KKVrlqdlZI/nsurqS8maWVssf0r+hOiiqMj8EaKKK/Fz+owooooAKKKKACiiigAooooAKKKKAOoooor9oP5cCiiigAooooAKKKKACiiigAooooAK/cavw5r9xqACv57r29kvpjJIfoo6AUXt7JfTGSQ/RewFaGj6R55E84/d9VU/wAX/wBakUk27IXRtH88iecfu+qqf4v/AK1f0AUV/Pde3sl9MZJD9F7AUA2rH9CNfz/6No/nkTzj931VT/F/9ak0fSPPInnH7vqqn+L/AOtX9ANG40uXVn4N3l7HYQb34HQKO/tX7yUV/P8AaPpHnkTzj931VT/F/wDWpbDbc2Lo2j+eRPOP3fVVP8X/ANav6AKK/nuvb2S+mMkh+i9gKZLasf0I1/P/AKNo/nkTzj931VT/ABf/AFqTR9I88iecfu+qqf4v/rVt3d5FYwF3PHQKO9Jvoi4x6s/eav57r29kvpjJIfoo6AV/QjRVGQUV+DN3eRWMBdzx0CjvXKXt7JfTGSQ/RewFJO5coqPU/oRr+f8A0bR/PInnH7vqqn+L/wCtSaPpHnkTzj931VT/ABf/AFq/oBo3BLl1Z+Dd5ex2EG9+B0Cjv7VyV7eyX0xkkP0UdAKL29kvpjJIfovYCtbRtHAxPcD3VD/M0tim3N2QaNo2NtxOvuqH+ZrU1DUksIdzYLn7qetJqGox2EO5uXP3U9a5S5uZLuYySHLH9KW5TagrILm5ku5mkkbLH9K/oTr8BNG0cDE9wPdUP8zWnqGox2EO5uXP3U9ad+iJULq7F1DUksIdzYLn7qetcnc3Ml3M0kjZY/pX9CdFNKxMpOQV+DGoaklhDubBc/dT1pNQ1GOwh3Ny5+6nrX70Uty/4eiP57Lm5ku5mkkbLH9K2NG0bG24nX3VD/M1+/dFNmadndhRX89lzcyXcxkkOWP6V/QnTJCivwX1DUY7CHc3Ln7qetfvRSTuXKPKfz2XNzJdzNJI2WP6V/QnX4CaNo4GJ7ge6of5mtPUNRjsIdzcufup60r9EUoXV2fvRRRRVGR+CNFFFfi5/UYUUUUAFFFFABRRRQAUUUUAFFFFAHUUUUV+0H8uBRRRQAUUUUAFFFFABRRRQAUUUUAFfuNX4c1+41ABX4MXd3HYw734HQKO9Mu7uOyh3ueOgUd65i8vJL2YvIfoOwFR8Rt/DC8vJL2Yu5+i9gK0NI0jzyJph+76qp/i/wDrV/QDX4K3d3HZQ73PHQKO9N6bCgk3dn71V/PdeXkl7MXc/RewFF5eSXsxeQ/QdgKv6TpPnETTD93/AAqf4v8A61MhJvRC6RpHnkTTD931VT/F/wDWr+gGiv57ry8kvZi8h+g7AUA2rH9CNFfz+6TpPnETTD93/Cp/i/8ArV/QFQJppXCv57ry8kvZi7n6L2Ar+hGv5/dJ0nziJph+7/hU/wAX/wBah6DSb0QukaR55E0w/d9VU/xf/Wr+gGiv57ry8kvZi8h+g7AUA2rBeXkl7MXc/RewFaGkaR55E0w/d9VU/wAX/wBav6Aa/BW7u47KHe546BR3pPTYuCTd2Pu7uOxh3vwOgUd6/eeivwB0jSOk8491Q/zNGwNubsj9/qK/BO/v0sYtzHLn7q561y9xcSXUpkkOWP6U07kyio9T+hSvwD0fR8bZ5191Q/zNN0jSOk8491Q/zNfv9RuC93Vo/BW/v47CLc3Ln7q+tcrc3Ml1KZJDlj+lf0KUUJWCUnI/APR9HxtnnX3VD/M1+/lfgnf36WMW5jlz91c9a5e4uJLqUySHLH9KS1KmkrJBc3Ml1KZJDlj+lbGj6PjbPOvuqH+Zr9/K/BO/v0sYtzHLn7q560Psggk7tn72V/PXc3Ml1KZJDlj+lf0KUVRkfgHo+j42zzr7qh/ma/fyiikU2mrIKK/AHSNI6Tzj3VD/ADNfv9RcGmldn4K39/HYRbm5c/dX1rlbm5kupTJIcsf0r+hSihKw5Scgor8E7+/Sxi3McufurnrX72UJ3CUeU/BGiiivxg/qAKKKKACiiigAooooAKKKKACiiigDqKKKK/aD+XAooooAKKKKACiiigAooooAKKKKACv3Gr8Oa/cagD+e27u5LyUu5+g7AVf0nSvOImmH7v8AhU/xV/QHX4J3V1HZw736dAo71L02NIpN3Z+9lFfz23d295KXc/QdhX9CVUZhRRX89t3dveSl3P0HYUAF3dyXkpdz9B2Aq/pOlecRNMP3f8Kn+Kv6A6KRSet2FFFFMk/n80nSvOImmH7v+FT/ABVs3V5HZQ73PHQKO9fvVRUtXNFKyskfz23d3JeSl3P0HYCr+k6V5xE0w/d/wqf4qTStK84iaYfu+yn+Kv6BKfkhbas/BW6vI7KHe546BR3rl7u7kvJS7n6DsBRd3b3kpdz9B2Ff0JUkrBKVz8AdJ0kcTzj3VD/M1+/1fghfXyWUW5uXP3V9a/e+hajmkrJBRX4AaTpXSaYe6of5mtC+vksotzcufur60XBQ0ux19fx2MW5uXP3V9a/e2iimlYmUuY/AHSdJHE8491Q/zNfv9X4IX18llFublz91fWv3vpLUqaSskFfgDpOkjiece6of5mv3+opshNLc/BK+v47GLc3Ln7q+tcxcXD3UpkkOWP6UXFw9zKZJDlj+lf0KUJWKlK5+AOk6SOJ5x7qh/ma/f6vwQvr5LKLc3Ln7q+tfvfSWo5pKyR/PXcXD3UpkkOWP6V/QpRX4IX18llFublz91fWm3YSV9Wz976/nruLh7qUySHLH9K/oUopkH4A6TpI4nnHuqH+Zr9/q/BC+vksotzcufur61zVxcPcymSQ5Y/pUrU0kktEf0KUV+AGk6V0mmHuqH+Zr9/6dyGrH4I0UUV+MH9RBRRRQAUUUUAFFFFABRRRQAUUUUAdRRRRX7Qfy4FFFFABRRRQAUUUUAFFFFABRRRQAV+41fhzX7jUAfgjdXSWcW9zx0CjvXN3V295KXc/QdhRdXT3cpdz9B2FXNM0zzSJZR8nZT3qUrGrbm7IXS9L84iWUfu+ynv8A/WrXurpLOLe546BR3ptzdpaRb36dAB3rnbq6e7lLufoOwpblNqCsj+hKiivwPubtLSLe/ToAO9U3YzjG466uks4t7njoFHeuburt7yUu5+g7Cv6Eq/n50zTPNIllHydlPelaw23N2P6Bq/BG6uks4t7njoFHev3uoptXFGXKfz23V295KXc/QdhV3S9L84iWUfu+ynv/APWpNM0zzSJZR8nZT3rWubtLSLe/ToAO9Jvoiox+0z98K/nturt7yUu5+g7Cv6EqKoyP5/8AS9L6TTD3VT/M1fvb5LKLcxyx+6vrSXt8tnHk4LH7q+tfvlUJX1Nm+TRH89c873MpkkOWP6VqaXpfSaYe6qf5mv6AKKpmadndn4HXt8llFuY5Y/dX1rnJ53uZTJIcsf0onne5lLucsf0r+hShKw5S5gor8Db2+WzjycFj91fWv3yoTuKUeU/nrnne5lMkhyx/Sv6FKKKZJ+B17fJZRbmOWP3V9a/fGv56553uZS7nLH9K09L0zGJph7qp/manY0bc3ZH9ANfgde3yWUW5jlj91fWkvb5bOPJwWP3V9a/fKjcfwaI/nrnne5lMkhyx/StTS9L6TTD3VT/M0ml6ZjE0w91U/wAzX9ANPfRE/Dqz8Dr2+Syi3Mcsfur61zk873MpkkOWP6UTzvcyl3OWP6V/QpQlYJS5gr8Dr2+Syi3Mcsfur60l7fLZx5OCx+6vrXOzzvcyl3OWP6Utyvg2Ced7mUySHLH9K1NL0vpNMPdVP8zX9AFFNkJ2d2fgde3yWUW5jlj91fWv3xr+eued7mUu5yx/Sv6FKErDlLmPwRooor8YP6gCiiigAooooAKKKKACiiigAooooA6iiiiv2g/lwKKKKACiiigAooooAKKKKACiiigAr9xq/Dmv3GoAKKKKAP57Lq6e6lLufoPSv6E6KKAPwOubqO0i3N+AHeudurp7qUu5+g9KLm5e6kLufoPSrmm6b5pEso+TsvrUpWNG3N2Qum6b5pEso+TsvrX9A1FFUQ2fz2XV091KXc/Qelf0J1/Pxpum+aRLKPk7L61qXNylpFub8AO9Te2hajfVn751/PZdXT3Updz9B6V/QnX8/mm6b0llHuqn+dN6EpN6I/oDor8Cry8S0jyeWPRfWv31oTuElYK/n90zTRxNMPdVP86TTdN6Syj3VT/Or15eJaR5PLHovrSb6IuMbas/fWv56p53uJC7nJNf0K0VRkFfgXeXqWkeTyx6L60l5eJaR5PLHovrXPzTPcSF3OSanc1+A/oVor+fzTdN6Syj3VT/ADr+gOnczasfgXeXqWkeTyx6L61z0873Ehdzkmv6Fa/n803Tekso91U/zpbF3c3YXTNNHE0w91U/zr+gKiimQ2fz1TzvcSF3OSa09M00cTTD3VT/ADpNN03pLKPdVP8AOr15eJaR5PLHovrSb6I0jHqz99a/nqnne4kLuck1/QrRVGQV+Bd5epaR5PLHovrSXl4lpHk8sei+tc/NM9xIXc5JqdzX4D+hWv5/dM00cTTD3VT/ADr+gKimzNOx+Bd5epaR5PLHovrX76V/PVNM9xIXc5Jr+hWhKxUpcwUV+BltbJaRbV/EnvX750J3E48p+CNFFFfjB/UIUUUUAFFFFABRRRQAUUUUAFFFFAHUUUUV+0H8uBRRRQAUUUUAFFFFABRRRQAUUUUAFfuNX4c1+41AH89lzcPcyFmP0HpVvTtO83Ekg+TsvrX9BFFIpPW7Cv57Lm4e5kLMfoPSv6E6KZIUUUUAfz2XNw9zIWY/Qelf0J0UUAFFfz2XFw9zIWc/Qelf0J0Afz96dp3SWUf7qmv6BKK/nqmmaeQu5yTSKbVj+hWv5+9O07pLKP8AdU1/QJX4DXV4trHknLHovrSZUEt2fvzRX89U0zTyF3OSa/oVqjMKKK/nqmmaeQu5yTQATTNPIXc5Jr+hWiigD8CLu7W0jyeWPRfWv33or+fnT9P6Syj3VTU7Gjbmz+gaiiiqMz+eqaZp5C7nJNf0K0UUAfgRd3a2keTyx6L61gzTNPIXc5JommaeQu5yTV/T9P6Syj3VTU7Gjbm7Idp2ndJZR/uqau3d2tpHk8sei+tNurxbWPJOWPRfWv35pLXVlN8miP56ppmnkLuck1o6dp3SWUf7qmv6BKKpmaet2fgRd3a2keTyx6L61++9fz1TTNPIXc5Jpbe3e5kCqPqfShKw5PmYtvbvcyBVH1PpW7b26Wse1fxJ71++1fz7ahqBlzHGfk7n1pNXHFpan9BNFFFUZn4I0UUV+Ln9RhRRRQAUUUUAFFFFABRRRQAUUUUAdRRRRX7Qfy4FFFFABRRRQAUUUUAFFFFABRRRQAV+41fhzX7jUAfgNPcpbR7m/ADvWJcXD3MhZj9B6UTztcSFmP0HpX9ClSlYuUrn8+thY+YRJIPk7D1rRnuUto9zfgB3r9+aKGrjUrLRH89dxcPcyFmP0HpVqwsfMIkkHydh61/QVRTJT1uz8Bp7lLaPc34Ad6/fmv56552uJCzH6D0r+hShKw5Sufz8afY9JZR/uqa/oHr8A7m5W2TJ5Y9B61jSytO5ZzkmktRySWgTTNPIXc5Jq9p9j0llH+6posLDpJIPopq3c3K2yZPLHoPWk30Q4x6s/fyv56ppmnkLuck0SytO5Zzkmr1hYdJJB9FNU3YhK+iP6B6K/AO5uVtkyeWPQetY0srTuWc5JoTuOSsE0zTyF3OSavafY9JZR/uqa/oHooYk9bsK/nqmmaeQu5yTRLK07lnOSavWFh0kkH0U0N2BK+iP6B6/AW6u1to8nlj0HrTbm5W2TJ5Y9B61+/lLcv4Ar+fjT7HpLKP91TRYWHSSQfRTX9A9Pcn4dWFFFFMg/n40+x6Syj/dU1/QPX4B3NytsmTyx6D1r9/Klamkkloj+eqaZp5C7nJNf0K1/PxYWHSSQfRTX9A9Mlp7s/AW6u1to8nlj0HrX79UUUJWCUuY/nrgga4kCqPqfStu3hS2j2r+J9aSCBLaPav4k96/fqp+Iv4D+fa/1Dzcxxn5O59a/oJr+euCBriQKo+p9K2oIEto9q/iT3p3sJJz1P36or+fW+vvMzHGfl7n1r+gqmQ1Y/BGiiivxg/qIKKKKACiiigAooooAKKKKACiiigDqKKKK/aD+XAooooAKKKKACiiigAooooAKKKKACv3Gr8Oa/cagD+fSysvMxJIPl7D1r+guvwAmmWBNzfgPWv3/pIuSS0P5zKKKK/PT+wAr+jOv5zK/ozr6LKP+Xny/U/HfEL/AJhf+3//AGw/n3sbLpJIPotf0EV/P/cXC26ZPJPQV/QBX0CPyKSS0R/PTLK0zlmOSa/oWor+f+4uFt0yeSegoJSvqz+gCv56ZZWmcsxyTX9C1fz62Vn0kkH0WgEm9B1jZdJJB9Fr+giiv56ZJGlcsxyTQDasf0LUUV/P/cXC26ZPJPQUAlcdc3K2yZPLHoPWv3+oooSsEpcx/PvY2XSSQfRa/oIoooE2FFfz62Vn0kkH0Wv6CqYNWPwBublbZMnlj0HrWPLK0zlmOSa/oWopJDlLmCiiv56ZJGlcsxyTTJCWVpnLMck1/QtX8+tlZ9JJB9Fq1cXC26ZPJPQUrmnLpdjrm5W2TJ5Y9B61jyytM5Zjkmv6FqKEiZS5j+euCBp32r+J9K2IYVt49q/iT3pkMKwJtX8T61+/9Lcv4D+fS9vfMzHGfl7n1qtBA077V/E+lJDC077V/E+lf0K0yG76s/AOGFbePav4k96oXt75mY4z8vc+tf0F0UJDcrqyCiiimQfgjRRRX4uf1GFFFFABRRRQAUUUUAFFFFABRRRQB1FFFFftB/LgUUUUAFFFFABRRRQAUUUUAFFFFABX7jV+HNfuNQB/PVNM077m/Aelf0K1/PjaWu/Dv93sPWv6DqRTT3Z/OZRX9GdFfP8A9kf9PPw/4J+v/wDEQv8AqF/8n/8AtD+cyv6M6KK9DCYT6rze9e9uh8fxDxD/AG97L91ycnN9q9728l2P56ZJGlcsxyTX9C1fz6Wlp0d/wBr+guvQPkGnuwooopkhRX8/k9wsC5PJ7CsySRpXLMck0k7lSVgkkaVyzHJNf0LUV/P5PcLAuTyewo2GlfVjp7lYEyeSegr+gGiv59LS06O/4A0bDbc2f0F1/P8AT3KwJk8k9BTZ7hYFyeT2Ff0B0tw+DRH89MkjSuWY5Jq3Z2mMSSD6LX9BdFMlPW7Civ56ZJGlcsxyTVu0tOjv+ANGwJXegWdpjEkg+i1anuVgTJ5J6Cmz3CwLk8nsKzJJGlcsxyTS3NG1BWQSSNK5Zjkmv6FqKKoxP5/p7lYEyeSegr+gGiv56oommfav4n0pJWLbcmf0K0UUUyD+fK8vPMyicL3PrVeGFpn2r+J9K/oVopDbu7sKK/nxu7vzMoh+XufWv6DqYNWCv5/4Y1gTao+p9aSKJYE2j8T61Su7vzMoh+XufWp3NUuTVn9B1FFFUYn4I0UUV+Ln9RhRRRQAUUUUAFFFFABRRRQAUUUUAdRRRRX7Qfy4FFFFABRRRQAUUUUAFFFFABRRRQAV+41fhzX7jUAfz+SyrCmT+ArNllaZtzfgPSv6FaKVi5Sufz52tr0dx9BU886wrk8nsK/oFoosNSsrI/npkkaRizHJq1a2vR3H0Ff0GUUyU7O7P5+p51hXJ5PYV/QLRRSCUuYK/n6nnWFcnk9hX9AtFAKVj+emSRpGLMcmrVra9HcfQV/QZRTBOzuz+fqedYVyeT2Ff0C0UUglLmP587W16O4+gqeedYVyeT2Ff0C0UWKUrKyCv587W16O4+gr+gyimQnYKKKKBBX8/U86wrk8nsK/oFopFKVgooopkn8/U86wrk8nsK/oFoopFSlzBRRRTJCiiigD+fyKJYUwPxNU7q635RD8vc+tf0H0UrFuV1ZH89UUTTNtX8T6V/QrRRTIP58Lq635RD8vc+tQxRNM21fxPpX9CtFA27u7P5/IolhTA/E1/QHRRSG3c/BGiiivxg/qEKKKKACiiigAooooAKKKKACiiigDqKKKK/aD+XAooooAKKKKACiiigAooooAKCQASTgCmzTJbxPLK6xxoCzO5wFA6kmvnr4sfGN9dM2kaJIY9N5Wa5Xhp/UD0X+dIZo/Fj40GbzdG8PzYj5We+jb73+yh9P9r8q8ToooC4UUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU+CCS5mSKJGklchVRRkk+gFG2rGk27Iaql2CqCWJwAOpr2T4bfCoWnlaprUWZ+GhtHHCf7Te/t2q98OPhdHoSx6lqiCTUT80cR5WH/Fv5V6PXw2aZxz3oYZ6dX39P8z9X4f4aVK2Lx0fe3Ue3m/Py6dddiiiivkD9LCiiigAooooAKKKKACiiigAooooA6iiiiv2g/lwKKKKACiiigAooooAKhvb2DTrWW5uZUgt4lLPI5wFFRarqtpolhNe30629tENzyOeB/wDXr5m+J3xUu/HF01rbFrbR42+SHoZSP4n/AKDtQMvfFT4uz+LpZNN0xmg0dThj0a4PqfRfb868zoooEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVb0nSLvXL+OzsoWmnkOAo7e59BUykopyk7JFwhKpJQgrtkdjYz6ldxW1rE008h2oiDJJr3r4efDWDwrCl5eBZ9VYct1WL2X396ueA/h9aeDrQSMFn1J1/eT4+7/sr6D+ddbXwGaZu8RejQdodX3/4B+xZBw5HBJYnFq9Toukf+D+QUUUV8wffBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHUUUUV+0H8uBRRRQAUUUUAFZ2v6/Y+GdMlv8AUJxBbxjqerHsAO5NQeKvFen+DtKe/wBRl2RjhI15eRv7qjua+WvHXj3UPHepm4umMVshPkWqtlYx/U+poAufEX4k33jy/O4tb6ZG37i1B/8AHm9W/lXHUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVteFfCd94u1EW1mmEXBlmYfLGPU/wCFZ1KkaUXObskbUaNSvUVKlG8nskV/D/h698TailnYxeZI3LMfuoPUnsK+hvBngmy8HWIjhAlu3A865I+Zj6D0HtVnwt4UsfCWnC1s0+Y4MkzD5pD6n/CtmvzvM81ljH7OnpD8/X/I/a8i4fp5ZFVq3vVX90fJfqwooor58+yCiiigAooooAKKKKACiiigAooooAKKKKACiiigDqKKKK/aD+XAooooAK57xr4407wNpRu7198rZENsp+eVvQe3qe1VPiD8RLDwHpxeYie/kU+Rag8sfU+i+9fLviTxLf8AivVJL/UZjLO/AH8KL2VR2FAFjxf4x1HxpqrXuoSZxkRwr9yJfRRWHRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRXXeAvh7deMLoSyBrfTEb95Pjlv9lff37VhWrU8PB1KjskdWFwtbGVVRoRvJ/19xU8F+CL3xlfBIgYrNCPOuSOF9h6n2r6G0HQLLw3pyWVjEI4l5JP3nPqT3NTaVpVrotjFZ2cKwQRjAVf5n1NW6/N8xzKpjpWWkFsv1Z+5ZLkdHKafM/eqPd/ovL8wooorxj6cKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDqKKKK/aD+XArh/iV8T7LwJZtFGVudWkXMVvnhf9p/Qe3eqXxR+LNt4Mt3sbFkuNZccL1WEH+Jvf0FfNWoajc6rezXd3M9xcytueRzkk0AS6zrV54g1Ga+v52uLmU5Z2/kPQe1UqKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK9I+G/wufW2j1LVUMenj5o4Tw03v7L/OuXE4mnhKbqVXp+Z6GBwNfMayoUFd/gl3ZS+Hfw0n8USpe3qtBpanOejTey+3vXvNlZQadax21tEsMEY2oiDAAp8MMdvEkUSLHGgCqijAA9AKfX5pjsfUx0+aWkVsv66n7rlOT0MppcsNZPeXV/5LyCiiivMPeCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOoryz4r/GCLwykulaQ6y6sflklHK2/wDi3t2rP+LPxlXSxNo+gyhrzlJ7tTxF6qvq3v2/l4C7tI7O7F3Y5LMckn1NftB/Lg+5uZby4knnkaaaRizyOcsxPUk1HRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSqpdgqgsxOAAMkmvZvht8KhY+Vqmsx7rnhobVhxH/tN7+3auDGYylgqfPUfourPXyzLK+aVvZUVp1fRL+tkZ/w3+FJuPL1TWosRcNDaOPvf7Tj09q9jACgADAHAAoor80xeMq42pz1H6Loj92y3LKGV0fZUV6vq35/5BRRRXCesFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//2Q==" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» qrCode|string|true|none||二维码图片的base64| ## POST 获取设备记录 POST /personal/getSafetyInfo > Body 请求参数 ```json { "appId": "{{appid}}", "proxyIp": "" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "list": [ { "uuid": "087b139951b776e0416b5015d0b98109", "deviceName": "iPhone 13 Pro", "deviceType": "iPhone iOS17.2", "lastTime": 1703218815 }, { "uuid": "f7e4bda161f7a6a7361ca62141cded23", "deviceName": "张传的MacBook Pro", "deviceType": "iMac MacBookPro17,1 OSX OSX 13.3.1 build(22E261)", "lastTime": 1703206819 }, { "uuid": "80d6218be93f570a971d8c605fa542c3", "deviceName": "iPad", "deviceType": "iPad iOS14.5.1", "lastTime": 1703065642 }, { "uuid": "197e97585d02c9cd6e6de68c74c81780", "deviceName": "iPad", "deviceType": "iPad iOS14.5.1", "lastTime": 1701300706 }, { "uuid": "bf5eb4d8498f4affac1cbfb8aa936d2a", "deviceName": "iPad", "deviceType": "iPad iPadOS14.3", "lastTime": 1696729849 }, { "uuid": "33ac7f39ed3d7115d9c15f07981a264a", "deviceName": "iPad", "deviceType": "iPad iPadOS14.5.1", "lastTime": 1695050733 } ] } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» list|[object]|true|none||设备记录| |»»» uuid|string|true|none||设备ID| |»»» deviceName|string|true|none||设备名称| |»»» deviceType|string|true|none||设备类型| |»»» lastTime|integer|true|none||最后操作时间| ## POST 隐私设置 POST /personal/privacySettings **option 说明** - 4: 加我为朋友时需要验证 - 7: 向我推荐通讯录朋友 - 8: 添加我的方式 手机号 - 25: 添加我的方式 微信号 - 38: 添加我的方式 群聊 - 39: 添加我的方式 我的二维码 - 40: 添加我的方式 名片 > Body 请求参数 ```json { "appId": "{{appid}}", "open": true, "option": 4 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» option|body|integer| 否 |隐私设置的选项| |» open|body|boolean| 是 |开关| #### 详细说明 **» option**: 隐私设置的选项 4: 加我为朋友时需要验证 7: 向我推荐通讯录朋友 8: 添加我的方式 手机号 25: 添加我的方式 微信号 38: 添加我的方式 群聊 39: 添加我的方式 我的二维码 40: 添加我的方式 名片 > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 修改个人信息 POST /personal/updateProfile **注意** 修改个人信息需要单独设置每一项 比如修改昵称则参数仅传appId和nickName 修改地区则参数可传appId、country、province、city > Body 请求参数 ```json { "appId": "{{appid}}", "city": "", "country": "", "nickName": "", "province": "", "sex": 1, "signature": "......" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» city|body|string| 否 |城市| |» country|body|string| 是 |国家| |» nickName|body|string| 是 |昵称| |» province|body|string| 是 |省份| |» sex|body|string| 是 |性别 1:男 2:女| |» signature|body|string| 是 |签名| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 修改头像 POST /personal/updateHeadImg **注意** 修改头像后需要将手机的微信进程关掉,然后重启查看最新头像 > Body 请求参数 ```json { "appId": "{{appid}}", "headImgUrl": "https://wx.qlogo.cn/mmhead/ver_1/REoLX7KfdibFAgDbtoeXGNjE6sGa8NCib8UaiazlekKjuLneCvicM4xQpuEbZWjjQooSicsKEbKdhqCOCpTHWtnBqdJicJ0I3CgZumwJ6SxR3ibuNs/0" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» headImgUrl|body|string| 否 |头像的图片地址| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| # 基础API/收藏夹模块 ## POST 同步收藏夹 POST /favor/sync #### 注意: 响应结果中会包含已删除的的收藏夹记录,通过flag=1来判断已删除 > Body 请求参数 ```json { "appId": "{{appid}}", "syncKey": "" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» syncKey|body|string| 否 |翻页key,首次传空,获取下一页传接口返回的syncKey| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "syncKey": "CAESCAgBEJyi9e4C", "list": [ { "favId": 2, "type": 1, "flag": 1, "updateTime": 1448465918 }, { "favId": 1, "type": 2, "flag": 1, "updateTime": 1448465922 } ] } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» syncKey|string|true|none||翻页key| |»» list|[object]|true|none||none| |»»» favId|integer|true|none||收藏夹ID| |»»» type|integer|true|none||收藏内容类型| |»»» flag|integer|true|none||收藏夹标识| |»»» updateTime|integer|true|none||收藏时间| ## POST 获取收藏夹内容 POST /favor/getContent > Body 请求参数 ```json { "appId": "{{appid}}", "favId": 179 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» favId|body|integer| 是 |收藏夹ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": { "favId": 179, "status": 0, "flag": 0, "updateTime": 1703235210, "content": "没说呢1703217521wxid_cy6buf12nf6921zhangchuan22881838546569535807562127" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|object|true|none||none| |»» favId|integer|true|none||收藏夹ID| |»» status|integer|true|none||状态| |»» flag|integer|true|none||收藏夹标识| |»» updateTime|integer|true|none||更新时间| |»» content|string|true|none||收藏的内容| ## POST 删除收藏夹 POST /favor/delete > Body 请求参数 ```json { "appId": "{{appid}}", "favId": 179 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| |» favId|body|integer| 是 |收藏夹ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| # 基础API/账号管理 ## POST 断线重连 POST /login/reconnection - 当系统返回账号已离线,但是手机顶部还显示ipad在线,可用此接口尝试重连,若返回错误/失败则必须重新调用[步骤一登录](https://apifox.com/apidoc/shared-69ba62ca-cb7d-437e-85e4-6f3d3df271b1/api-196794502) - 本接口非常用接口,可忽略 > Body 请求参数 ```json { "appId": "{{appid}}" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| > 返回示例 ```json { "ret": 200, "msg": "操作成功" } ``` ```json { "ret": 200, "msg": "操作成功", "data": { "uuid": "4YHmGvoXvgmS1MqWVtQ2", "headImgUrl": "http://wx.qlogo.cn/mmhead/ver_1/ZYUmcl1UNzyB2onM08Ij901TaUOLIjHj2UicK3XGDsjEWl4XgQN5IjodunHicBVsZiaZc1iaGCRfluAxkzyibbiau3WBfFj2nprzKp2KryicMjGIvDbWOQGmibwVK648a3o4A8hD/0", "nickName": "G", "expiredTime": 230, "status": 2, "loginInfo": { "uin": 4077276085, "wxid": "wxid_0xsqb3o0tsvz22", "nickName": "G", "mobile": "17114312382", "alias": null } } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 退出 POST /login/logout > Body 请求参数 ```json { "appId": "" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| ## POST 检查是否在线 POST /login/checkOnline 响应结果的data=true则是在线,反之为离线 > Body 请求参数 ```json { "appId": "{{appid}}" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |X-GEWE-TOKEN|header|string| 是 |none| |body|body|object| 否 |none| |» appId|body|string| 是 |设备ID| > 返回示例 > 200 Response ```json { "ret": 200, "msg": "操作成功", "data": true } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» ret|integer|true|none||none| |» msg|string|true|none||none| |» data|boolean|true|none||none| # 数据模型