瀏覽代碼

LINKFACE SDK Auto Released By jhon.zh,Version:1.24.4

Signed-off-by: yixiong.jxy <yixiong.jxy@alibaba-inc.com>
yixiong.jxy 7 年之前
父節點
當前提交
0233bd9d48
共有 30 個文件被更改,包括 2002 次插入0 次删除
  1. 3 0
      ChangeLog.txt
  2. 81 0
      services/linkface/client.go
  3. 106 0
      services/linkface/create_group.go
  4. 107 0
      services/linkface/delete_face.go
  5. 106 0
      services/linkface/delete_group.go
  6. 107 0
      services/linkface/link_face.go
  7. 107 0
      services/linkface/query_add_user_info.go
  8. 112 0
      services/linkface/query_all_groups.go
  9. 114 0
      services/linkface/query_authentication.go
  10. 107 0
      services/linkface/query_face.go
  11. 113 0
      services/linkface/query_group_users.go
  12. 113 0
      services/linkface/query_licenses.go
  13. 107 0
      services/linkface/query_sync_pic_schedule.go
  14. 108 0
      services/linkface/register_face.go
  15. 21 0
      services/linkface/struct_current_face_infos.go
  16. 23 0
      services/linkface/struct_current_face_infos_item.go
  17. 26 0
      services/linkface/struct_data.go
  18. 21 0
      services/linkface/struct_data_in_query_authentication.go
  19. 21 0
      services/linkface/struct_data_in_query_group_users.go
  20. 21 0
      services/linkface/struct_data_in_query_licenses.go
  21. 27 0
      services/linkface/struct_data_item.go
  22. 21 0
      services/linkface/struct_failed_face_infos.go
  23. 23 0
      services/linkface/struct_failed_face_infos_item.go
  24. 21 0
      services/linkface/struct_group_ids.go
  25. 21 0
      services/linkface/struct_groups.go
  26. 21 0
      services/linkface/struct_user_face_metas.go
  27. 23 0
      services/linkface/struct_user_face_metas_item.go
  28. 107 0
      services/linkface/sync_face_pictures.go
  29. 107 0
      services/linkface/unlink_face.go
  30. 107 0
      services/linkface/update_face.go

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2018-08-08 Version: 1.24.4
+1, First release.
+
 2018-08-05 Version: 1.24.3
 1, Add Interface SubmitSubtitleJob
 2, Support convert ttml、stl subtitle to vtt

+ 81 - 0
services/linkface/client.go

@@ -0,0 +1,81 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
+)
+
+// Client is the sdk client struct, each func corresponds to an OpenAPI
+type Client struct {
+	sdk.Client
+}
+
+// NewClient creates a sdk client with environment variables
+func NewClient() (client *Client, err error) {
+	client = &Client{}
+	err = client.Init()
+	return
+}
+
+// NewClientWithOptions creates a sdk client with regionId/sdkConfig/credential
+// this is the common api to create a sdk client
+func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithOptions(regionId, config, credential)
+	return
+}
+
+// NewClientWithAccessKey is a shortcut to create sdk client with accesskey
+// usage: https://help.aliyun.com/document_detail/66217.html
+func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	return
+}
+
+// NewClientWithStsToken is a shortcut to create sdk client with sts token
+// usage: https://help.aliyun.com/document_detail/66222.html
+func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn
+// usage: https://help.aliyun.com/document_detail/66222.html
+func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName)
+	return
+}
+
+// NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role
+// usage: https://help.aliyun.com/document_detail/66223.html
+func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithEcsRamRole(regionId, roleName)
+	return
+}
+
+// NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair
+// attention: rsa key pair auth is only Japan regions available
+func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration)
+	return
+}

+ 106 - 0
services/linkface/create_group.go

@@ -0,0 +1,106 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateGroup invokes the linkface.CreateGroup API synchronously
+// api document: https://help.aliyun.com/api/linkface/creategroup.html
+func (client *Client) CreateGroup(request *CreateGroupRequest) (response *CreateGroupResponse, err error) {
+	response = CreateCreateGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateGroupWithChan invokes the linkface.CreateGroup API asynchronously
+// api document: https://help.aliyun.com/api/linkface/creategroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateGroupWithChan(request *CreateGroupRequest) (<-chan *CreateGroupResponse, <-chan error) {
+	responseChan := make(chan *CreateGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateGroupWithCallback invokes the linkface.CreateGroup API asynchronously
+// api document: https://help.aliyun.com/api/linkface/creategroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateGroupWithCallback(request *CreateGroupRequest, callback func(response *CreateGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateGroupRequest is the request struct for api CreateGroup
+type CreateGroupRequest struct {
+	*requests.RpcRequest
+	GroupId string `position:"Body" name:"GroupId"`
+}
+
+// CreateGroupResponse is the response struct for api CreateGroup
+type CreateGroupResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+}
+
+// CreateCreateGroupRequest creates a request to invoke CreateGroup API
+func CreateCreateGroupRequest() (request *CreateGroupRequest) {
+	request = &CreateGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "CreateGroup", "", "")
+	return
+}
+
+// CreateCreateGroupResponse creates a response to parse from CreateGroup response
+func CreateCreateGroupResponse() (response *CreateGroupResponse) {
+	response = &CreateGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/linkface/delete_face.go

@@ -0,0 +1,107 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteFace invokes the linkface.DeleteFace API synchronously
+// api document: https://help.aliyun.com/api/linkface/deleteface.html
+func (client *Client) DeleteFace(request *DeleteFaceRequest) (response *DeleteFaceResponse, err error) {
+	response = CreateDeleteFaceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFaceWithChan invokes the linkface.DeleteFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/deleteface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceWithChan(request *DeleteFaceRequest) (<-chan *DeleteFaceResponse, <-chan error) {
+	responseChan := make(chan *DeleteFaceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFace(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFaceWithCallback invokes the linkface.DeleteFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/deleteface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceWithCallback(request *DeleteFaceRequest, callback func(response *DeleteFaceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFaceResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFace(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFaceRequest is the request struct for api DeleteFace
+type DeleteFaceRequest struct {
+	*requests.RpcRequest
+	GroupId string `position:"Body" name:"GroupId"`
+	UserId  string `position:"Body" name:"UserId"`
+}
+
+// DeleteFaceResponse is the response struct for api DeleteFace
+type DeleteFaceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+}
+
+// CreateDeleteFaceRequest creates a request to invoke DeleteFace API
+func CreateDeleteFaceRequest() (request *DeleteFaceRequest) {
+	request = &DeleteFaceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "DeleteFace", "", "")
+	return
+}
+
+// CreateDeleteFaceResponse creates a response to parse from DeleteFace response
+func CreateDeleteFaceResponse() (response *DeleteFaceResponse) {
+	response = &DeleteFaceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/linkface/delete_group.go

@@ -0,0 +1,106 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteGroup invokes the linkface.DeleteGroup API synchronously
+// api document: https://help.aliyun.com/api/linkface/deletegroup.html
+func (client *Client) DeleteGroup(request *DeleteGroupRequest) (response *DeleteGroupResponse, err error) {
+	response = CreateDeleteGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteGroupWithChan invokes the linkface.DeleteGroup API asynchronously
+// api document: https://help.aliyun.com/api/linkface/deletegroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteGroupWithChan(request *DeleteGroupRequest) (<-chan *DeleteGroupResponse, <-chan error) {
+	responseChan := make(chan *DeleteGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteGroupWithCallback invokes the linkface.DeleteGroup API asynchronously
+// api document: https://help.aliyun.com/api/linkface/deletegroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteGroupWithCallback(request *DeleteGroupRequest, callback func(response *DeleteGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteGroupRequest is the request struct for api DeleteGroup
+type DeleteGroupRequest struct {
+	*requests.RpcRequest
+	GroupId string `position:"Body" name:"GroupId"`
+}
+
+// DeleteGroupResponse is the response struct for api DeleteGroup
+type DeleteGroupResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+}
+
+// CreateDeleteGroupRequest creates a request to invoke DeleteGroup API
+func CreateDeleteGroupRequest() (request *DeleteGroupRequest) {
+	request = &DeleteGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "DeleteGroup", "", "")
+	return
+}
+
+// CreateDeleteGroupResponse creates a response to parse from DeleteGroup response
+func CreateDeleteGroupResponse() (response *DeleteGroupResponse) {
+	response = &DeleteGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/linkface/link_face.go

@@ -0,0 +1,107 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// LinkFace invokes the linkface.LinkFace API synchronously
+// api document: https://help.aliyun.com/api/linkface/linkface.html
+func (client *Client) LinkFace(request *LinkFaceRequest) (response *LinkFaceResponse, err error) {
+	response = CreateLinkFaceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// LinkFaceWithChan invokes the linkface.LinkFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/linkface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) LinkFaceWithChan(request *LinkFaceRequest) (<-chan *LinkFaceResponse, <-chan error) {
+	responseChan := make(chan *LinkFaceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.LinkFace(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// LinkFaceWithCallback invokes the linkface.LinkFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/linkface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) LinkFaceWithCallback(request *LinkFaceRequest, callback func(response *LinkFaceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *LinkFaceResponse
+		var err error
+		defer close(result)
+		response, err = client.LinkFace(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// LinkFaceRequest is the request struct for api LinkFace
+type LinkFaceRequest struct {
+	*requests.RpcRequest
+	GroupId string `position:"Body" name:"GroupId"`
+	UserId  string `position:"Body" name:"UserId"`
+}
+
+// LinkFaceResponse is the response struct for api LinkFace
+type LinkFaceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+}
+
+// CreateLinkFaceRequest creates a request to invoke LinkFace API
+func CreateLinkFaceRequest() (request *LinkFaceRequest) {
+	request = &LinkFaceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "LinkFace", "", "")
+	return
+}
+
+// CreateLinkFaceResponse creates a response to parse from LinkFace response
+func CreateLinkFaceResponse() (response *LinkFaceResponse) {
+	response = &LinkFaceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/linkface/query_add_user_info.go

@@ -0,0 +1,107 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// QueryAddUserInfo invokes the linkface.QueryAddUserInfo API synchronously
+// api document: https://help.aliyun.com/api/linkface/queryadduserinfo.html
+func (client *Client) QueryAddUserInfo(request *QueryAddUserInfoRequest) (response *QueryAddUserInfoResponse, err error) {
+	response = CreateQueryAddUserInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// QueryAddUserInfoWithChan invokes the linkface.QueryAddUserInfo API asynchronously
+// api document: https://help.aliyun.com/api/linkface/queryadduserinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryAddUserInfoWithChan(request *QueryAddUserInfoRequest) (<-chan *QueryAddUserInfoResponse, <-chan error) {
+	responseChan := make(chan *QueryAddUserInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.QueryAddUserInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// QueryAddUserInfoWithCallback invokes the linkface.QueryAddUserInfo API asynchronously
+// api document: https://help.aliyun.com/api/linkface/queryadduserinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryAddUserInfoWithCallback(request *QueryAddUserInfoRequest, callback func(response *QueryAddUserInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *QueryAddUserInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.QueryAddUserInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// QueryAddUserInfoRequest is the request struct for api QueryAddUserInfo
+type QueryAddUserInfoRequest struct {
+	*requests.RpcRequest
+	IotId string `position:"Body" name:"IotId"`
+}
+
+// QueryAddUserInfoResponse is the response struct for api QueryAddUserInfo
+type QueryAddUserInfoResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+	Data      Data   `json:"Data" xml:"Data"`
+}
+
+// CreateQueryAddUserInfoRequest creates a request to invoke QueryAddUserInfo API
+func CreateQueryAddUserInfoRequest() (request *QueryAddUserInfoRequest) {
+	request = &QueryAddUserInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "QueryAddUserInfo", "", "")
+	return
+}
+
+// CreateQueryAddUserInfoResponse creates a response to parse from QueryAddUserInfo response
+func CreateQueryAddUserInfoResponse() (response *QueryAddUserInfoResponse) {
+	response = &QueryAddUserInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/linkface/query_all_groups.go

@@ -0,0 +1,112 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// QueryAllGroups invokes the linkface.QueryAllGroups API synchronously
+// api document: https://help.aliyun.com/api/linkface/queryallgroups.html
+func (client *Client) QueryAllGroups(request *QueryAllGroupsRequest) (response *QueryAllGroupsResponse, err error) {
+	response = CreateQueryAllGroupsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// QueryAllGroupsWithChan invokes the linkface.QueryAllGroups API asynchronously
+// api document: https://help.aliyun.com/api/linkface/queryallgroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryAllGroupsWithChan(request *QueryAllGroupsRequest) (<-chan *QueryAllGroupsResponse, <-chan error) {
+	responseChan := make(chan *QueryAllGroupsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.QueryAllGroups(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// QueryAllGroupsWithCallback invokes the linkface.QueryAllGroups API asynchronously
+// api document: https://help.aliyun.com/api/linkface/queryallgroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryAllGroupsWithCallback(request *QueryAllGroupsRequest, callback func(response *QueryAllGroupsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *QueryAllGroupsResponse
+		var err error
+		defer close(result)
+		response, err = client.QueryAllGroups(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// QueryAllGroupsRequest is the request struct for api QueryAllGroups
+type QueryAllGroupsRequest struct {
+	*requests.RpcRequest
+	PageSize    requests.Integer `position:"Body" name:"PageSize"`
+	CurrentPage requests.Integer `position:"Body" name:"CurrentPage"`
+}
+
+// QueryAllGroupsResponse is the response struct for api QueryAllGroups
+type QueryAllGroupsResponse struct {
+	*responses.BaseResponse
+	Code      int    `json:"Code" xml:"Code"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Message   string `json:"Message" xml:"Message"`
+	PageCount int    `json:"PageCount" xml:"PageCount"`
+	PageSize  int    `json:"PageSize" xml:"PageSize"`
+	Page      int    `json:"Page" xml:"Page"`
+	Total     int    `json:"Total" xml:"Total"`
+	Success   bool   `json:"Success" xml:"Success"`
+	Data      Data   `json:"Data" xml:"Data"`
+}
+
+// CreateQueryAllGroupsRequest creates a request to invoke QueryAllGroups API
+func CreateQueryAllGroupsRequest() (request *QueryAllGroupsRequest) {
+	request = &QueryAllGroupsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "QueryAllGroups", "", "")
+	return
+}
+
+// CreateQueryAllGroupsResponse creates a response to parse from QueryAllGroups response
+func CreateQueryAllGroupsResponse() (response *QueryAllGroupsResponse) {
+	response = &QueryAllGroupsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/linkface/query_authentication.go

@@ -0,0 +1,114 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// QueryAuthentication invokes the linkface.QueryAuthentication API synchronously
+// api document: https://help.aliyun.com/api/linkface/queryauthentication.html
+func (client *Client) QueryAuthentication(request *QueryAuthenticationRequest) (response *QueryAuthenticationResponse, err error) {
+	response = CreateQueryAuthenticationResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// QueryAuthenticationWithChan invokes the linkface.QueryAuthentication API asynchronously
+// api document: https://help.aliyun.com/api/linkface/queryauthentication.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryAuthenticationWithChan(request *QueryAuthenticationRequest) (<-chan *QueryAuthenticationResponse, <-chan error) {
+	responseChan := make(chan *QueryAuthenticationResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.QueryAuthentication(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// QueryAuthenticationWithCallback invokes the linkface.QueryAuthentication API asynchronously
+// api document: https://help.aliyun.com/api/linkface/queryauthentication.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryAuthenticationWithCallback(request *QueryAuthenticationRequest, callback func(response *QueryAuthenticationResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *QueryAuthenticationResponse
+		var err error
+		defer close(result)
+		response, err = client.QueryAuthentication(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// QueryAuthenticationRequest is the request struct for api QueryAuthentication
+type QueryAuthenticationRequest struct {
+	*requests.RpcRequest
+	LicenseType requests.Integer `position:"Body" name:"LicenseType"`
+	IotId       string           `position:"Body" name:"IotId"`
+	PageSize    requests.Integer `position:"Body" name:"PageSize"`
+	CurrentPage requests.Integer `position:"Body" name:"CurrentPage"`
+}
+
+// QueryAuthenticationResponse is the response struct for api QueryAuthentication
+type QueryAuthenticationResponse struct {
+	*responses.BaseResponse
+	RequestId string     `json:"RequestId" xml:"RequestId"`
+	Code      int        `json:"Code" xml:"Code"`
+	Message   string     `json:"Message" xml:"Message"`
+	PageCount int        `json:"PageCount" xml:"PageCount"`
+	PageSize  int        `json:"PageSize" xml:"PageSize"`
+	Page      int        `json:"Page" xml:"Page"`
+	Total     int        `json:"Total" xml:"Total"`
+	Success   bool       `json:"Success" xml:"Success"`
+	Data      []DataItem `json:"Data" xml:"Data"`
+}
+
+// CreateQueryAuthenticationRequest creates a request to invoke QueryAuthentication API
+func CreateQueryAuthenticationRequest() (request *QueryAuthenticationRequest) {
+	request = &QueryAuthenticationRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "QueryAuthentication", "", "")
+	return
+}
+
+// CreateQueryAuthenticationResponse creates a response to parse from QueryAuthentication response
+func CreateQueryAuthenticationResponse() (response *QueryAuthenticationResponse) {
+	response = &QueryAuthenticationResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/linkface/query_face.go

@@ -0,0 +1,107 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// QueryFace invokes the linkface.QueryFace API synchronously
+// api document: https://help.aliyun.com/api/linkface/queryface.html
+func (client *Client) QueryFace(request *QueryFaceRequest) (response *QueryFaceResponse, err error) {
+	response = CreateQueryFaceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// QueryFaceWithChan invokes the linkface.QueryFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/queryface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryFaceWithChan(request *QueryFaceRequest) (<-chan *QueryFaceResponse, <-chan error) {
+	responseChan := make(chan *QueryFaceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.QueryFace(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// QueryFaceWithCallback invokes the linkface.QueryFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/queryface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryFaceWithCallback(request *QueryFaceRequest, callback func(response *QueryFaceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *QueryFaceResponse
+		var err error
+		defer close(result)
+		response, err = client.QueryFace(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// QueryFaceRequest is the request struct for api QueryFace
+type QueryFaceRequest struct {
+	*requests.RpcRequest
+	UserId string `position:"Body" name:"UserId"`
+}
+
+// QueryFaceResponse is the response struct for api QueryFace
+type QueryFaceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+	Data      Data   `json:"Data" xml:"Data"`
+}
+
+// CreateQueryFaceRequest creates a request to invoke QueryFace API
+func CreateQueryFaceRequest() (request *QueryFaceRequest) {
+	request = &QueryFaceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "QueryFace", "", "")
+	return
+}
+
+// CreateQueryFaceResponse creates a response to parse from QueryFace response
+func CreateQueryFaceResponse() (response *QueryFaceResponse) {
+	response = &QueryFaceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/linkface/query_group_users.go

@@ -0,0 +1,113 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// QueryGroupUsers invokes the linkface.QueryGroupUsers API synchronously
+// api document: https://help.aliyun.com/api/linkface/querygroupusers.html
+func (client *Client) QueryGroupUsers(request *QueryGroupUsersRequest) (response *QueryGroupUsersResponse, err error) {
+	response = CreateQueryGroupUsersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// QueryGroupUsersWithChan invokes the linkface.QueryGroupUsers API asynchronously
+// api document: https://help.aliyun.com/api/linkface/querygroupusers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryGroupUsersWithChan(request *QueryGroupUsersRequest) (<-chan *QueryGroupUsersResponse, <-chan error) {
+	responseChan := make(chan *QueryGroupUsersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.QueryGroupUsers(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// QueryGroupUsersWithCallback invokes the linkface.QueryGroupUsers API asynchronously
+// api document: https://help.aliyun.com/api/linkface/querygroupusers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryGroupUsersWithCallback(request *QueryGroupUsersRequest, callback func(response *QueryGroupUsersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *QueryGroupUsersResponse
+		var err error
+		defer close(result)
+		response, err = client.QueryGroupUsers(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// QueryGroupUsersRequest is the request struct for api QueryGroupUsers
+type QueryGroupUsersRequest struct {
+	*requests.RpcRequest
+	GroupId     string           `position:"Body" name:"GroupId"`
+	PageSize    requests.Integer `position:"Body" name:"PageSize"`
+	CurrentPage requests.Integer `position:"Body" name:"CurrentPage"`
+}
+
+// QueryGroupUsersResponse is the response struct for api QueryGroupUsers
+type QueryGroupUsersResponse struct {
+	*responses.BaseResponse
+	Code      int        `json:"Code" xml:"Code"`
+	RequestId string     `json:"RequestId" xml:"RequestId"`
+	Message   string     `json:"Message" xml:"Message"`
+	PageCount int        `json:"PageCount" xml:"PageCount"`
+	PageSize  int        `json:"PageSize" xml:"PageSize"`
+	Page      int        `json:"Page" xml:"Page"`
+	Total     int        `json:"Total" xml:"Total"`
+	Success   bool       `json:"Success" xml:"Success"`
+	Data      []DataItem `json:"Data" xml:"Data"`
+}
+
+// CreateQueryGroupUsersRequest creates a request to invoke QueryGroupUsers API
+func CreateQueryGroupUsersRequest() (request *QueryGroupUsersRequest) {
+	request = &QueryGroupUsersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "QueryGroupUsers", "", "")
+	return
+}
+
+// CreateQueryGroupUsersResponse creates a response to parse from QueryGroupUsers response
+func CreateQueryGroupUsersResponse() (response *QueryGroupUsersResponse) {
+	response = &QueryGroupUsersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/linkface/query_licenses.go

@@ -0,0 +1,113 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// QueryLicenses invokes the linkface.QueryLicenses API synchronously
+// api document: https://help.aliyun.com/api/linkface/querylicenses.html
+func (client *Client) QueryLicenses(request *QueryLicensesRequest) (response *QueryLicensesResponse, err error) {
+	response = CreateQueryLicensesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// QueryLicensesWithChan invokes the linkface.QueryLicenses API asynchronously
+// api document: https://help.aliyun.com/api/linkface/querylicenses.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryLicensesWithChan(request *QueryLicensesRequest) (<-chan *QueryLicensesResponse, <-chan error) {
+	responseChan := make(chan *QueryLicensesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.QueryLicenses(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// QueryLicensesWithCallback invokes the linkface.QueryLicenses API asynchronously
+// api document: https://help.aliyun.com/api/linkface/querylicenses.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QueryLicensesWithCallback(request *QueryLicensesRequest, callback func(response *QueryLicensesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *QueryLicensesResponse
+		var err error
+		defer close(result)
+		response, err = client.QueryLicenses(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// QueryLicensesRequest is the request struct for api QueryLicenses
+type QueryLicensesRequest struct {
+	*requests.RpcRequest
+	LicenseType requests.Integer `position:"Body" name:"LicenseType"`
+	PageSize    requests.Integer `position:"Body" name:"PageSize"`
+	CurrentPage requests.Integer `position:"Body" name:"CurrentPage"`
+}
+
+// QueryLicensesResponse is the response struct for api QueryLicenses
+type QueryLicensesResponse struct {
+	*responses.BaseResponse
+	RequestId string     `json:"RequestId" xml:"RequestId"`
+	Code      int        `json:"Code" xml:"Code"`
+	Message   string     `json:"Message" xml:"Message"`
+	PageCount int        `json:"PageCount" xml:"PageCount"`
+	PageSize  int        `json:"PageSize" xml:"PageSize"`
+	Page      int        `json:"Page" xml:"Page"`
+	Total     int        `json:"Total" xml:"Total"`
+	Success   bool       `json:"Success" xml:"Success"`
+	Data      []DataItem `json:"Data" xml:"Data"`
+}
+
+// CreateQueryLicensesRequest creates a request to invoke QueryLicenses API
+func CreateQueryLicensesRequest() (request *QueryLicensesRequest) {
+	request = &QueryLicensesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "QueryLicenses", "", "")
+	return
+}
+
+// CreateQueryLicensesResponse creates a response to parse from QueryLicenses response
+func CreateQueryLicensesResponse() (response *QueryLicensesResponse) {
+	response = &QueryLicensesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/linkface/query_sync_pic_schedule.go

@@ -0,0 +1,107 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// QuerySyncPicSchedule invokes the linkface.QuerySyncPicSchedule API synchronously
+// api document: https://help.aliyun.com/api/linkface/querysyncpicschedule.html
+func (client *Client) QuerySyncPicSchedule(request *QuerySyncPicScheduleRequest) (response *QuerySyncPicScheduleResponse, err error) {
+	response = CreateQuerySyncPicScheduleResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// QuerySyncPicScheduleWithChan invokes the linkface.QuerySyncPicSchedule API asynchronously
+// api document: https://help.aliyun.com/api/linkface/querysyncpicschedule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QuerySyncPicScheduleWithChan(request *QuerySyncPicScheduleRequest) (<-chan *QuerySyncPicScheduleResponse, <-chan error) {
+	responseChan := make(chan *QuerySyncPicScheduleResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.QuerySyncPicSchedule(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// QuerySyncPicScheduleWithCallback invokes the linkface.QuerySyncPicSchedule API asynchronously
+// api document: https://help.aliyun.com/api/linkface/querysyncpicschedule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) QuerySyncPicScheduleWithCallback(request *QuerySyncPicScheduleRequest, callback func(response *QuerySyncPicScheduleResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *QuerySyncPicScheduleResponse
+		var err error
+		defer close(result)
+		response, err = client.QuerySyncPicSchedule(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// QuerySyncPicScheduleRequest is the request struct for api QuerySyncPicSchedule
+type QuerySyncPicScheduleRequest struct {
+	*requests.RpcRequest
+	IotId string `position:"Body" name:"IotId"`
+}
+
+// QuerySyncPicScheduleResponse is the response struct for api QuerySyncPicSchedule
+type QuerySyncPicScheduleResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+	Data      Data   `json:"Data" xml:"Data"`
+}
+
+// CreateQuerySyncPicScheduleRequest creates a request to invoke QuerySyncPicSchedule API
+func CreateQuerySyncPicScheduleRequest() (request *QuerySyncPicScheduleRequest) {
+	request = &QuerySyncPicScheduleRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "QuerySyncPicSchedule", "", "")
+	return
+}
+
+// CreateQuerySyncPicScheduleResponse creates a response to parse from QuerySyncPicSchedule response
+func CreateQuerySyncPicScheduleResponse() (response *QuerySyncPicScheduleResponse) {
+	response = &QuerySyncPicScheduleResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/linkface/register_face.go

@@ -0,0 +1,108 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// RegisterFace invokes the linkface.RegisterFace API synchronously
+// api document: https://help.aliyun.com/api/linkface/registerface.html
+func (client *Client) RegisterFace(request *RegisterFaceRequest) (response *RegisterFaceResponse, err error) {
+	response = CreateRegisterFaceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// RegisterFaceWithChan invokes the linkface.RegisterFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/registerface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RegisterFaceWithChan(request *RegisterFaceRequest) (<-chan *RegisterFaceResponse, <-chan error) {
+	responseChan := make(chan *RegisterFaceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RegisterFace(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// RegisterFaceWithCallback invokes the linkface.RegisterFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/registerface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RegisterFaceWithCallback(request *RegisterFaceRequest, callback func(response *RegisterFaceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RegisterFaceResponse
+		var err error
+		defer close(result)
+		response, err = client.RegisterFace(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// RegisterFaceRequest is the request struct for api RegisterFace
+type RegisterFaceRequest struct {
+	*requests.RpcRequest
+	Image   string `position:"Body" name:"Image"`
+	GroupId string `position:"Body" name:"GroupId"`
+	UserId  string `position:"Body" name:"UserId"`
+}
+
+// RegisterFaceResponse is the response struct for api RegisterFace
+type RegisterFaceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+}
+
+// CreateRegisterFaceRequest creates a request to invoke RegisterFace API
+func CreateRegisterFaceRequest() (request *RegisterFaceRequest) {
+	request = &RegisterFaceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "RegisterFace", "", "")
+	return
+}
+
+// CreateRegisterFaceResponse creates a response to parse from RegisterFace response
+func CreateRegisterFaceResponse() (response *RegisterFaceResponse) {
+	response = &RegisterFaceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 21 - 0
services/linkface/struct_current_face_infos.go

@@ -0,0 +1,21 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CurrentFaceInfos is a nested struct in linkface response
+type CurrentFaceInfos struct {
+	CurrentFaceInfosItem []CurrentFaceInfosItem `json:"CurrentFaceInfosItem" xml:"CurrentFaceInfosItem"`
+}

+ 23 - 0
services/linkface/struct_current_face_infos_item.go

@@ -0,0 +1,23 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CurrentFaceInfosItem is a nested struct in linkface response
+type CurrentFaceInfosItem struct {
+	UserId    string `json:"UserId" xml:"UserId"`
+	ClientTag string `json:"ClientTag" xml:"ClientTag"`
+	Index     int    `json:"Index" xml:"Index"`
+}

+ 26 - 0
services/linkface/struct_data.go

@@ -0,0 +1,26 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Data is a nested struct in linkface response
+type Data struct {
+	Rate             float64                `json:"Rate" xml:"Rate"`
+	Groups           []string               `json:"Groups" xml:"Groups"`
+	GroupIds         []string               `json:"GroupIds" xml:"GroupIds"`
+	CurrentFaceInfos []CurrentFaceInfosItem `json:"CurrentFaceInfos" xml:"CurrentFaceInfos"`
+	FailedFaceInfos  []FailedFaceInfosItem  `json:"FailedFaceInfos" xml:"FailedFaceInfos"`
+	UserFaceMetas    []UserFaceMetasItem    `json:"UserFaceMetas" xml:"UserFaceMetas"`
+}

+ 21 - 0
services/linkface/struct_data_in_query_authentication.go

@@ -0,0 +1,21 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// DataInQueryAuthentication is a nested struct in linkface response
+type DataInQueryAuthentication struct {
+	DataItem []DataItem `json:"DataItem" xml:"DataItem"`
+}

+ 21 - 0
services/linkface/struct_data_in_query_group_users.go

@@ -0,0 +1,21 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// DataInQueryGroupUsers is a nested struct in linkface response
+type DataInQueryGroupUsers struct {
+	DataItem []DataItem `json:"DataItem" xml:"DataItem"`
+}

+ 21 - 0
services/linkface/struct_data_in_query_licenses.go

@@ -0,0 +1,21 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// DataInQueryLicenses is a nested struct in linkface response
+type DataInQueryLicenses struct {
+	DataItem []DataItem `json:"DataItem" xml:"DataItem"`
+}

+ 27 - 0
services/linkface/struct_data_item.go

@@ -0,0 +1,27 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// DataItem is a nested struct in linkface response
+type DataItem struct {
+	ExpiredTime  string `json:"ExpiredTime" xml:"ExpiredTime"`
+	IotId        string `json:"IotId" xml:"IotId"`
+	LicenseType  int    `json:"LicenseType" xml:"LicenseType"`
+	CostQuantity int    `json:"CostQuantity" xml:"CostQuantity"`
+	UserId       string `json:"UserId" xml:"UserId"`
+	Quantity     int    `json:"Quantity" xml:"Quantity"`
+	BeginTime    string `json:"BeginTime" xml:"BeginTime"`
+}

+ 21 - 0
services/linkface/struct_failed_face_infos.go

@@ -0,0 +1,21 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FailedFaceInfos is a nested struct in linkface response
+type FailedFaceInfos struct {
+	FailedFaceInfosItem []FailedFaceInfosItem `json:"FailedFaceInfosItem" xml:"FailedFaceInfosItem"`
+}

+ 23 - 0
services/linkface/struct_failed_face_infos_item.go

@@ -0,0 +1,23 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FailedFaceInfosItem is a nested struct in linkface response
+type FailedFaceInfosItem struct {
+	UserId    string `json:"UserId" xml:"UserId"`
+	ClientTag string `json:"ClientTag" xml:"ClientTag"`
+	Index     int    `json:"Index" xml:"Index"`
+}

+ 21 - 0
services/linkface/struct_group_ids.go

@@ -0,0 +1,21 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// GroupIds is a nested struct in linkface response
+type GroupIds struct {
+	GroupIds []string `json:"GroupIds" xml:"GroupIds"`
+}

+ 21 - 0
services/linkface/struct_groups.go

@@ -0,0 +1,21 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Groups is a nested struct in linkface response
+type Groups struct {
+	Groups []string `json:"Groups" xml:"Groups"`
+}

+ 21 - 0
services/linkface/struct_user_face_metas.go

@@ -0,0 +1,21 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// UserFaceMetas is a nested struct in linkface response
+type UserFaceMetas struct {
+	UserFaceMetasItem []UserFaceMetasItem `json:"UserFaceMetasItem" xml:"UserFaceMetasItem"`
+}

+ 23 - 0
services/linkface/struct_user_face_metas_item.go

@@ -0,0 +1,23 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// UserFaceMetasItem is a nested struct in linkface response
+type UserFaceMetasItem struct {
+	ClientTag string `json:"ClientTag" xml:"ClientTag"`
+	Index     int    `json:"Index" xml:"Index"`
+	FaceUrl   string `json:"FaceUrl" xml:"FaceUrl"`
+}

+ 107 - 0
services/linkface/sync_face_pictures.go

@@ -0,0 +1,107 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// SyncFacePictures invokes the linkface.SyncFacePictures API synchronously
+// api document: https://help.aliyun.com/api/linkface/syncfacepictures.html
+func (client *Client) SyncFacePictures(request *SyncFacePicturesRequest) (response *SyncFacePicturesResponse, err error) {
+	response = CreateSyncFacePicturesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SyncFacePicturesWithChan invokes the linkface.SyncFacePictures API asynchronously
+// api document: https://help.aliyun.com/api/linkface/syncfacepictures.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SyncFacePicturesWithChan(request *SyncFacePicturesRequest) (<-chan *SyncFacePicturesResponse, <-chan error) {
+	responseChan := make(chan *SyncFacePicturesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SyncFacePictures(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SyncFacePicturesWithCallback invokes the linkface.SyncFacePictures API asynchronously
+// api document: https://help.aliyun.com/api/linkface/syncfacepictures.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SyncFacePicturesWithCallback(request *SyncFacePicturesRequest, callback func(response *SyncFacePicturesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SyncFacePicturesResponse
+		var err error
+		defer close(result)
+		response, err = client.SyncFacePictures(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SyncFacePicturesRequest is the request struct for api SyncFacePictures
+type SyncFacePicturesRequest struct {
+	*requests.RpcRequest
+	IotId   string `position:"Body" name:"IotId"`
+	GroupId string `position:"Body" name:"GroupId"`
+}
+
+// SyncFacePicturesResponse is the response struct for api SyncFacePictures
+type SyncFacePicturesResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+}
+
+// CreateSyncFacePicturesRequest creates a request to invoke SyncFacePictures API
+func CreateSyncFacePicturesRequest() (request *SyncFacePicturesRequest) {
+	request = &SyncFacePicturesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "SyncFacePictures", "", "")
+	return
+}
+
+// CreateSyncFacePicturesResponse creates a response to parse from SyncFacePictures response
+func CreateSyncFacePicturesResponse() (response *SyncFacePicturesResponse) {
+	response = &SyncFacePicturesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/linkface/unlink_face.go

@@ -0,0 +1,107 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// UnlinkFace invokes the linkface.UnlinkFace API synchronously
+// api document: https://help.aliyun.com/api/linkface/unlinkface.html
+func (client *Client) UnlinkFace(request *UnlinkFaceRequest) (response *UnlinkFaceResponse, err error) {
+	response = CreateUnlinkFaceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UnlinkFaceWithChan invokes the linkface.UnlinkFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/unlinkface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UnlinkFaceWithChan(request *UnlinkFaceRequest) (<-chan *UnlinkFaceResponse, <-chan error) {
+	responseChan := make(chan *UnlinkFaceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UnlinkFace(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UnlinkFaceWithCallback invokes the linkface.UnlinkFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/unlinkface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UnlinkFaceWithCallback(request *UnlinkFaceRequest, callback func(response *UnlinkFaceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UnlinkFaceResponse
+		var err error
+		defer close(result)
+		response, err = client.UnlinkFace(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UnlinkFaceRequest is the request struct for api UnlinkFace
+type UnlinkFaceRequest struct {
+	*requests.RpcRequest
+	GroupId string `position:"Body" name:"GroupId"`
+	UserId  string `position:"Body" name:"UserId"`
+}
+
+// UnlinkFaceResponse is the response struct for api UnlinkFace
+type UnlinkFaceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+}
+
+// CreateUnlinkFaceRequest creates a request to invoke UnlinkFace API
+func CreateUnlinkFaceRequest() (request *UnlinkFaceRequest) {
+	request = &UnlinkFaceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "UnlinkFace", "", "")
+	return
+}
+
+// CreateUnlinkFaceResponse creates a response to parse from UnlinkFace response
+func CreateUnlinkFaceResponse() (response *UnlinkFaceResponse) {
+	response = &UnlinkFaceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/linkface/update_face.go

@@ -0,0 +1,107 @@
+package linkface
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// UpdateFace invokes the linkface.UpdateFace API synchronously
+// api document: https://help.aliyun.com/api/linkface/updateface.html
+func (client *Client) UpdateFace(request *UpdateFaceRequest) (response *UpdateFaceResponse, err error) {
+	response = CreateUpdateFaceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UpdateFaceWithChan invokes the linkface.UpdateFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/updateface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateFaceWithChan(request *UpdateFaceRequest) (<-chan *UpdateFaceResponse, <-chan error) {
+	responseChan := make(chan *UpdateFaceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UpdateFace(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UpdateFaceWithCallback invokes the linkface.UpdateFace API asynchronously
+// api document: https://help.aliyun.com/api/linkface/updateface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateFaceWithCallback(request *UpdateFaceRequest, callback func(response *UpdateFaceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UpdateFaceResponse
+		var err error
+		defer close(result)
+		response, err = client.UpdateFace(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UpdateFaceRequest is the request struct for api UpdateFace
+type UpdateFaceRequest struct {
+	*requests.RpcRequest
+	Image  string `position:"Body" name:"Image"`
+	UserId string `position:"Body" name:"UserId"`
+}
+
+// UpdateFaceResponse is the response struct for api UpdateFace
+type UpdateFaceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Success   bool   `json:"Success" xml:"Success"`
+}
+
+// CreateUpdateFaceRequest creates a request to invoke UpdateFace API
+func CreateUpdateFaceRequest() (request *UpdateFaceRequest) {
+	request = &UpdateFaceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("LinkFace", "2018-07-20", "UpdateFace", "", "")
+	return
+}
+
+// CreateUpdateFaceResponse creates a response to parse from UpdateFace response
+func CreateUpdateFaceResponse() (response *UpdateFaceResponse) {
+	response = &UpdateFaceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}