Przeglądaj źródła

IMM SDK Auto Released By guangchun.luo,Version:1.24.1

Signed-off-by: yixiong.jxy <yixiong.jxy@alibaba-inc.com>
yixiong.jxy 7 lat temu
rodzic
commit
3ccaff76fa
100 zmienionych plików z 7569 dodań i 0 usunięć
  1. 3 0
      ChangeLog.txt
  2. 81 0
      services/imm/client.go
  3. 118 0
      services/imm/convert_office_format.go
  4. 111 0
      services/imm/create_face_job.go
  5. 108 0
      services/imm/create_face_set.go
  6. 127 0
      services/imm/create_office_conversion_task.go
  7. 113 0
      services/imm/create_porn_batch_detect_job.go
  8. 114 0
      services/imm/create_tag_job.go
  9. 108 0
      services/imm/create_tag_set.go
  10. 106 0
      services/imm/delete_face_by_id.go
  11. 105 0
      services/imm/delete_face_by_url.go
  12. 105 0
      services/imm/delete_face_job.go
  13. 104 0
      services/imm/delete_face_search_group.go
  14. 106 0
      services/imm/delete_face_search_image_by_id.go
  15. 105 0
      services/imm/delete_face_search_user.go
  16. 106 0
      services/imm/delete_face_set.go
  17. 104 0
      services/imm/delete_office_conversion_task.go
  18. 104 0
      services/imm/delete_photo_process_task.go
  19. 104 0
      services/imm/delete_porn_batch_detect_job.go
  20. 103 0
      services/imm/delete_project.go
  21. 106 0
      services/imm/delete_tag_by_name.go
  22. 105 0
      services/imm/delete_tag_by_url.go
  23. 105 0
      services/imm/delete_tag_job.go
  24. 106 0
      services/imm/delete_tag_set.go
  25. 103 0
      services/imm/describe_regions.go
  26. 107 0
      services/imm/detect_face.go
  27. 107 0
      services/imm/detect_tag.go
  28. 106 0
      services/imm/face_compare.go
  29. 125 0
      services/imm/face_regist.go
  30. 115 0
      services/imm/face_search.go
  31. 112 0
      services/imm/get_face_detail.go
  32. 111 0
      services/imm/get_face_job.go
  33. 110 0
      services/imm/get_face_search_group.go
  34. 123 0
      services/imm/get_face_search_image.go
  35. 112 0
      services/imm/get_face_search_user.go
  36. 109 0
      services/imm/get_face_set.go
  37. 109 0
      services/imm/get_face_set_detail.go
  38. 118 0
      services/imm/get_office_conversion_task.go
  39. 115 0
      services/imm/get_photo_process_task.go
  40. 114 0
      services/imm/get_porn_batch_detect_job.go
  41. 112 0
      services/imm/get_project.go
  42. 111 0
      services/imm/get_tag_job.go
  43. 109 0
      services/imm/get_tag_set.go
  44. 108 0
      services/imm/group_faces.go
  45. 111 0
      services/imm/index_face.go
  46. 110 0
      services/imm/index_tag.go
  47. 109 0
      services/imm/list_face_group_photos.go
  48. 108 0
      services/imm/list_face_groups.go
  49. 108 0
      services/imm/list_face_jobs.go
  50. 111 0
      services/imm/list_face_search_group_images.go
  51. 110 0
      services/imm/list_face_search_group_users.go
  52. 107 0
      services/imm/list_face_search_groups.go
  53. 106 0
      services/imm/list_face_sets.go
  54. 107 0
      services/imm/list_office_conversion_task.go
  55. 107 0
      services/imm/list_photo_process_tasks.go
  56. 107 0
      services/imm/list_porn_batch_detect_jobs.go
  57. 106 0
      services/imm/list_projects.go
  58. 108 0
      services/imm/list_tag_jobs.go
  59. 105 0
      services/imm/list_tag_names.go
  60. 109 0
      services/imm/list_tag_photos.go
  61. 107 0
      services/imm/list_tag_sets.go
  62. 114 0
      services/imm/photo_process.go
  63. 116 0
      services/imm/put_project.go
  64. 21 0
      services/imm/struct_age.go
  65. 21 0
      services/imm/struct_age_in_detect_face.go
  66. 21 0
      services/imm/struct_age_in_index_face.go
  67. 21 0
      services/imm/struct_axis_in_face_compare.go
  68. 21 0
      services/imm/struct_axis_in_face_regist.go
  69. 21 0
      services/imm/struct_axis_in_face_search.go
  70. 21 0
      services/imm/struct_axis_in_get_face_search_image.go
  71. 21 0
      services/imm/struct_axis_in_list_face_search_group_images.go
  72. 21 0
      services/imm/struct_blur.go
  73. 23 0
      services/imm/struct_blurness.go
  74. 21 0
      services/imm/struct_compare_result.go
  75. 23 0
      services/imm/struct_compare_result_item.go
  76. 21 0
      services/imm/struct_engines_in_get_project.go
  77. 21 0
      services/imm/struct_engines_in_list_projects.go
  78. 21 0
      services/imm/struct_engines_in_put_project.go
  79. 22 0
      services/imm/struct_engines_item.go
  80. 22 0
      services/imm/struct_eye_status.go
  81. 22 0
      services/imm/struct_face_a.go
  82. 26 0
      services/imm/struct_face_attribute.go
  83. 22 0
      services/imm/struct_face_b.go
  84. 21 0
      services/imm/struct_face_details.go
  85. 27 0
      services/imm/struct_face_details_item.go
  86. 22 0
      services/imm/struct_face_quality.go
  87. 24 0
      services/imm/struct_face_rectangle.go
  88. 24 0
      services/imm/struct_face_rectangle_in_detect_face.go
  89. 24 0
      services/imm/struct_face_rectangle_in_index_face.go
  90. 21 0
      services/imm/struct_faces_in_detect_face.go
  91. 21 0
      services/imm/struct_faces_in_index_face.go
  92. 21 0
      services/imm/struct_faces_in_update_face_group_by_id.go
  93. 24 0
      services/imm/struct_faces_item.go
  94. 21 0
      services/imm/struct_fail_detail.go
  95. 21 0
      services/imm/struct_fail_details_in_detect_face.go
  96. 21 0
      services/imm/struct_fail_details_in_detect_tag.go
  97. 21 0
      services/imm/struct_fail_details_in_index_face.go
  98. 21 0
      services/imm/struct_fail_details_in_index_tag.go
  99. 22 0
      services/imm/struct_fail_details_item.go
  100. 21 0
      services/imm/struct_fail_update_detail.go

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2018-08-04 Version: 1.24.1
+1, CreateOfficeConversionTask add TgtFilePages field to specify the final uploaded page
+
 2018-08-03 Version: 1.24.0
 1, Add new API AddLocalNodes, for adding local machine to a hybrid cluster
 

+ 81 - 0
services/imm/client.go

@@ -0,0 +1,81 @@
+package imm
+
+//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
+}

+ 118 - 0
services/imm/convert_office_format.go

@@ -0,0 +1,118 @@
+package imm
+
+//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"
+)
+
+// ConvertOfficeFormat invokes the imm.ConvertOfficeFormat API synchronously
+// api document: https://help.aliyun.com/api/imm/convertofficeformat.html
+func (client *Client) ConvertOfficeFormat(request *ConvertOfficeFormatRequest) (response *ConvertOfficeFormatResponse, err error) {
+	response = CreateConvertOfficeFormatResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ConvertOfficeFormatWithChan invokes the imm.ConvertOfficeFormat API asynchronously
+// api document: https://help.aliyun.com/api/imm/convertofficeformat.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ConvertOfficeFormatWithChan(request *ConvertOfficeFormatRequest) (<-chan *ConvertOfficeFormatResponse, <-chan error) {
+	responseChan := make(chan *ConvertOfficeFormatResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ConvertOfficeFormat(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ConvertOfficeFormatWithCallback invokes the imm.ConvertOfficeFormat API asynchronously
+// api document: https://help.aliyun.com/api/imm/convertofficeformat.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ConvertOfficeFormatWithCallback(request *ConvertOfficeFormatRequest, callback func(response *ConvertOfficeFormatResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ConvertOfficeFormatResponse
+		var err error
+		defer close(result)
+		response, err = client.ConvertOfficeFormat(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ConvertOfficeFormatRequest is the request struct for api ConvertOfficeFormat
+type ConvertOfficeFormatRequest struct {
+	*requests.RpcRequest
+	ImageSpec     string           `position:"Query" name:"ImageSpec"`
+	SrcType       string           `position:"Query" name:"SrcType"`
+	ModelId       string           `position:"Query" name:"ModelId"`
+	Project       string           `position:"Query" name:"Project"`
+	ExternalID    string           `position:"Query" name:"ExternalID"`
+	MaxSheetRow   requests.Integer `position:"Query" name:"MaxSheetRow"`
+	MaxSheetCount requests.Integer `position:"Query" name:"MaxSheetCount"`
+	EndPage       requests.Integer `position:"Query" name:"EndPage"`
+	SheetOnePage  requests.Boolean `position:"Query" name:"SheetOnePage"`
+	Password      string           `position:"Query" name:"Password"`
+	StartPage     requests.Integer `position:"Query" name:"StartPage"`
+	MaxSheetCol   requests.Integer `position:"Query" name:"MaxSheetCol"`
+	TgtType       string           `position:"Query" name:"TgtType"`
+	SrcUri        string           `position:"Query" name:"SrcUri"`
+	TgtUri        string           `position:"Query" name:"TgtUri"`
+}
+
+// ConvertOfficeFormatResponse is the response struct for api ConvertOfficeFormat
+type ConvertOfficeFormatResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	PageCount int    `json:"PageCount" xml:"PageCount"`
+}
+
+// CreateConvertOfficeFormatRequest creates a request to invoke ConvertOfficeFormat API
+func CreateConvertOfficeFormatRequest() (request *ConvertOfficeFormatRequest) {
+	request = &ConvertOfficeFormatRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ConvertOfficeFormat", "imm", "openAPI")
+	return
+}
+
+// CreateConvertOfficeFormatResponse creates a response to parse from ConvertOfficeFormat response
+func CreateConvertOfficeFormatResponse() (response *ConvertOfficeFormatResponse) {
+	response = &ConvertOfficeFormatResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/imm/create_face_job.go

@@ -0,0 +1,111 @@
+package imm
+
+//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"
+)
+
+// CreateFaceJob invokes the imm.CreateFaceJob API synchronously
+// api document: https://help.aliyun.com/api/imm/createfacejob.html
+func (client *Client) CreateFaceJob(request *CreateFaceJobRequest) (response *CreateFaceJobResponse, err error) {
+	response = CreateCreateFaceJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFaceJobWithChan invokes the imm.CreateFaceJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/createfacejob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFaceJobWithChan(request *CreateFaceJobRequest) (<-chan *CreateFaceJobResponse, <-chan error) {
+	responseChan := make(chan *CreateFaceJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFaceJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFaceJobWithCallback invokes the imm.CreateFaceJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/createfacejob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFaceJobWithCallback(request *CreateFaceJobRequest, callback func(response *CreateFaceJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFaceJobResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFaceJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFaceJobRequest is the request struct for api CreateFaceJob
+type CreateFaceJobRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SrcUri  string `position:"Query" name:"SrcUri"`
+}
+
+// CreateFaceJobResponse is the response struct for api CreateFaceJob
+type CreateFaceJobResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	JobId      string `json:"JobId" xml:"JobId"`
+	SetId      string `json:"SetId" xml:"SetId"`
+	SrcUri     string `json:"SrcUri" xml:"SrcUri"`
+	Percent    int    `json:"Percent" xml:"Percent"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	FinishTime string `json:"FinishTime" xml:"FinishTime"`
+	Status     string `json:"Status" xml:"Status"`
+}
+
+// CreateCreateFaceJobRequest creates a request to invoke CreateFaceJob API
+func CreateCreateFaceJobRequest() (request *CreateFaceJobRequest) {
+	request = &CreateFaceJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "CreateFaceJob", "imm", "openAPI")
+	return
+}
+
+// CreateCreateFaceJobResponse creates a response to parse from CreateFaceJob response
+func CreateCreateFaceJobResponse() (response *CreateFaceJobResponse) {
+	response = &CreateFaceJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/imm/create_face_set.go

@@ -0,0 +1,108 @@
+package imm
+
+//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"
+)
+
+// CreateFaceSet invokes the imm.CreateFaceSet API synchronously
+// api document: https://help.aliyun.com/api/imm/createfaceset.html
+func (client *Client) CreateFaceSet(request *CreateFaceSetRequest) (response *CreateFaceSetResponse, err error) {
+	response = CreateCreateFaceSetResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFaceSetWithChan invokes the imm.CreateFaceSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/createfaceset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFaceSetWithChan(request *CreateFaceSetRequest) (<-chan *CreateFaceSetResponse, <-chan error) {
+	responseChan := make(chan *CreateFaceSetResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFaceSet(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFaceSetWithCallback invokes the imm.CreateFaceSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/createfaceset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFaceSetWithCallback(request *CreateFaceSetRequest, callback func(response *CreateFaceSetResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFaceSetResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFaceSet(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFaceSetRequest is the request struct for api CreateFaceSet
+type CreateFaceSetRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+}
+
+// CreateFaceSetResponse is the response struct for api CreateFaceSet
+type CreateFaceSetResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	SetId      string `json:"SetId" xml:"SetId"`
+	Status     string `json:"Status" xml:"Status"`
+	Photos     int    `json:"Photos" xml:"Photos"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime string `json:"ModifyTime" xml:"ModifyTime"`
+}
+
+// CreateCreateFaceSetRequest creates a request to invoke CreateFaceSet API
+func CreateCreateFaceSetRequest() (request *CreateFaceSetRequest) {
+	request = &CreateFaceSetRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "CreateFaceSet", "imm", "openAPI")
+	return
+}
+
+// CreateCreateFaceSetResponse creates a response to parse from CreateFaceSet response
+func CreateCreateFaceSetResponse() (response *CreateFaceSetResponse) {
+	response = &CreateFaceSetResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 127 - 0
services/imm/create_office_conversion_task.go

@@ -0,0 +1,127 @@
+package imm
+
+//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"
+)
+
+// CreateOfficeConversionTask invokes the imm.CreateOfficeConversionTask API synchronously
+// api document: https://help.aliyun.com/api/imm/createofficeconversiontask.html
+func (client *Client) CreateOfficeConversionTask(request *CreateOfficeConversionTaskRequest) (response *CreateOfficeConversionTaskResponse, err error) {
+	response = CreateCreateOfficeConversionTaskResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateOfficeConversionTaskWithChan invokes the imm.CreateOfficeConversionTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/createofficeconversiontask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateOfficeConversionTaskWithChan(request *CreateOfficeConversionTaskRequest) (<-chan *CreateOfficeConversionTaskResponse, <-chan error) {
+	responseChan := make(chan *CreateOfficeConversionTaskResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateOfficeConversionTask(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateOfficeConversionTaskWithCallback invokes the imm.CreateOfficeConversionTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/createofficeconversiontask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateOfficeConversionTaskWithCallback(request *CreateOfficeConversionTaskRequest, callback func(response *CreateOfficeConversionTaskResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateOfficeConversionTaskResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateOfficeConversionTask(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateOfficeConversionTaskRequest is the request struct for api CreateOfficeConversionTask
+type CreateOfficeConversionTaskRequest struct {
+	*requests.RpcRequest
+	ImageSpec       string           `position:"Query" name:"ImageSpec"`
+	SrcType         string           `position:"Query" name:"SrcType"`
+	NotifyTopicName string           `position:"Query" name:"NotifyTopicName"`
+	ModelId         string           `position:"Query" name:"ModelId"`
+	Project         string           `position:"Query" name:"Project"`
+	ExternalID      string           `position:"Query" name:"ExternalID"`
+	MaxSheetRow     requests.Integer `position:"Query" name:"MaxSheetRow"`
+	MaxSheetCount   requests.Integer `position:"Query" name:"MaxSheetCount"`
+	EndPage         requests.Integer `position:"Query" name:"EndPage"`
+	TgtFileSuffix   string           `position:"Query" name:"TgtFileSuffix"`
+	SheetOnePage    requests.Boolean `position:"Query" name:"SheetOnePage"`
+	Password        string           `position:"Query" name:"Password"`
+	StartPage       requests.Integer `position:"Query" name:"StartPage"`
+	MaxSheetCol     requests.Integer `position:"Query" name:"MaxSheetCol"`
+	TgtType         string           `position:"Query" name:"TgtType"`
+	NotifyEndpoint  string           `position:"Query" name:"NotifyEndpoint"`
+	TgtFilePrefix   string           `position:"Query" name:"TgtFilePrefix"`
+	SrcUri          string           `position:"Query" name:"SrcUri"`
+	TgtFilePages    string           `position:"Query" name:"TgtFilePages"`
+	TgtUri          string           `position:"Query" name:"TgtUri"`
+}
+
+// CreateOfficeConversionTaskResponse is the response struct for api CreateOfficeConversionTask
+type CreateOfficeConversionTaskResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	TaskId     string `json:"TaskId" xml:"TaskId"`
+	TgtLoc     string `json:"TgtLoc" xml:"TgtLoc"`
+	Status     string `json:"Status" xml:"Status"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	Percent    int    `json:"Percent" xml:"Percent"`
+}
+
+// CreateCreateOfficeConversionTaskRequest creates a request to invoke CreateOfficeConversionTask API
+func CreateCreateOfficeConversionTaskRequest() (request *CreateOfficeConversionTaskRequest) {
+	request = &CreateOfficeConversionTaskRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "CreateOfficeConversionTask", "imm", "openAPI")
+	return
+}
+
+// CreateCreateOfficeConversionTaskResponse creates a response to parse from CreateOfficeConversionTask response
+func CreateCreateOfficeConversionTaskResponse() (response *CreateOfficeConversionTaskResponse) {
+	response = &CreateOfficeConversionTaskResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/imm/create_porn_batch_detect_job.go

@@ -0,0 +1,113 @@
+package imm
+
+//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"
+)
+
+// CreatePornBatchDetectJob invokes the imm.CreatePornBatchDetectJob API synchronously
+// api document: https://help.aliyun.com/api/imm/createpornbatchdetectjob.html
+func (client *Client) CreatePornBatchDetectJob(request *CreatePornBatchDetectJobRequest) (response *CreatePornBatchDetectJobResponse, err error) {
+	response = CreateCreatePornBatchDetectJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreatePornBatchDetectJobWithChan invokes the imm.CreatePornBatchDetectJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/createpornbatchdetectjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreatePornBatchDetectJobWithChan(request *CreatePornBatchDetectJobRequest) (<-chan *CreatePornBatchDetectJobResponse, <-chan error) {
+	responseChan := make(chan *CreatePornBatchDetectJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreatePornBatchDetectJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreatePornBatchDetectJobWithCallback invokes the imm.CreatePornBatchDetectJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/createpornbatchdetectjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreatePornBatchDetectJobWithCallback(request *CreatePornBatchDetectJobRequest, callback func(response *CreatePornBatchDetectJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreatePornBatchDetectJobResponse
+		var err error
+		defer close(result)
+		response, err = client.CreatePornBatchDetectJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreatePornBatchDetectJobRequest is the request struct for api CreatePornBatchDetectJob
+type CreatePornBatchDetectJobRequest struct {
+	*requests.RpcRequest
+	NotifyTopicName string `position:"Query" name:"NotifyTopicName"`
+	NotifyEndpoint  string `position:"Query" name:"NotifyEndpoint"`
+	Project         string `position:"Query" name:"Project"`
+	ExternalID      string `position:"Query" name:"ExternalID"`
+	SrcUri          string `position:"Query" name:"SrcUri"`
+	TgtUri          string `position:"Query" name:"TgtUri"`
+}
+
+// CreatePornBatchDetectJobResponse is the response struct for api CreatePornBatchDetectJob
+type CreatePornBatchDetectJobResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	JobId      string `json:"JobId" xml:"JobId"`
+	TgtLoc     string `json:"TgtLoc" xml:"TgtLoc"`
+	Status     string `json:"Status" xml:"Status"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	Percent    int    `json:"Percent" xml:"Percent"`
+}
+
+// CreateCreatePornBatchDetectJobRequest creates a request to invoke CreatePornBatchDetectJob API
+func CreateCreatePornBatchDetectJobRequest() (request *CreatePornBatchDetectJobRequest) {
+	request = &CreatePornBatchDetectJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "CreatePornBatchDetectJob", "imm", "openAPI")
+	return
+}
+
+// CreateCreatePornBatchDetectJobResponse creates a response to parse from CreatePornBatchDetectJob response
+func CreateCreatePornBatchDetectJobResponse() (response *CreatePornBatchDetectJobResponse) {
+	response = &CreatePornBatchDetectJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/imm/create_tag_job.go

@@ -0,0 +1,114 @@
+package imm
+
+//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"
+)
+
+// CreateTagJob invokes the imm.CreateTagJob API synchronously
+// api document: https://help.aliyun.com/api/imm/createtagjob.html
+func (client *Client) CreateTagJob(request *CreateTagJobRequest) (response *CreateTagJobResponse, err error) {
+	response = CreateCreateTagJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateTagJobWithChan invokes the imm.CreateTagJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/createtagjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateTagJobWithChan(request *CreateTagJobRequest) (<-chan *CreateTagJobResponse, <-chan error) {
+	responseChan := make(chan *CreateTagJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateTagJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateTagJobWithCallback invokes the imm.CreateTagJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/createtagjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateTagJobWithCallback(request *CreateTagJobRequest, callback func(response *CreateTagJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateTagJobResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateTagJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateTagJobRequest is the request struct for api CreateTagJob
+type CreateTagJobRequest struct {
+	*requests.RpcRequest
+	NotifyTopicName string `position:"Query" name:"NotifyTopicName"`
+	NotifyEndpoint  string `position:"Query" name:"NotifyEndpoint"`
+	Project         string `position:"Query" name:"Project"`
+	ExternalID      string `position:"Query" name:"ExternalID"`
+	SrcUri          string `position:"Query" name:"SrcUri"`
+}
+
+// CreateTagJobResponse is the response struct for api CreateTagJob
+type CreateTagJobResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	JobId      string `json:"JobId" xml:"JobId"`
+	SetId      string `json:"SetId" xml:"SetId"`
+	SrcUri     string `json:"SrcUri" xml:"SrcUri"`
+	Status     string `json:"Status" xml:"Status"`
+	Percent    int    `json:"Percent" xml:"Percent"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	FinishTime string `json:"FinishTime" xml:"FinishTime"`
+}
+
+// CreateCreateTagJobRequest creates a request to invoke CreateTagJob API
+func CreateCreateTagJobRequest() (request *CreateTagJobRequest) {
+	request = &CreateTagJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "CreateTagJob", "imm", "openAPI")
+	return
+}
+
+// CreateCreateTagJobResponse creates a response to parse from CreateTagJob response
+func CreateCreateTagJobResponse() (response *CreateTagJobResponse) {
+	response = &CreateTagJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/imm/create_tag_set.go

@@ -0,0 +1,108 @@
+package imm
+
+//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"
+)
+
+// CreateTagSet invokes the imm.CreateTagSet API synchronously
+// api document: https://help.aliyun.com/api/imm/createtagset.html
+func (client *Client) CreateTagSet(request *CreateTagSetRequest) (response *CreateTagSetResponse, err error) {
+	response = CreateCreateTagSetResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateTagSetWithChan invokes the imm.CreateTagSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/createtagset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateTagSetWithChan(request *CreateTagSetRequest) (<-chan *CreateTagSetResponse, <-chan error) {
+	responseChan := make(chan *CreateTagSetResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateTagSet(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateTagSetWithCallback invokes the imm.CreateTagSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/createtagset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateTagSetWithCallback(request *CreateTagSetRequest, callback func(response *CreateTagSetResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateTagSetResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateTagSet(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateTagSetRequest is the request struct for api CreateTagSet
+type CreateTagSetRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+}
+
+// CreateTagSetResponse is the response struct for api CreateTagSet
+type CreateTagSetResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	SetId      string `json:"SetId" xml:"SetId"`
+	Status     string `json:"Status" xml:"Status"`
+	Photos     int    `json:"Photos" xml:"Photos"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime string `json:"ModifyTime" xml:"ModifyTime"`
+}
+
+// CreateCreateTagSetRequest creates a request to invoke CreateTagSet API
+func CreateCreateTagSetRequest() (request *CreateTagSetRequest) {
+	request = &CreateTagSetRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "CreateTagSet", "imm", "openAPI")
+	return
+}
+
+// CreateCreateTagSetResponse creates a response to parse from CreateTagSet response
+func CreateCreateTagSetResponse() (response *CreateTagSetResponse) {
+	response = &CreateTagSetResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/delete_face_by_id.go

@@ -0,0 +1,106 @@
+package imm
+
+//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"
+)
+
+// DeleteFaceById invokes the imm.DeleteFaceById API synchronously
+// api document: https://help.aliyun.com/api/imm/deletefacebyid.html
+func (client *Client) DeleteFaceById(request *DeleteFaceByIdRequest) (response *DeleteFaceByIdResponse, err error) {
+	response = CreateDeleteFaceByIdResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFaceByIdWithChan invokes the imm.DeleteFaceById API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacebyid.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceByIdWithChan(request *DeleteFaceByIdRequest) (<-chan *DeleteFaceByIdResponse, <-chan error) {
+	responseChan := make(chan *DeleteFaceByIdResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFaceById(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFaceByIdWithCallback invokes the imm.DeleteFaceById API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacebyid.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceByIdWithCallback(request *DeleteFaceByIdRequest, callback func(response *DeleteFaceByIdResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFaceByIdResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFaceById(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFaceByIdRequest is the request struct for api DeleteFaceById
+type DeleteFaceByIdRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+	SrcUri  string `position:"Query" name:"SrcUri"`
+	FaceIds string `position:"Query" name:"FaceIds"`
+}
+
+// DeleteFaceByIdResponse is the response struct for api DeleteFaceById
+type DeleteFaceByIdResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteFaceByIdRequest creates a request to invoke DeleteFaceById API
+func CreateDeleteFaceByIdRequest() (request *DeleteFaceByIdRequest) {
+	request = &DeleteFaceByIdRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteFaceById", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteFaceByIdResponse creates a response to parse from DeleteFaceById response
+func CreateDeleteFaceByIdResponse() (response *DeleteFaceByIdResponse) {
+	response = &DeleteFaceByIdResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/imm/delete_face_by_url.go

@@ -0,0 +1,105 @@
+package imm
+
+//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"
+)
+
+// DeleteFaceByUrl invokes the imm.DeleteFaceByUrl API synchronously
+// api document: https://help.aliyun.com/api/imm/deletefacebyurl.html
+func (client *Client) DeleteFaceByUrl(request *DeleteFaceByUrlRequest) (response *DeleteFaceByUrlResponse, err error) {
+	response = CreateDeleteFaceByUrlResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFaceByUrlWithChan invokes the imm.DeleteFaceByUrl API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacebyurl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceByUrlWithChan(request *DeleteFaceByUrlRequest) (<-chan *DeleteFaceByUrlResponse, <-chan error) {
+	responseChan := make(chan *DeleteFaceByUrlResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFaceByUrl(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFaceByUrlWithCallback invokes the imm.DeleteFaceByUrl API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacebyurl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceByUrlWithCallback(request *DeleteFaceByUrlRequest, callback func(response *DeleteFaceByUrlResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFaceByUrlResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFaceByUrl(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFaceByUrlRequest is the request struct for api DeleteFaceByUrl
+type DeleteFaceByUrlRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+	SrcUri  string `position:"Query" name:"SrcUri"`
+}
+
+// DeleteFaceByUrlResponse is the response struct for api DeleteFaceByUrl
+type DeleteFaceByUrlResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteFaceByUrlRequest creates a request to invoke DeleteFaceByUrl API
+func CreateDeleteFaceByUrlRequest() (request *DeleteFaceByUrlRequest) {
+	request = &DeleteFaceByUrlRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteFaceByUrl", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteFaceByUrlResponse creates a response to parse from DeleteFaceByUrl response
+func CreateDeleteFaceByUrlResponse() (response *DeleteFaceByUrlResponse) {
+	response = &DeleteFaceByUrlResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/imm/delete_face_job.go

@@ -0,0 +1,105 @@
+package imm
+
+//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"
+)
+
+// DeleteFaceJob invokes the imm.DeleteFaceJob API synchronously
+// api document: https://help.aliyun.com/api/imm/deletefacejob.html
+func (client *Client) DeleteFaceJob(request *DeleteFaceJobRequest) (response *DeleteFaceJobResponse, err error) {
+	response = CreateDeleteFaceJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFaceJobWithChan invokes the imm.DeleteFaceJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacejob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceJobWithChan(request *DeleteFaceJobRequest) (<-chan *DeleteFaceJobResponse, <-chan error) {
+	responseChan := make(chan *DeleteFaceJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFaceJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFaceJobWithCallback invokes the imm.DeleteFaceJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacejob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceJobWithCallback(request *DeleteFaceJobRequest, callback func(response *DeleteFaceJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFaceJobResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFaceJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFaceJobRequest is the request struct for api DeleteFaceJob
+type DeleteFaceJobRequest struct {
+	*requests.RpcRequest
+	JobId          string `position:"Query" name:"JobId"`
+	Project        string `position:"Query" name:"Project"`
+	ClearIndexData string `position:"Query" name:"ClearIndexData"`
+}
+
+// DeleteFaceJobResponse is the response struct for api DeleteFaceJob
+type DeleteFaceJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteFaceJobRequest creates a request to invoke DeleteFaceJob API
+func CreateDeleteFaceJobRequest() (request *DeleteFaceJobRequest) {
+	request = &DeleteFaceJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteFaceJob", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteFaceJobResponse creates a response to parse from DeleteFaceJob response
+func CreateDeleteFaceJobResponse() (response *DeleteFaceJobResponse) {
+	response = &DeleteFaceJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/imm/delete_face_search_group.go

@@ -0,0 +1,104 @@
+package imm
+
+//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"
+)
+
+// DeleteFaceSearchGroup invokes the imm.DeleteFaceSearchGroup API synchronously
+// api document: https://help.aliyun.com/api/imm/deletefacesearchgroup.html
+func (client *Client) DeleteFaceSearchGroup(request *DeleteFaceSearchGroupRequest) (response *DeleteFaceSearchGroupResponse, err error) {
+	response = CreateDeleteFaceSearchGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFaceSearchGroupWithChan invokes the imm.DeleteFaceSearchGroup API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacesearchgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceSearchGroupWithChan(request *DeleteFaceSearchGroupRequest) (<-chan *DeleteFaceSearchGroupResponse, <-chan error) {
+	responseChan := make(chan *DeleteFaceSearchGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFaceSearchGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFaceSearchGroupWithCallback invokes the imm.DeleteFaceSearchGroup API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacesearchgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceSearchGroupWithCallback(request *DeleteFaceSearchGroupRequest, callback func(response *DeleteFaceSearchGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFaceSearchGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFaceSearchGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFaceSearchGroupRequest is the request struct for api DeleteFaceSearchGroup
+type DeleteFaceSearchGroupRequest struct {
+	*requests.RpcRequest
+	Project   string `position:"Query" name:"Project"`
+	GroupName string `position:"Query" name:"GroupName"`
+}
+
+// DeleteFaceSearchGroupResponse is the response struct for api DeleteFaceSearchGroup
+type DeleteFaceSearchGroupResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteFaceSearchGroupRequest creates a request to invoke DeleteFaceSearchGroup API
+func CreateDeleteFaceSearchGroupRequest() (request *DeleteFaceSearchGroupRequest) {
+	request = &DeleteFaceSearchGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteFaceSearchGroup", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteFaceSearchGroupResponse creates a response to parse from DeleteFaceSearchGroup response
+func CreateDeleteFaceSearchGroupResponse() (response *DeleteFaceSearchGroupResponse) {
+	response = &DeleteFaceSearchGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/delete_face_search_image_by_id.go

@@ -0,0 +1,106 @@
+package imm
+
+//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"
+)
+
+// DeleteFaceSearchImageById invokes the imm.DeleteFaceSearchImageById API synchronously
+// api document: https://help.aliyun.com/api/imm/deletefacesearchimagebyid.html
+func (client *Client) DeleteFaceSearchImageById(request *DeleteFaceSearchImageByIdRequest) (response *DeleteFaceSearchImageByIdResponse, err error) {
+	response = CreateDeleteFaceSearchImageByIdResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFaceSearchImageByIdWithChan invokes the imm.DeleteFaceSearchImageById API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacesearchimagebyid.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceSearchImageByIdWithChan(request *DeleteFaceSearchImageByIdRequest) (<-chan *DeleteFaceSearchImageByIdResponse, <-chan error) {
+	responseChan := make(chan *DeleteFaceSearchImageByIdResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFaceSearchImageById(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFaceSearchImageByIdWithCallback invokes the imm.DeleteFaceSearchImageById API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacesearchimagebyid.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceSearchImageByIdWithCallback(request *DeleteFaceSearchImageByIdRequest, callback func(response *DeleteFaceSearchImageByIdResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFaceSearchImageByIdResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFaceSearchImageById(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFaceSearchImageByIdRequest is the request struct for api DeleteFaceSearchImageById
+type DeleteFaceSearchImageByIdRequest struct {
+	*requests.RpcRequest
+	ImageId   string `position:"Query" name:"ImageId"`
+	Project   string `position:"Query" name:"Project"`
+	GroupName string `position:"Query" name:"GroupName"`
+	User      string `position:"Query" name:"User"`
+}
+
+// DeleteFaceSearchImageByIdResponse is the response struct for api DeleteFaceSearchImageById
+type DeleteFaceSearchImageByIdResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteFaceSearchImageByIdRequest creates a request to invoke DeleteFaceSearchImageById API
+func CreateDeleteFaceSearchImageByIdRequest() (request *DeleteFaceSearchImageByIdRequest) {
+	request = &DeleteFaceSearchImageByIdRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteFaceSearchImageById", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteFaceSearchImageByIdResponse creates a response to parse from DeleteFaceSearchImageById response
+func CreateDeleteFaceSearchImageByIdResponse() (response *DeleteFaceSearchImageByIdResponse) {
+	response = &DeleteFaceSearchImageByIdResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/imm/delete_face_search_user.go

@@ -0,0 +1,105 @@
+package imm
+
+//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"
+)
+
+// DeleteFaceSearchUser invokes the imm.DeleteFaceSearchUser API synchronously
+// api document: https://help.aliyun.com/api/imm/deletefacesearchuser.html
+func (client *Client) DeleteFaceSearchUser(request *DeleteFaceSearchUserRequest) (response *DeleteFaceSearchUserResponse, err error) {
+	response = CreateDeleteFaceSearchUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFaceSearchUserWithChan invokes the imm.DeleteFaceSearchUser API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacesearchuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceSearchUserWithChan(request *DeleteFaceSearchUserRequest) (<-chan *DeleteFaceSearchUserResponse, <-chan error) {
+	responseChan := make(chan *DeleteFaceSearchUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFaceSearchUser(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFaceSearchUserWithCallback invokes the imm.DeleteFaceSearchUser API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefacesearchuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceSearchUserWithCallback(request *DeleteFaceSearchUserRequest, callback func(response *DeleteFaceSearchUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFaceSearchUserResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFaceSearchUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFaceSearchUserRequest is the request struct for api DeleteFaceSearchUser
+type DeleteFaceSearchUserRequest struct {
+	*requests.RpcRequest
+	Project   string `position:"Query" name:"Project"`
+	GroupName string `position:"Query" name:"GroupName"`
+	User      string `position:"Query" name:"User"`
+}
+
+// DeleteFaceSearchUserResponse is the response struct for api DeleteFaceSearchUser
+type DeleteFaceSearchUserResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteFaceSearchUserRequest creates a request to invoke DeleteFaceSearchUser API
+func CreateDeleteFaceSearchUserRequest() (request *DeleteFaceSearchUserRequest) {
+	request = &DeleteFaceSearchUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteFaceSearchUser", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteFaceSearchUserResponse creates a response to parse from DeleteFaceSearchUser response
+func CreateDeleteFaceSearchUserResponse() (response *DeleteFaceSearchUserResponse) {
+	response = &DeleteFaceSearchUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/delete_face_set.go

@@ -0,0 +1,106 @@
+package imm
+
+//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"
+)
+
+// DeleteFaceSet invokes the imm.DeleteFaceSet API synchronously
+// api document: https://help.aliyun.com/api/imm/deletefaceset.html
+func (client *Client) DeleteFaceSet(request *DeleteFaceSetRequest) (response *DeleteFaceSetResponse, err error) {
+	response = CreateDeleteFaceSetResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFaceSetWithChan invokes the imm.DeleteFaceSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefaceset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceSetWithChan(request *DeleteFaceSetRequest) (<-chan *DeleteFaceSetResponse, <-chan error) {
+	responseChan := make(chan *DeleteFaceSetResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFaceSet(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFaceSetWithCallback invokes the imm.DeleteFaceSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletefaceset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFaceSetWithCallback(request *DeleteFaceSetRequest, callback func(response *DeleteFaceSetResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFaceSetResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFaceSet(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFaceSetRequest is the request struct for api DeleteFaceSet
+type DeleteFaceSetRequest struct {
+	*requests.RpcRequest
+	LazyMode   string `position:"Query" name:"LazyMode"`
+	Project    string `position:"Query" name:"Project"`
+	SetId      string `position:"Query" name:"SetId"`
+	CheckEmpty string `position:"Query" name:"CheckEmpty"`
+}
+
+// DeleteFaceSetResponse is the response struct for api DeleteFaceSet
+type DeleteFaceSetResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteFaceSetRequest creates a request to invoke DeleteFaceSet API
+func CreateDeleteFaceSetRequest() (request *DeleteFaceSetRequest) {
+	request = &DeleteFaceSetRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteFaceSet", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteFaceSetResponse creates a response to parse from DeleteFaceSet response
+func CreateDeleteFaceSetResponse() (response *DeleteFaceSetResponse) {
+	response = &DeleteFaceSetResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/imm/delete_office_conversion_task.go

@@ -0,0 +1,104 @@
+package imm
+
+//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"
+)
+
+// DeleteOfficeConversionTask invokes the imm.DeleteOfficeConversionTask API synchronously
+// api document: https://help.aliyun.com/api/imm/deleteofficeconversiontask.html
+func (client *Client) DeleteOfficeConversionTask(request *DeleteOfficeConversionTaskRequest) (response *DeleteOfficeConversionTaskResponse, err error) {
+	response = CreateDeleteOfficeConversionTaskResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteOfficeConversionTaskWithChan invokes the imm.DeleteOfficeConversionTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/deleteofficeconversiontask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteOfficeConversionTaskWithChan(request *DeleteOfficeConversionTaskRequest) (<-chan *DeleteOfficeConversionTaskResponse, <-chan error) {
+	responseChan := make(chan *DeleteOfficeConversionTaskResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteOfficeConversionTask(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteOfficeConversionTaskWithCallback invokes the imm.DeleteOfficeConversionTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/deleteofficeconversiontask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteOfficeConversionTaskWithCallback(request *DeleteOfficeConversionTaskRequest, callback func(response *DeleteOfficeConversionTaskResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteOfficeConversionTaskResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteOfficeConversionTask(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteOfficeConversionTaskRequest is the request struct for api DeleteOfficeConversionTask
+type DeleteOfficeConversionTaskRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	TaskId  string `position:"Query" name:"TaskId"`
+}
+
+// DeleteOfficeConversionTaskResponse is the response struct for api DeleteOfficeConversionTask
+type DeleteOfficeConversionTaskResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteOfficeConversionTaskRequest creates a request to invoke DeleteOfficeConversionTask API
+func CreateDeleteOfficeConversionTaskRequest() (request *DeleteOfficeConversionTaskRequest) {
+	request = &DeleteOfficeConversionTaskRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteOfficeConversionTask", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteOfficeConversionTaskResponse creates a response to parse from DeleteOfficeConversionTask response
+func CreateDeleteOfficeConversionTaskResponse() (response *DeleteOfficeConversionTaskResponse) {
+	response = &DeleteOfficeConversionTaskResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/imm/delete_photo_process_task.go

@@ -0,0 +1,104 @@
+package imm
+
+//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"
+)
+
+// DeletePhotoProcessTask invokes the imm.DeletePhotoProcessTask API synchronously
+// api document: https://help.aliyun.com/api/imm/deletephotoprocesstask.html
+func (client *Client) DeletePhotoProcessTask(request *DeletePhotoProcessTaskRequest) (response *DeletePhotoProcessTaskResponse, err error) {
+	response = CreateDeletePhotoProcessTaskResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeletePhotoProcessTaskWithChan invokes the imm.DeletePhotoProcessTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletephotoprocesstask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeletePhotoProcessTaskWithChan(request *DeletePhotoProcessTaskRequest) (<-chan *DeletePhotoProcessTaskResponse, <-chan error) {
+	responseChan := make(chan *DeletePhotoProcessTaskResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeletePhotoProcessTask(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeletePhotoProcessTaskWithCallback invokes the imm.DeletePhotoProcessTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletephotoprocesstask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeletePhotoProcessTaskWithCallback(request *DeletePhotoProcessTaskRequest, callback func(response *DeletePhotoProcessTaskResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeletePhotoProcessTaskResponse
+		var err error
+		defer close(result)
+		response, err = client.DeletePhotoProcessTask(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeletePhotoProcessTaskRequest is the request struct for api DeletePhotoProcessTask
+type DeletePhotoProcessTaskRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	TaskId  string `position:"Query" name:"TaskId"`
+}
+
+// DeletePhotoProcessTaskResponse is the response struct for api DeletePhotoProcessTask
+type DeletePhotoProcessTaskResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeletePhotoProcessTaskRequest creates a request to invoke DeletePhotoProcessTask API
+func CreateDeletePhotoProcessTaskRequest() (request *DeletePhotoProcessTaskRequest) {
+	request = &DeletePhotoProcessTaskRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeletePhotoProcessTask", "imm", "openAPI")
+	return
+}
+
+// CreateDeletePhotoProcessTaskResponse creates a response to parse from DeletePhotoProcessTask response
+func CreateDeletePhotoProcessTaskResponse() (response *DeletePhotoProcessTaskResponse) {
+	response = &DeletePhotoProcessTaskResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/imm/delete_porn_batch_detect_job.go

@@ -0,0 +1,104 @@
+package imm
+
+//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"
+)
+
+// DeletePornBatchDetectJob invokes the imm.DeletePornBatchDetectJob API synchronously
+// api document: https://help.aliyun.com/api/imm/deletepornbatchdetectjob.html
+func (client *Client) DeletePornBatchDetectJob(request *DeletePornBatchDetectJobRequest) (response *DeletePornBatchDetectJobResponse, err error) {
+	response = CreateDeletePornBatchDetectJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeletePornBatchDetectJobWithChan invokes the imm.DeletePornBatchDetectJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletepornbatchdetectjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeletePornBatchDetectJobWithChan(request *DeletePornBatchDetectJobRequest) (<-chan *DeletePornBatchDetectJobResponse, <-chan error) {
+	responseChan := make(chan *DeletePornBatchDetectJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeletePornBatchDetectJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeletePornBatchDetectJobWithCallback invokes the imm.DeletePornBatchDetectJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletepornbatchdetectjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeletePornBatchDetectJobWithCallback(request *DeletePornBatchDetectJobRequest, callback func(response *DeletePornBatchDetectJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeletePornBatchDetectJobResponse
+		var err error
+		defer close(result)
+		response, err = client.DeletePornBatchDetectJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeletePornBatchDetectJobRequest is the request struct for api DeletePornBatchDetectJob
+type DeletePornBatchDetectJobRequest struct {
+	*requests.RpcRequest
+	JobId   string `position:"Query" name:"JobId"`
+	Project string `position:"Query" name:"Project"`
+}
+
+// DeletePornBatchDetectJobResponse is the response struct for api DeletePornBatchDetectJob
+type DeletePornBatchDetectJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeletePornBatchDetectJobRequest creates a request to invoke DeletePornBatchDetectJob API
+func CreateDeletePornBatchDetectJobRequest() (request *DeletePornBatchDetectJobRequest) {
+	request = &DeletePornBatchDetectJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeletePornBatchDetectJob", "imm", "openAPI")
+	return
+}
+
+// CreateDeletePornBatchDetectJobResponse creates a response to parse from DeletePornBatchDetectJob response
+func CreateDeletePornBatchDetectJobResponse() (response *DeletePornBatchDetectJobResponse) {
+	response = &DeletePornBatchDetectJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 103 - 0
services/imm/delete_project.go

@@ -0,0 +1,103 @@
+package imm
+
+//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"
+)
+
+// DeleteProject invokes the imm.DeleteProject API synchronously
+// api document: https://help.aliyun.com/api/imm/deleteproject.html
+func (client *Client) DeleteProject(request *DeleteProjectRequest) (response *DeleteProjectResponse, err error) {
+	response = CreateDeleteProjectResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteProjectWithChan invokes the imm.DeleteProject API asynchronously
+// api document: https://help.aliyun.com/api/imm/deleteproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteProjectWithChan(request *DeleteProjectRequest) (<-chan *DeleteProjectResponse, <-chan error) {
+	responseChan := make(chan *DeleteProjectResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteProject(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteProjectWithCallback invokes the imm.DeleteProject API asynchronously
+// api document: https://help.aliyun.com/api/imm/deleteproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteProjectWithCallback(request *DeleteProjectRequest, callback func(response *DeleteProjectResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteProjectResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteProject(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteProjectRequest is the request struct for api DeleteProject
+type DeleteProjectRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+}
+
+// DeleteProjectResponse is the response struct for api DeleteProject
+type DeleteProjectResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteProjectRequest creates a request to invoke DeleteProject API
+func CreateDeleteProjectRequest() (request *DeleteProjectRequest) {
+	request = &DeleteProjectRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteProject", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteProjectResponse creates a response to parse from DeleteProject response
+func CreateDeleteProjectResponse() (response *DeleteProjectResponse) {
+	response = &DeleteProjectResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/delete_tag_by_name.go

@@ -0,0 +1,106 @@
+package imm
+
+//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"
+)
+
+// DeleteTagByName invokes the imm.DeleteTagByName API synchronously
+// api document: https://help.aliyun.com/api/imm/deletetagbyname.html
+func (client *Client) DeleteTagByName(request *DeleteTagByNameRequest) (response *DeleteTagByNameResponse, err error) {
+	response = CreateDeleteTagByNameResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteTagByNameWithChan invokes the imm.DeleteTagByName API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletetagbyname.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteTagByNameWithChan(request *DeleteTagByNameRequest) (<-chan *DeleteTagByNameResponse, <-chan error) {
+	responseChan := make(chan *DeleteTagByNameResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteTagByName(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteTagByNameWithCallback invokes the imm.DeleteTagByName API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletetagbyname.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteTagByNameWithCallback(request *DeleteTagByNameRequest, callback func(response *DeleteTagByNameResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteTagByNameResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteTagByName(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteTagByNameRequest is the request struct for api DeleteTagByName
+type DeleteTagByNameRequest struct {
+	*requests.RpcRequest
+	TagName string `position:"Query" name:"TagName"`
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+	SrcUri  string `position:"Query" name:"SrcUri"`
+}
+
+// DeleteTagByNameResponse is the response struct for api DeleteTagByName
+type DeleteTagByNameResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteTagByNameRequest creates a request to invoke DeleteTagByName API
+func CreateDeleteTagByNameRequest() (request *DeleteTagByNameRequest) {
+	request = &DeleteTagByNameRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteTagByName", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteTagByNameResponse creates a response to parse from DeleteTagByName response
+func CreateDeleteTagByNameResponse() (response *DeleteTagByNameResponse) {
+	response = &DeleteTagByNameResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/imm/delete_tag_by_url.go

@@ -0,0 +1,105 @@
+package imm
+
+//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"
+)
+
+// DeleteTagByUrl invokes the imm.DeleteTagByUrl API synchronously
+// api document: https://help.aliyun.com/api/imm/deletetagbyurl.html
+func (client *Client) DeleteTagByUrl(request *DeleteTagByUrlRequest) (response *DeleteTagByUrlResponse, err error) {
+	response = CreateDeleteTagByUrlResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteTagByUrlWithChan invokes the imm.DeleteTagByUrl API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletetagbyurl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteTagByUrlWithChan(request *DeleteTagByUrlRequest) (<-chan *DeleteTagByUrlResponse, <-chan error) {
+	responseChan := make(chan *DeleteTagByUrlResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteTagByUrl(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteTagByUrlWithCallback invokes the imm.DeleteTagByUrl API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletetagbyurl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteTagByUrlWithCallback(request *DeleteTagByUrlRequest, callback func(response *DeleteTagByUrlResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteTagByUrlResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteTagByUrl(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteTagByUrlRequest is the request struct for api DeleteTagByUrl
+type DeleteTagByUrlRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+	SrcUri  string `position:"Query" name:"SrcUri"`
+}
+
+// DeleteTagByUrlResponse is the response struct for api DeleteTagByUrl
+type DeleteTagByUrlResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteTagByUrlRequest creates a request to invoke DeleteTagByUrl API
+func CreateDeleteTagByUrlRequest() (request *DeleteTagByUrlRequest) {
+	request = &DeleteTagByUrlRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteTagByUrl", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteTagByUrlResponse creates a response to parse from DeleteTagByUrl response
+func CreateDeleteTagByUrlResponse() (response *DeleteTagByUrlResponse) {
+	response = &DeleteTagByUrlResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/imm/delete_tag_job.go

@@ -0,0 +1,105 @@
+package imm
+
+//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"
+)
+
+// DeleteTagJob invokes the imm.DeleteTagJob API synchronously
+// api document: https://help.aliyun.com/api/imm/deletetagjob.html
+func (client *Client) DeleteTagJob(request *DeleteTagJobRequest) (response *DeleteTagJobResponse, err error) {
+	response = CreateDeleteTagJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteTagJobWithChan invokes the imm.DeleteTagJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletetagjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteTagJobWithChan(request *DeleteTagJobRequest) (<-chan *DeleteTagJobResponse, <-chan error) {
+	responseChan := make(chan *DeleteTagJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteTagJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteTagJobWithCallback invokes the imm.DeleteTagJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletetagjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteTagJobWithCallback(request *DeleteTagJobRequest, callback func(response *DeleteTagJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteTagJobResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteTagJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteTagJobRequest is the request struct for api DeleteTagJob
+type DeleteTagJobRequest struct {
+	*requests.RpcRequest
+	JobId          string `position:"Query" name:"JobId"`
+	Project        string `position:"Query" name:"Project"`
+	ClearIndexData string `position:"Query" name:"ClearIndexData"`
+}
+
+// DeleteTagJobResponse is the response struct for api DeleteTagJob
+type DeleteTagJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteTagJobRequest creates a request to invoke DeleteTagJob API
+func CreateDeleteTagJobRequest() (request *DeleteTagJobRequest) {
+	request = &DeleteTagJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteTagJob", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteTagJobResponse creates a response to parse from DeleteTagJob response
+func CreateDeleteTagJobResponse() (response *DeleteTagJobResponse) {
+	response = &DeleteTagJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/delete_tag_set.go

@@ -0,0 +1,106 @@
+package imm
+
+//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"
+)
+
+// DeleteTagSet invokes the imm.DeleteTagSet API synchronously
+// api document: https://help.aliyun.com/api/imm/deletetagset.html
+func (client *Client) DeleteTagSet(request *DeleteTagSetRequest) (response *DeleteTagSetResponse, err error) {
+	response = CreateDeleteTagSetResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteTagSetWithChan invokes the imm.DeleteTagSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletetagset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteTagSetWithChan(request *DeleteTagSetRequest) (<-chan *DeleteTagSetResponse, <-chan error) {
+	responseChan := make(chan *DeleteTagSetResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteTagSet(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteTagSetWithCallback invokes the imm.DeleteTagSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletetagset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteTagSetWithCallback(request *DeleteTagSetRequest, callback func(response *DeleteTagSetResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteTagSetResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteTagSet(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteTagSetRequest is the request struct for api DeleteTagSet
+type DeleteTagSetRequest struct {
+	*requests.RpcRequest
+	LazyMode   string `position:"Query" name:"LazyMode"`
+	Project    string `position:"Query" name:"Project"`
+	SetId      string `position:"Query" name:"SetId"`
+	CheckEmpty string `position:"Query" name:"CheckEmpty"`
+}
+
+// DeleteTagSetResponse is the response struct for api DeleteTagSet
+type DeleteTagSetResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteTagSetRequest creates a request to invoke DeleteTagSet API
+func CreateDeleteTagSetRequest() (request *DeleteTagSetRequest) {
+	request = &DeleteTagSetRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteTagSet", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteTagSetResponse creates a response to parse from DeleteTagSet response
+func CreateDeleteTagSetResponse() (response *DeleteTagSetResponse) {
+	response = &DeleteTagSetResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 103 - 0
services/imm/describe_regions.go

@@ -0,0 +1,103 @@
+package imm
+
+//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"
+)
+
+// DescribeRegions invokes the imm.DescribeRegions API synchronously
+// api document: https://help.aliyun.com/api/imm/describeregions.html
+func (client *Client) DescribeRegions(request *DescribeRegionsRequest) (response *DescribeRegionsResponse, err error) {
+	response = CreateDescribeRegionsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeRegionsWithChan invokes the imm.DescribeRegions API asynchronously
+// api document: https://help.aliyun.com/api/imm/describeregions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeRegionsWithChan(request *DescribeRegionsRequest) (<-chan *DescribeRegionsResponse, <-chan error) {
+	responseChan := make(chan *DescribeRegionsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeRegions(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeRegionsWithCallback invokes the imm.DescribeRegions API asynchronously
+// api document: https://help.aliyun.com/api/imm/describeregions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeRegionsWithCallback(request *DescribeRegionsRequest, callback func(response *DescribeRegionsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeRegionsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeRegions(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeRegionsRequest is the request struct for api DescribeRegions
+type DescribeRegionsRequest struct {
+	*requests.RpcRequest
+}
+
+// DescribeRegionsResponse is the response struct for api DescribeRegions
+type DescribeRegionsResponse struct {
+	*responses.BaseResponse
+	RequestId string        `json:"RequestId" xml:"RequestId"`
+	Regions   []RegionsItem `json:"Regions" xml:"Regions"`
+}
+
+// CreateDescribeRegionsRequest creates a request to invoke DescribeRegions API
+func CreateDescribeRegionsRequest() (request *DescribeRegionsRequest) {
+	request = &DescribeRegionsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DescribeRegions", "imm", "openAPI")
+	return
+}
+
+// CreateDescribeRegionsResponse creates a response to parse from DescribeRegions response
+func CreateDescribeRegionsResponse() (response *DescribeRegionsResponse) {
+	response = &DescribeRegionsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/imm/detect_face.go

@@ -0,0 +1,107 @@
+package imm
+
+//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"
+)
+
+// DetectFace invokes the imm.DetectFace API synchronously
+// api document: https://help.aliyun.com/api/imm/detectface.html
+func (client *Client) DetectFace(request *DetectFaceRequest) (response *DetectFaceResponse, err error) {
+	response = CreateDetectFaceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DetectFaceWithChan invokes the imm.DetectFace API asynchronously
+// api document: https://help.aliyun.com/api/imm/detectface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectFaceWithChan(request *DetectFaceRequest) (<-chan *DetectFaceResponse, <-chan error) {
+	responseChan := make(chan *DetectFaceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DetectFace(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DetectFaceWithCallback invokes the imm.DetectFace API asynchronously
+// api document: https://help.aliyun.com/api/imm/detectface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectFaceWithCallback(request *DetectFaceRequest, callback func(response *DetectFaceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DetectFaceResponse
+		var err error
+		defer close(result)
+		response, err = client.DetectFace(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DetectFaceRequest is the request struct for api DetectFace
+type DetectFaceRequest struct {
+	*requests.RpcRequest
+	SrcUris string `position:"Query" name:"SrcUris"`
+	Project string `position:"Query" name:"Project"`
+}
+
+// DetectFaceResponse is the response struct for api DetectFace
+type DetectFaceResponse struct {
+	*responses.BaseResponse
+	RequestId      string               `json:"RequestId" xml:"RequestId"`
+	SrcUris        []string             `json:"SrcUris" xml:"SrcUris"`
+	SuccessDetails []SuccessDetailsItem `json:"SuccessDetails" xml:"SuccessDetails"`
+	FailDetails    []FailDetailsItem    `json:"FailDetails" xml:"FailDetails"`
+}
+
+// CreateDetectFaceRequest creates a request to invoke DetectFace API
+func CreateDetectFaceRequest() (request *DetectFaceRequest) {
+	request = &DetectFaceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DetectFace", "imm", "openAPI")
+	return
+}
+
+// CreateDetectFaceResponse creates a response to parse from DetectFace response
+func CreateDetectFaceResponse() (response *DetectFaceResponse) {
+	response = &DetectFaceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/imm/detect_tag.go

@@ -0,0 +1,107 @@
+package imm
+
+//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"
+)
+
+// DetectTag invokes the imm.DetectTag API synchronously
+// api document: https://help.aliyun.com/api/imm/detecttag.html
+func (client *Client) DetectTag(request *DetectTagRequest) (response *DetectTagResponse, err error) {
+	response = CreateDetectTagResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DetectTagWithChan invokes the imm.DetectTag API asynchronously
+// api document: https://help.aliyun.com/api/imm/detecttag.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectTagWithChan(request *DetectTagRequest) (<-chan *DetectTagResponse, <-chan error) {
+	responseChan := make(chan *DetectTagResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DetectTag(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DetectTagWithCallback invokes the imm.DetectTag API asynchronously
+// api document: https://help.aliyun.com/api/imm/detecttag.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectTagWithCallback(request *DetectTagRequest, callback func(response *DetectTagResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DetectTagResponse
+		var err error
+		defer close(result)
+		response, err = client.DetectTag(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DetectTagRequest is the request struct for api DetectTag
+type DetectTagRequest struct {
+	*requests.RpcRequest
+	SrcUris string `position:"Query" name:"SrcUris"`
+	Project string `position:"Query" name:"Project"`
+}
+
+// DetectTagResponse is the response struct for api DetectTag
+type DetectTagResponse struct {
+	*responses.BaseResponse
+	RequestId      string               `json:"RequestId" xml:"RequestId"`
+	SuccessNum     string               `json:"SuccessNum" xml:"SuccessNum"`
+	SuccessDetails []SuccessDetailsItem `json:"SuccessDetails" xml:"SuccessDetails"`
+	FailDetails    []FailDetailsItem    `json:"FailDetails" xml:"FailDetails"`
+}
+
+// CreateDetectTagRequest creates a request to invoke DetectTag API
+func CreateDetectTagRequest() (request *DetectTagRequest) {
+	request = &DetectTagRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DetectTag", "imm", "openAPI")
+	return
+}
+
+// CreateDetectTagResponse creates a response to parse from DetectTag response
+func CreateDetectTagResponse() (response *DetectTagResponse) {
+	response = &DetectTagResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/face_compare.go

@@ -0,0 +1,106 @@
+package imm
+
+//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"
+)
+
+// FaceCompare invokes the imm.FaceCompare API synchronously
+// api document: https://help.aliyun.com/api/imm/facecompare.html
+func (client *Client) FaceCompare(request *FaceCompareRequest) (response *FaceCompareResponse, err error) {
+	response = CreateFaceCompareResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// FaceCompareWithChan invokes the imm.FaceCompare API asynchronously
+// api document: https://help.aliyun.com/api/imm/facecompare.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) FaceCompareWithChan(request *FaceCompareRequest) (<-chan *FaceCompareResponse, <-chan error) {
+	responseChan := make(chan *FaceCompareResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.FaceCompare(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// FaceCompareWithCallback invokes the imm.FaceCompare API asynchronously
+// api document: https://help.aliyun.com/api/imm/facecompare.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) FaceCompareWithCallback(request *FaceCompareRequest, callback func(response *FaceCompareResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *FaceCompareResponse
+		var err error
+		defer close(result)
+		response, err = client.FaceCompare(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// FaceCompareRequest is the request struct for api FaceCompare
+type FaceCompareRequest struct {
+	*requests.RpcRequest
+	SrcUriB string `position:"Query" name:"SrcUriB"`
+	SrcUriA string `position:"Query" name:"SrcUriA"`
+	Project string `position:"Query" name:"Project"`
+}
+
+// FaceCompareResponse is the response struct for api FaceCompare
+type FaceCompareResponse struct {
+	*responses.BaseResponse
+	RequestId     string              `json:"RequestId" xml:"RequestId"`
+	CompareResult []CompareResultItem `json:"CompareResult" xml:"CompareResult"`
+}
+
+// CreateFaceCompareRequest creates a request to invoke FaceCompare API
+func CreateFaceCompareRequest() (request *FaceCompareRequest) {
+	request = &FaceCompareRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "FaceCompare", "imm", "openAPI")
+	return
+}
+
+// CreateFaceCompareResponse creates a response to parse from FaceCompare response
+func CreateFaceCompareResponse() (response *FaceCompareResponse) {
+	response = &FaceCompareResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 125 - 0
services/imm/face_regist.go

@@ -0,0 +1,125 @@
+package imm
+
+//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"
+)
+
+// FaceRegist invokes the imm.FaceRegist API synchronously
+// api document: https://help.aliyun.com/api/imm/faceregist.html
+func (client *Client) FaceRegist(request *FaceRegistRequest) (response *FaceRegistResponse, err error) {
+	response = CreateFaceRegistResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// FaceRegistWithChan invokes the imm.FaceRegist API asynchronously
+// api document: https://help.aliyun.com/api/imm/faceregist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) FaceRegistWithChan(request *FaceRegistRequest) (<-chan *FaceRegistResponse, <-chan error) {
+	responseChan := make(chan *FaceRegistResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.FaceRegist(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// FaceRegistWithCallback invokes the imm.FaceRegist API asynchronously
+// api document: https://help.aliyun.com/api/imm/faceregist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) FaceRegistWithCallback(request *FaceRegistRequest, callback func(response *FaceRegistResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *FaceRegistResponse
+		var err error
+		defer close(result)
+		response, err = client.FaceRegist(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// FaceRegistRequest is the request struct for api FaceRegist
+type FaceRegistRequest struct {
+	*requests.RpcRequest
+	ChooseBiggestFace  requests.Boolean `position:"Query" name:"ChooseBiggestFace"`
+	IsQualityLimit     requests.Boolean `position:"Query" name:"IsQualityLimit"`
+	Project            string           `position:"Query" name:"Project"`
+	SrcUri             string           `position:"Query" name:"SrcUri"`
+	RegisterCheckLevel string           `position:"Query" name:"RegisterCheckLevel"`
+	GroupName          string           `position:"Query" name:"GroupName"`
+	User               string           `position:"Query" name:"User"`
+}
+
+// FaceRegistResponse is the response struct for api FaceRegist
+type FaceRegistResponse struct {
+	*responses.BaseResponse
+	RequestId string   `json:"RequestId" xml:"RequestId"`
+	GroupId   string   `json:"GroupId" xml:"GroupId"`
+	ImageUrl  string   `json:"ImageUrl" xml:"ImageUrl"`
+	ImageMd5  string   `json:"ImageMd5" xml:"ImageMd5"`
+	ImageId   string   `json:"ImageId" xml:"ImageId"`
+	GroupName string   `json:"GroupName" xml:"GroupName"`
+	User      string   `json:"User" xml:"User"`
+	Roll      float64  `json:"Roll" xml:"Roll"`
+	FaceId    string   `json:"FaceId" xml:"FaceId"`
+	Yaw       string   `json:"Yaw" xml:"Yaw"`
+	Quality   float64  `json:"Quality" xml:"Quality"`
+	Glasses   int      `json:"Glasses" xml:"Glasses"`
+	Hat       int      `json:"Hat" xml:"Hat"`
+	Pitch     float64  `json:"Pitch" xml:"Pitch"`
+	Age       int      `json:"Age" xml:"Age"`
+	Gender    string   `json:"Gender" xml:"Gender"`
+	Axis      []string `json:"Axis" xml:"Axis"`
+}
+
+// CreateFaceRegistRequest creates a request to invoke FaceRegist API
+func CreateFaceRegistRequest() (request *FaceRegistRequest) {
+	request = &FaceRegistRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "FaceRegist", "imm", "openAPI")
+	return
+}
+
+// CreateFaceRegistResponse creates a response to parse from FaceRegist response
+func CreateFaceRegistResponse() (response *FaceRegistResponse) {
+	response = &FaceRegistResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/imm/face_search.go

@@ -0,0 +1,115 @@
+package imm
+
+//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"
+)
+
+// FaceSearch invokes the imm.FaceSearch API synchronously
+// api document: https://help.aliyun.com/api/imm/facesearch.html
+func (client *Client) FaceSearch(request *FaceSearchRequest) (response *FaceSearchResponse, err error) {
+	response = CreateFaceSearchResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// FaceSearchWithChan invokes the imm.FaceSearch API asynchronously
+// api document: https://help.aliyun.com/api/imm/facesearch.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) FaceSearchWithChan(request *FaceSearchRequest) (<-chan *FaceSearchResponse, <-chan error) {
+	responseChan := make(chan *FaceSearchResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.FaceSearch(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// FaceSearchWithCallback invokes the imm.FaceSearch API asynchronously
+// api document: https://help.aliyun.com/api/imm/facesearch.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) FaceSearchWithCallback(request *FaceSearchRequest, callback func(response *FaceSearchResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *FaceSearchResponse
+		var err error
+		defer close(result)
+		response, err = client.FaceSearch(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// FaceSearchRequest is the request struct for api FaceSearch
+type FaceSearchRequest struct {
+	*requests.RpcRequest
+	ResultNum            requests.Integer `position:"Query" name:"ResultNum"`
+	Project              string           `position:"Query" name:"Project"`
+	SearchThresholdLevel string           `position:"Query" name:"SearchThresholdLevel"`
+	SrcUri               string           `position:"Query" name:"SrcUri"`
+	IsThreshold          requests.Boolean `position:"Query" name:"IsThreshold"`
+	GroupName            string           `position:"Query" name:"GroupName"`
+}
+
+// FaceSearchResponse is the response struct for api FaceSearch
+type FaceSearchResponse struct {
+	*responses.BaseResponse
+	RequestId   string            `json:"RequestId" xml:"RequestId"`
+	ImageUrl    string            `json:"ImageUrl" xml:"ImageUrl"`
+	GroupName   string            `json:"GroupName" xml:"GroupName"`
+	Glasses     int               `json:"Glasses" xml:"Glasses"`
+	Hat         int               `json:"Hat" xml:"Hat"`
+	Score       float64           `json:"Score" xml:"Score"`
+	Axis        []string          `json:"Axis" xml:"Axis"`
+	ResultFaces []ResultFacesItem `json:"ResultFaces" xml:"ResultFaces"`
+}
+
+// CreateFaceSearchRequest creates a request to invoke FaceSearch API
+func CreateFaceSearchRequest() (request *FaceSearchRequest) {
+	request = &FaceSearchRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "FaceSearch", "imm", "openAPI")
+	return
+}
+
+// CreateFaceSearchResponse creates a response to parse from FaceSearch response
+func CreateFaceSearchResponse() (response *FaceSearchResponse) {
+	response = &FaceSearchResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/imm/get_face_detail.go

@@ -0,0 +1,112 @@
+package imm
+
+//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"
+)
+
+// GetFaceDetail invokes the imm.GetFaceDetail API synchronously
+// api document: https://help.aliyun.com/api/imm/getfacedetail.html
+func (client *Client) GetFaceDetail(request *GetFaceDetailRequest) (response *GetFaceDetailResponse, err error) {
+	response = CreateGetFaceDetailResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetFaceDetailWithChan invokes the imm.GetFaceDetail API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacedetail.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceDetailWithChan(request *GetFaceDetailRequest) (<-chan *GetFaceDetailResponse, <-chan error) {
+	responseChan := make(chan *GetFaceDetailResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetFaceDetail(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetFaceDetailWithCallback invokes the imm.GetFaceDetail API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacedetail.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceDetailWithCallback(request *GetFaceDetailRequest, callback func(response *GetFaceDetailResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetFaceDetailResponse
+		var err error
+		defer close(result)
+		response, err = client.GetFaceDetail(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetFaceDetailRequest is the request struct for api GetFaceDetail
+type GetFaceDetailRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+	FaceId  string `position:"Query" name:"FaceId"`
+}
+
+// GetFaceDetailResponse is the response struct for api GetFaceDetail
+type GetFaceDetailResponse struct {
+	*responses.BaseResponse
+	SetId         string        `json:"SetId" xml:"SetId"`
+	FaceId        string        `json:"FaceId" xml:"FaceId"`
+	PhotoId       string        `json:"PhotoId" xml:"PhotoId"`
+	PhotoUrl      string        `json:"PhotoUrl" xml:"PhotoUrl"`
+	GroupId       string        `json:"GroupId" xml:"GroupId"`
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	FaceRectangle FaceRectangle `json:"FaceRectangle" xml:"FaceRectangle"`
+	FaceAttribute FaceAttribute `json:"FaceAttribute" xml:"FaceAttribute"`
+}
+
+// CreateGetFaceDetailRequest creates a request to invoke GetFaceDetail API
+func CreateGetFaceDetailRequest() (request *GetFaceDetailRequest) {
+	request = &GetFaceDetailRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetFaceDetail", "imm", "openAPI")
+	return
+}
+
+// CreateGetFaceDetailResponse creates a response to parse from GetFaceDetail response
+func CreateGetFaceDetailResponse() (response *GetFaceDetailResponse) {
+	response = &GetFaceDetailResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/imm/get_face_job.go

@@ -0,0 +1,111 @@
+package imm
+
+//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"
+)
+
+// GetFaceJob invokes the imm.GetFaceJob API synchronously
+// api document: https://help.aliyun.com/api/imm/getfacejob.html
+func (client *Client) GetFaceJob(request *GetFaceJobRequest) (response *GetFaceJobResponse, err error) {
+	response = CreateGetFaceJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetFaceJobWithChan invokes the imm.GetFaceJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacejob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceJobWithChan(request *GetFaceJobRequest) (<-chan *GetFaceJobResponse, <-chan error) {
+	responseChan := make(chan *GetFaceJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetFaceJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetFaceJobWithCallback invokes the imm.GetFaceJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacejob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceJobWithCallback(request *GetFaceJobRequest, callback func(response *GetFaceJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetFaceJobResponse
+		var err error
+		defer close(result)
+		response, err = client.GetFaceJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetFaceJobRequest is the request struct for api GetFaceJob
+type GetFaceJobRequest struct {
+	*requests.RpcRequest
+	JobId   string `position:"Query" name:"JobId"`
+	Project string `position:"Query" name:"Project"`
+}
+
+// GetFaceJobResponse is the response struct for api GetFaceJob
+type GetFaceJobResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	JobId      string `json:"JobId" xml:"JobId"`
+	SetId      string `json:"SetId" xml:"SetId"`
+	SrcUri     string `json:"SrcUri" xml:"SrcUri"`
+	Status     string `json:"Status" xml:"Status"`
+	Percent    int    `json:"Percent" xml:"Percent"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	FinishTime string `json:"FinishTime" xml:"FinishTime"`
+}
+
+// CreateGetFaceJobRequest creates a request to invoke GetFaceJob API
+func CreateGetFaceJobRequest() (request *GetFaceJobRequest) {
+	request = &GetFaceJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetFaceJob", "imm", "openAPI")
+	return
+}
+
+// CreateGetFaceJobResponse creates a response to parse from GetFaceJob response
+func CreateGetFaceJobResponse() (response *GetFaceJobResponse) {
+	response = &GetFaceJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/imm/get_face_search_group.go

@@ -0,0 +1,110 @@
+package imm
+
+//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"
+)
+
+// GetFaceSearchGroup invokes the imm.GetFaceSearchGroup API synchronously
+// api document: https://help.aliyun.com/api/imm/getfacesearchgroup.html
+func (client *Client) GetFaceSearchGroup(request *GetFaceSearchGroupRequest) (response *GetFaceSearchGroupResponse, err error) {
+	response = CreateGetFaceSearchGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetFaceSearchGroupWithChan invokes the imm.GetFaceSearchGroup API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacesearchgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceSearchGroupWithChan(request *GetFaceSearchGroupRequest) (<-chan *GetFaceSearchGroupResponse, <-chan error) {
+	responseChan := make(chan *GetFaceSearchGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetFaceSearchGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetFaceSearchGroupWithCallback invokes the imm.GetFaceSearchGroup API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacesearchgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceSearchGroupWithCallback(request *GetFaceSearchGroupRequest, callback func(response *GetFaceSearchGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetFaceSearchGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.GetFaceSearchGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetFaceSearchGroupRequest is the request struct for api GetFaceSearchGroup
+type GetFaceSearchGroupRequest struct {
+	*requests.RpcRequest
+	Project   string `position:"Query" name:"Project"`
+	GroupName string `position:"Query" name:"GroupName"`
+}
+
+// GetFaceSearchGroupResponse is the response struct for api GetFaceSearchGroup
+type GetFaceSearchGroupResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	GroupName  string `json:"GroupName" xml:"GroupName"`
+	Count      string `json:"Count" xml:"Count"`
+	Status     string `json:"Status" xml:"Status"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime string `json:"ModifyTime" xml:"ModifyTime"`
+	GroupId    string `json:"GroupId" xml:"GroupId"`
+}
+
+// CreateGetFaceSearchGroupRequest creates a request to invoke GetFaceSearchGroup API
+func CreateGetFaceSearchGroupRequest() (request *GetFaceSearchGroupRequest) {
+	request = &GetFaceSearchGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetFaceSearchGroup", "imm", "openAPI")
+	return
+}
+
+// CreateGetFaceSearchGroupResponse creates a response to parse from GetFaceSearchGroup response
+func CreateGetFaceSearchGroupResponse() (response *GetFaceSearchGroupResponse) {
+	response = &GetFaceSearchGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 123 - 0
services/imm/get_face_search_image.go

@@ -0,0 +1,123 @@
+package imm
+
+//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"
+)
+
+// GetFaceSearchImage invokes the imm.GetFaceSearchImage API synchronously
+// api document: https://help.aliyun.com/api/imm/getfacesearchimage.html
+func (client *Client) GetFaceSearchImage(request *GetFaceSearchImageRequest) (response *GetFaceSearchImageResponse, err error) {
+	response = CreateGetFaceSearchImageResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetFaceSearchImageWithChan invokes the imm.GetFaceSearchImage API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacesearchimage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceSearchImageWithChan(request *GetFaceSearchImageRequest) (<-chan *GetFaceSearchImageResponse, <-chan error) {
+	responseChan := make(chan *GetFaceSearchImageResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetFaceSearchImage(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetFaceSearchImageWithCallback invokes the imm.GetFaceSearchImage API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacesearchimage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceSearchImageWithCallback(request *GetFaceSearchImageRequest, callback func(response *GetFaceSearchImageResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetFaceSearchImageResponse
+		var err error
+		defer close(result)
+		response, err = client.GetFaceSearchImage(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetFaceSearchImageRequest is the request struct for api GetFaceSearchImage
+type GetFaceSearchImageRequest struct {
+	*requests.RpcRequest
+	ImageId   string `position:"Query" name:"ImageId"`
+	Project   string `position:"Query" name:"Project"`
+	SrcUri    string `position:"Query" name:"SrcUri"`
+	GroupName string `position:"Query" name:"GroupName"`
+	User      string `position:"Query" name:"User"`
+}
+
+// GetFaceSearchImageResponse is the response struct for api GetFaceSearchImage
+type GetFaceSearchImageResponse struct {
+	*responses.BaseResponse
+	RequestId string   `json:"RequestId" xml:"RequestId"`
+	GroupName string   `json:"GroupName" xml:"GroupName"`
+	GroupId   string   `json:"GroupId" xml:"GroupId"`
+	Gender    string   `json:"Gender" xml:"Gender"`
+	Age       int      `json:"Age" xml:"Age"`
+	Pitch     float64  `json:"Pitch" xml:"Pitch"`
+	ImageUrl  float64  `json:"ImageUrl" xml:"ImageUrl"`
+	ImageMd5  string   `json:"ImageMd5" xml:"ImageMd5"`
+	Roll      float64  `json:"Roll" xml:"Roll"`
+	FaceId    string   `json:"FaceId" xml:"FaceId"`
+	Yaw       float64  `json:"Yaw" xml:"Yaw"`
+	Quality   float64  `json:"Quality" xml:"Quality"`
+	Hat       int      `json:"Hat" xml:"Hat"`
+	Glasses   int      `json:"Glasses" xml:"Glasses"`
+	ImageId   string   `json:"ImageId" xml:"ImageId"`
+	User      string   `json:"User" xml:"User"`
+	Axis      []string `json:"Axis" xml:"Axis"`
+}
+
+// CreateGetFaceSearchImageRequest creates a request to invoke GetFaceSearchImage API
+func CreateGetFaceSearchImageRequest() (request *GetFaceSearchImageRequest) {
+	request = &GetFaceSearchImageRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetFaceSearchImage", "imm", "openAPI")
+	return
+}
+
+// CreateGetFaceSearchImageResponse creates a response to parse from GetFaceSearchImage response
+func CreateGetFaceSearchImageResponse() (response *GetFaceSearchImageResponse) {
+	response = &GetFaceSearchImageResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/imm/get_face_search_user.go

@@ -0,0 +1,112 @@
+package imm
+
+//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"
+)
+
+// GetFaceSearchUser invokes the imm.GetFaceSearchUser API synchronously
+// api document: https://help.aliyun.com/api/imm/getfacesearchuser.html
+func (client *Client) GetFaceSearchUser(request *GetFaceSearchUserRequest) (response *GetFaceSearchUserResponse, err error) {
+	response = CreateGetFaceSearchUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetFaceSearchUserWithChan invokes the imm.GetFaceSearchUser API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacesearchuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceSearchUserWithChan(request *GetFaceSearchUserRequest) (<-chan *GetFaceSearchUserResponse, <-chan error) {
+	responseChan := make(chan *GetFaceSearchUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetFaceSearchUser(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetFaceSearchUserWithCallback invokes the imm.GetFaceSearchUser API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacesearchuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceSearchUserWithCallback(request *GetFaceSearchUserRequest, callback func(response *GetFaceSearchUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetFaceSearchUserResponse
+		var err error
+		defer close(result)
+		response, err = client.GetFaceSearchUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetFaceSearchUserRequest is the request struct for api GetFaceSearchUser
+type GetFaceSearchUserRequest struct {
+	*requests.RpcRequest
+	Project   string `position:"Query" name:"Project"`
+	GroupName string `position:"Query" name:"GroupName"`
+	User      string `position:"Query" name:"User"`
+}
+
+// GetFaceSearchUserResponse is the response struct for api GetFaceSearchUser
+type GetFaceSearchUserResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	GroupName  string `json:"GroupName" xml:"GroupName"`
+	Count      string `json:"Count" xml:"Count"`
+	Status     string `json:"Status" xml:"Status"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime string `json:"ModifyTime" xml:"ModifyTime"`
+	GroupId    string `json:"GroupId" xml:"GroupId"`
+	User       string `json:"User" xml:"User"`
+}
+
+// CreateGetFaceSearchUserRequest creates a request to invoke GetFaceSearchUser API
+func CreateGetFaceSearchUserRequest() (request *GetFaceSearchUserRequest) {
+	request = &GetFaceSearchUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetFaceSearchUser", "imm", "openAPI")
+	return
+}
+
+// CreateGetFaceSearchUserResponse creates a response to parse from GetFaceSearchUser response
+func CreateGetFaceSearchUserResponse() (response *GetFaceSearchUserResponse) {
+	response = &GetFaceSearchUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/imm/get_face_set.go

@@ -0,0 +1,109 @@
+package imm
+
+//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"
+)
+
+// GetFaceSet invokes the imm.GetFaceSet API synchronously
+// api document: https://help.aliyun.com/api/imm/getfaceset.html
+func (client *Client) GetFaceSet(request *GetFaceSetRequest) (response *GetFaceSetResponse, err error) {
+	response = CreateGetFaceSetResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetFaceSetWithChan invokes the imm.GetFaceSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfaceset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceSetWithChan(request *GetFaceSetRequest) (<-chan *GetFaceSetResponse, <-chan error) {
+	responseChan := make(chan *GetFaceSetResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetFaceSet(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetFaceSetWithCallback invokes the imm.GetFaceSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfaceset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceSetWithCallback(request *GetFaceSetRequest, callback func(response *GetFaceSetResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetFaceSetResponse
+		var err error
+		defer close(result)
+		response, err = client.GetFaceSet(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetFaceSetRequest is the request struct for api GetFaceSet
+type GetFaceSetRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+}
+
+// GetFaceSetResponse is the response struct for api GetFaceSet
+type GetFaceSetResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	SetId      string `json:"SetId" xml:"SetId"`
+	Status     string `json:"Status" xml:"Status"`
+	Photos     int    `json:"Photos" xml:"Photos"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime string `json:"ModifyTime" xml:"ModifyTime"`
+}
+
+// CreateGetFaceSetRequest creates a request to invoke GetFaceSet API
+func CreateGetFaceSetRequest() (request *GetFaceSetRequest) {
+	request = &GetFaceSetRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetFaceSet", "imm", "openAPI")
+	return
+}
+
+// CreateGetFaceSetResponse creates a response to parse from GetFaceSet response
+func CreateGetFaceSetResponse() (response *GetFaceSetResponse) {
+	response = &GetFaceSetResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/imm/get_face_set_detail.go

@@ -0,0 +1,109 @@
+package imm
+
+//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"
+)
+
+// GetFaceSetDetail invokes the imm.GetFaceSetDetail API synchronously
+// api document: https://help.aliyun.com/api/imm/getfacesetdetail.html
+func (client *Client) GetFaceSetDetail(request *GetFaceSetDetailRequest) (response *GetFaceSetDetailResponse, err error) {
+	response = CreateGetFaceSetDetailResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetFaceSetDetailWithChan invokes the imm.GetFaceSetDetail API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacesetdetail.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceSetDetailWithChan(request *GetFaceSetDetailRequest) (<-chan *GetFaceSetDetailResponse, <-chan error) {
+	responseChan := make(chan *GetFaceSetDetailResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetFaceSetDetail(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetFaceSetDetailWithCallback invokes the imm.GetFaceSetDetail API asynchronously
+// api document: https://help.aliyun.com/api/imm/getfacesetdetail.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFaceSetDetailWithCallback(request *GetFaceSetDetailRequest, callback func(response *GetFaceSetDetailResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetFaceSetDetailResponse
+		var err error
+		defer close(result)
+		response, err = client.GetFaceSetDetail(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetFaceSetDetailRequest is the request struct for api GetFaceSetDetail
+type GetFaceSetDetailRequest struct {
+	*requests.RpcRequest
+	Marker          string `position:"Query" name:"Marker"`
+	Project         string `position:"Query" name:"Project"`
+	SetId           string `position:"Query" name:"SetId"`
+	ReturnAttribute string `position:"Query" name:"ReturnAttribute"`
+}
+
+// GetFaceSetDetailResponse is the response struct for api GetFaceSetDetail
+type GetFaceSetDetailResponse struct {
+	*responses.BaseResponse
+	RequestId   string            `json:"RequestId" xml:"RequestId"`
+	SetId       string            `json:"SetId" xml:"SetId"`
+	NextMarker  string            `json:"NextMarker" xml:"NextMarker"`
+	FaceDetails []FaceDetailsItem `json:"FaceDetails" xml:"FaceDetails"`
+}
+
+// CreateGetFaceSetDetailRequest creates a request to invoke GetFaceSetDetail API
+func CreateGetFaceSetDetailRequest() (request *GetFaceSetDetailRequest) {
+	request = &GetFaceSetDetailRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetFaceSetDetail", "imm", "openAPI")
+	return
+}
+
+// CreateGetFaceSetDetailResponse creates a response to parse from GetFaceSetDetail response
+func CreateGetFaceSetDetailResponse() (response *GetFaceSetDetailResponse) {
+	response = &GetFaceSetDetailResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/imm/get_office_conversion_task.go

@@ -0,0 +1,118 @@
+package imm
+
+//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"
+)
+
+// GetOfficeConversionTask invokes the imm.GetOfficeConversionTask API synchronously
+// api document: https://help.aliyun.com/api/imm/getofficeconversiontask.html
+func (client *Client) GetOfficeConversionTask(request *GetOfficeConversionTaskRequest) (response *GetOfficeConversionTaskResponse, err error) {
+	response = CreateGetOfficeConversionTaskResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetOfficeConversionTaskWithChan invokes the imm.GetOfficeConversionTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/getofficeconversiontask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetOfficeConversionTaskWithChan(request *GetOfficeConversionTaskRequest) (<-chan *GetOfficeConversionTaskResponse, <-chan error) {
+	responseChan := make(chan *GetOfficeConversionTaskResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetOfficeConversionTask(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetOfficeConversionTaskWithCallback invokes the imm.GetOfficeConversionTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/getofficeconversiontask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetOfficeConversionTaskWithCallback(request *GetOfficeConversionTaskRequest, callback func(response *GetOfficeConversionTaskResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetOfficeConversionTaskResponse
+		var err error
+		defer close(result)
+		response, err = client.GetOfficeConversionTask(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetOfficeConversionTaskRequest is the request struct for api GetOfficeConversionTask
+type GetOfficeConversionTaskRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	TaskId  string `position:"Query" name:"TaskId"`
+}
+
+// GetOfficeConversionTaskResponse is the response struct for api GetOfficeConversionTask
+type GetOfficeConversionTaskResponse struct {
+	*responses.BaseResponse
+	RequestId       string     `json:"RequestId" xml:"RequestId"`
+	TgtType         string     `json:"TgtType" xml:"TgtType"`
+	Status          string     `json:"Status" xml:"Status"`
+	Percent         int        `json:"Percent" xml:"Percent"`
+	PageCount       int        `json:"PageCount" xml:"PageCount"`
+	TaskId          string     `json:"TaskId" xml:"TaskId"`
+	TgtUri          string     `json:"TgtUri" xml:"TgtUri"`
+	ImageSpec       string     `json:"ImageSpec" xml:"ImageSpec"`
+	NotifyTopicName string     `json:"NotifyTopicName" xml:"NotifyTopicName"`
+	NotifyEndpoint  string     `json:"NotifyEndpoint" xml:"NotifyEndpoint"`
+	ExternalID      string     `json:"ExternalID" xml:"ExternalID"`
+	CreateTime      string     `json:"CreateTime" xml:"CreateTime"`
+	FinishTime      string     `json:"FinishTime" xml:"FinishTime"`
+	SrcUri          string     `json:"SrcUri" xml:"SrcUri"`
+	FailDetail      FailDetail `json:"FailDetail" xml:"FailDetail"`
+}
+
+// CreateGetOfficeConversionTaskRequest creates a request to invoke GetOfficeConversionTask API
+func CreateGetOfficeConversionTaskRequest() (request *GetOfficeConversionTaskRequest) {
+	request = &GetOfficeConversionTaskRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetOfficeConversionTask", "imm", "openAPI")
+	return
+}
+
+// CreateGetOfficeConversionTaskResponse creates a response to parse from GetOfficeConversionTask response
+func CreateGetOfficeConversionTaskResponse() (response *GetOfficeConversionTaskResponse) {
+	response = &GetOfficeConversionTaskResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/imm/get_photo_process_task.go

@@ -0,0 +1,115 @@
+package imm
+
+//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"
+)
+
+// GetPhotoProcessTask invokes the imm.GetPhotoProcessTask API synchronously
+// api document: https://help.aliyun.com/api/imm/getphotoprocesstask.html
+func (client *Client) GetPhotoProcessTask(request *GetPhotoProcessTaskRequest) (response *GetPhotoProcessTaskResponse, err error) {
+	response = CreateGetPhotoProcessTaskResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetPhotoProcessTaskWithChan invokes the imm.GetPhotoProcessTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/getphotoprocesstask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetPhotoProcessTaskWithChan(request *GetPhotoProcessTaskRequest) (<-chan *GetPhotoProcessTaskResponse, <-chan error) {
+	responseChan := make(chan *GetPhotoProcessTaskResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetPhotoProcessTask(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetPhotoProcessTaskWithCallback invokes the imm.GetPhotoProcessTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/getphotoprocesstask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetPhotoProcessTaskWithCallback(request *GetPhotoProcessTaskRequest, callback func(response *GetPhotoProcessTaskResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetPhotoProcessTaskResponse
+		var err error
+		defer close(result)
+		response, err = client.GetPhotoProcessTask(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetPhotoProcessTaskRequest is the request struct for api GetPhotoProcessTask
+type GetPhotoProcessTaskRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	TaskId  string `position:"Query" name:"TaskId"`
+}
+
+// GetPhotoProcessTaskResponse is the response struct for api GetPhotoProcessTask
+type GetPhotoProcessTaskResponse struct {
+	*responses.BaseResponse
+	RequestId       string `json:"RequestId" xml:"RequestId"`
+	TaskId          string `json:"TaskId" xml:"TaskId"`
+	Status          string `json:"Status" xml:"Status"`
+	SrcUri          string `json:"SrcUri" xml:"SrcUri"`
+	TgtUri          string `json:"TgtUri" xml:"TgtUri"`
+	Style           string `json:"Style" xml:"Style"`
+	NotifyTopicName string `json:"NotifyTopicName" xml:"NotifyTopicName"`
+	NotifyEndpoint  string `json:"NotifyEndpoint" xml:"NotifyEndpoint"`
+	ExternalID      string `json:"ExternalID" xml:"ExternalID"`
+	CreateTime      string `json:"CreateTime" xml:"CreateTime"`
+	FinishTime      string `json:"FinishTime" xml:"FinishTime"`
+	Percent         int    `json:"Percent" xml:"Percent"`
+}
+
+// CreateGetPhotoProcessTaskRequest creates a request to invoke GetPhotoProcessTask API
+func CreateGetPhotoProcessTaskRequest() (request *GetPhotoProcessTaskRequest) {
+	request = &GetPhotoProcessTaskRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetPhotoProcessTask", "imm", "openAPI")
+	return
+}
+
+// CreateGetPhotoProcessTaskResponse creates a response to parse from GetPhotoProcessTask response
+func CreateGetPhotoProcessTaskResponse() (response *GetPhotoProcessTaskResponse) {
+	response = &GetPhotoProcessTaskResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/imm/get_porn_batch_detect_job.go

@@ -0,0 +1,114 @@
+package imm
+
+//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"
+)
+
+// GetPornBatchDetectJob invokes the imm.GetPornBatchDetectJob API synchronously
+// api document: https://help.aliyun.com/api/imm/getpornbatchdetectjob.html
+func (client *Client) GetPornBatchDetectJob(request *GetPornBatchDetectJobRequest) (response *GetPornBatchDetectJobResponse, err error) {
+	response = CreateGetPornBatchDetectJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetPornBatchDetectJobWithChan invokes the imm.GetPornBatchDetectJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/getpornbatchdetectjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetPornBatchDetectJobWithChan(request *GetPornBatchDetectJobRequest) (<-chan *GetPornBatchDetectJobResponse, <-chan error) {
+	responseChan := make(chan *GetPornBatchDetectJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetPornBatchDetectJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetPornBatchDetectJobWithCallback invokes the imm.GetPornBatchDetectJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/getpornbatchdetectjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetPornBatchDetectJobWithCallback(request *GetPornBatchDetectJobRequest, callback func(response *GetPornBatchDetectJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetPornBatchDetectJobResponse
+		var err error
+		defer close(result)
+		response, err = client.GetPornBatchDetectJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetPornBatchDetectJobRequest is the request struct for api GetPornBatchDetectJob
+type GetPornBatchDetectJobRequest struct {
+	*requests.RpcRequest
+	JobId   string `position:"Query" name:"JobId"`
+	Project string `position:"Query" name:"Project"`
+}
+
+// GetPornBatchDetectJobResponse is the response struct for api GetPornBatchDetectJob
+type GetPornBatchDetectJobResponse struct {
+	*responses.BaseResponse
+	RequestId       string `json:"RequestId" xml:"RequestId"`
+	JobId           string `json:"JobId" xml:"JobId"`
+	SrcUri          string `json:"SrcUri" xml:"SrcUri"`
+	TgtUri          string `json:"TgtUri" xml:"TgtUri"`
+	NotifyTopicName string `json:"NotifyTopicName" xml:"NotifyTopicName"`
+	NotifyEndpoint  string `json:"NotifyEndpoint" xml:"NotifyEndpoint"`
+	ExternalID      string `json:"ExternalID" xml:"ExternalID"`
+	Status          string `json:"Status" xml:"Status"`
+	CreateTime      string `json:"CreateTime" xml:"CreateTime"`
+	FinishTime      string `json:"FinishTime" xml:"FinishTime"`
+	Percent         int    `json:"Percent" xml:"Percent"`
+}
+
+// CreateGetPornBatchDetectJobRequest creates a request to invoke GetPornBatchDetectJob API
+func CreateGetPornBatchDetectJobRequest() (request *GetPornBatchDetectJobRequest) {
+	request = &GetPornBatchDetectJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetPornBatchDetectJob", "imm", "openAPI")
+	return
+}
+
+// CreateGetPornBatchDetectJobResponse creates a response to parse from GetPornBatchDetectJob response
+func CreateGetPornBatchDetectJobResponse() (response *GetPornBatchDetectJobResponse) {
+	response = &GetPornBatchDetectJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/imm/get_project.go

@@ -0,0 +1,112 @@
+package imm
+
+//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"
+)
+
+// GetProject invokes the imm.GetProject API synchronously
+// api document: https://help.aliyun.com/api/imm/getproject.html
+func (client *Client) GetProject(request *GetProjectRequest) (response *GetProjectResponse, err error) {
+	response = CreateGetProjectResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetProjectWithChan invokes the imm.GetProject API asynchronously
+// api document: https://help.aliyun.com/api/imm/getproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetProjectWithChan(request *GetProjectRequest) (<-chan *GetProjectResponse, <-chan error) {
+	responseChan := make(chan *GetProjectResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetProject(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetProjectWithCallback invokes the imm.GetProject API asynchronously
+// api document: https://help.aliyun.com/api/imm/getproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetProjectWithCallback(request *GetProjectRequest, callback func(response *GetProjectResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetProjectResponse
+		var err error
+		defer close(result)
+		response, err = client.GetProject(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetProjectRequest is the request struct for api GetProject
+type GetProjectRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+}
+
+// GetProjectResponse is the response struct for api GetProject
+type GetProjectResponse struct {
+	*responses.BaseResponse
+	RequestId   string         `json:"RequestId" xml:"RequestId"`
+	Project     string         `json:"Project" xml:"Project"`
+	ServiceRole string         `json:"ServiceRole" xml:"ServiceRole"`
+	Endpoint    string         `json:"Endpoint" xml:"Endpoint"`
+	CreateTime  string         `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime  string         `json:"ModifyTime" xml:"ModifyTime"`
+	Type        string         `json:"Type" xml:"Type"`
+	CU          int            `json:"CU" xml:"CU"`
+	Indexers    []IndexersItem `json:"Indexers" xml:"Indexers"`
+	Engines     []EnginesItem  `json:"Engines" xml:"Engines"`
+}
+
+// CreateGetProjectRequest creates a request to invoke GetProject API
+func CreateGetProjectRequest() (request *GetProjectRequest) {
+	request = &GetProjectRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetProject", "imm", "openAPI")
+	return
+}
+
+// CreateGetProjectResponse creates a response to parse from GetProject response
+func CreateGetProjectResponse() (response *GetProjectResponse) {
+	response = &GetProjectResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/imm/get_tag_job.go

@@ -0,0 +1,111 @@
+package imm
+
+//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"
+)
+
+// GetTagJob invokes the imm.GetTagJob API synchronously
+// api document: https://help.aliyun.com/api/imm/gettagjob.html
+func (client *Client) GetTagJob(request *GetTagJobRequest) (response *GetTagJobResponse, err error) {
+	response = CreateGetTagJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetTagJobWithChan invokes the imm.GetTagJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/gettagjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetTagJobWithChan(request *GetTagJobRequest) (<-chan *GetTagJobResponse, <-chan error) {
+	responseChan := make(chan *GetTagJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetTagJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetTagJobWithCallback invokes the imm.GetTagJob API asynchronously
+// api document: https://help.aliyun.com/api/imm/gettagjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetTagJobWithCallback(request *GetTagJobRequest, callback func(response *GetTagJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetTagJobResponse
+		var err error
+		defer close(result)
+		response, err = client.GetTagJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetTagJobRequest is the request struct for api GetTagJob
+type GetTagJobRequest struct {
+	*requests.RpcRequest
+	JobId   string `position:"Query" name:"JobId"`
+	Project string `position:"Query" name:"Project"`
+}
+
+// GetTagJobResponse is the response struct for api GetTagJob
+type GetTagJobResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	JobId      string `json:"JobId" xml:"JobId"`
+	SetId      string `json:"SetId" xml:"SetId"`
+	SrcUri     string `json:"SrcUri" xml:"SrcUri"`
+	Status     string `json:"Status" xml:"Status"`
+	Percent    int    `json:"Percent" xml:"Percent"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	FinishTime string `json:"FinishTime" xml:"FinishTime"`
+}
+
+// CreateGetTagJobRequest creates a request to invoke GetTagJob API
+func CreateGetTagJobRequest() (request *GetTagJobRequest) {
+	request = &GetTagJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetTagJob", "imm", "openAPI")
+	return
+}
+
+// CreateGetTagJobResponse creates a response to parse from GetTagJob response
+func CreateGetTagJobResponse() (response *GetTagJobResponse) {
+	response = &GetTagJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/imm/get_tag_set.go

@@ -0,0 +1,109 @@
+package imm
+
+//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"
+)
+
+// GetTagSet invokes the imm.GetTagSet API synchronously
+// api document: https://help.aliyun.com/api/imm/gettagset.html
+func (client *Client) GetTagSet(request *GetTagSetRequest) (response *GetTagSetResponse, err error) {
+	response = CreateGetTagSetResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetTagSetWithChan invokes the imm.GetTagSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/gettagset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetTagSetWithChan(request *GetTagSetRequest) (<-chan *GetTagSetResponse, <-chan error) {
+	responseChan := make(chan *GetTagSetResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetTagSet(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetTagSetWithCallback invokes the imm.GetTagSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/gettagset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetTagSetWithCallback(request *GetTagSetRequest, callback func(response *GetTagSetResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetTagSetResponse
+		var err error
+		defer close(result)
+		response, err = client.GetTagSet(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetTagSetRequest is the request struct for api GetTagSet
+type GetTagSetRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+}
+
+// GetTagSetResponse is the response struct for api GetTagSet
+type GetTagSetResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	SetId      string `json:"SetId" xml:"SetId"`
+	Status     string `json:"Status" xml:"Status"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime string `json:"ModifyTime" xml:"ModifyTime"`
+	Photos     int    `json:"Photos" xml:"Photos"`
+}
+
+// CreateGetTagSetRequest creates a request to invoke GetTagSet API
+func CreateGetTagSetRequest() (request *GetTagSetRequest) {
+	request = &GetTagSetRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetTagSet", "imm", "openAPI")
+	return
+}
+
+// CreateGetTagSetResponse creates a response to parse from GetTagSet response
+func CreateGetTagSetResponse() (response *GetTagSetResponse) {
+	response = &GetTagSetResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/imm/group_faces.go

@@ -0,0 +1,108 @@
+package imm
+
+//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"
+)
+
+// GroupFaces invokes the imm.GroupFaces API synchronously
+// api document: https://help.aliyun.com/api/imm/groupfaces.html
+func (client *Client) GroupFaces(request *GroupFacesRequest) (response *GroupFacesResponse, err error) {
+	response = CreateGroupFacesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GroupFacesWithChan invokes the imm.GroupFaces API asynchronously
+// api document: https://help.aliyun.com/api/imm/groupfaces.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GroupFacesWithChan(request *GroupFacesRequest) (<-chan *GroupFacesResponse, <-chan error) {
+	responseChan := make(chan *GroupFacesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GroupFaces(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GroupFacesWithCallback invokes the imm.GroupFaces API asynchronously
+// api document: https://help.aliyun.com/api/imm/groupfaces.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GroupFacesWithCallback(request *GroupFacesRequest, callback func(response *GroupFacesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GroupFacesResponse
+		var err error
+		defer close(result)
+		response, err = client.GroupFaces(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GroupFacesRequest is the request struct for api GroupFaces
+type GroupFacesRequest struct {
+	*requests.RpcRequest
+	Project   string `position:"Query" name:"Project"`
+	SetId     string `position:"Query" name:"SetId"`
+	Operation string `position:"Query" name:"Operation"`
+}
+
+// GroupFacesResponse is the response struct for api GroupFaces
+type GroupFacesResponse struct {
+	*responses.BaseResponse
+	RequestId string       `json:"RequestId" xml:"RequestId"`
+	SetId     string       `json:"SetId" xml:"SetId"`
+	HasMore   int          `json:"HasMore" xml:"HasMore"`
+	Groups    []GroupsItem `json:"Groups" xml:"Groups"`
+}
+
+// CreateGroupFacesRequest creates a request to invoke GroupFaces API
+func CreateGroupFacesRequest() (request *GroupFacesRequest) {
+	request = &GroupFacesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GroupFaces", "imm", "openAPI")
+	return
+}
+
+// CreateGroupFacesResponse creates a response to parse from GroupFaces response
+func CreateGroupFacesResponse() (response *GroupFacesResponse) {
+	response = &GroupFacesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/imm/index_face.go

@@ -0,0 +1,111 @@
+package imm
+
+//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"
+)
+
+// IndexFace invokes the imm.IndexFace API synchronously
+// api document: https://help.aliyun.com/api/imm/indexface.html
+func (client *Client) IndexFace(request *IndexFaceRequest) (response *IndexFaceResponse, err error) {
+	response = CreateIndexFaceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// IndexFaceWithChan invokes the imm.IndexFace API asynchronously
+// api document: https://help.aliyun.com/api/imm/indexface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) IndexFaceWithChan(request *IndexFaceRequest) (<-chan *IndexFaceResponse, <-chan error) {
+	responseChan := make(chan *IndexFaceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.IndexFace(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// IndexFaceWithCallback invokes the imm.IndexFace API asynchronously
+// api document: https://help.aliyun.com/api/imm/indexface.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) IndexFaceWithCallback(request *IndexFaceRequest, callback func(response *IndexFaceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *IndexFaceResponse
+		var err error
+		defer close(result)
+		response, err = client.IndexFace(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// IndexFaceRequest is the request struct for api IndexFace
+type IndexFaceRequest struct {
+	*requests.RpcRequest
+	Chain   string `position:"Query" name:"Chain"`
+	SrcUris string `position:"Query" name:"SrcUris"`
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+	Force   string `position:"Query" name:"Force"`
+}
+
+// IndexFaceResponse is the response struct for api IndexFace
+type IndexFaceResponse struct {
+	*responses.BaseResponse
+	RequestId      string               `json:"RequestId" xml:"RequestId"`
+	SetId          string               `json:"SetId" xml:"SetId"`
+	SrcUris        []string             `json:"SrcUris" xml:"SrcUris"`
+	SuccessDetails []SuccessDetailsItem `json:"SuccessDetails" xml:"SuccessDetails"`
+	FailDetails    []FailDetailsItem    `json:"FailDetails" xml:"FailDetails"`
+}
+
+// CreateIndexFaceRequest creates a request to invoke IndexFace API
+func CreateIndexFaceRequest() (request *IndexFaceRequest) {
+	request = &IndexFaceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "IndexFace", "imm", "openAPI")
+	return
+}
+
+// CreateIndexFaceResponse creates a response to parse from IndexFace response
+func CreateIndexFaceResponse() (response *IndexFaceResponse) {
+	response = &IndexFaceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/imm/index_tag.go

@@ -0,0 +1,110 @@
+package imm
+
+//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"
+)
+
+// IndexTag invokes the imm.IndexTag API synchronously
+// api document: https://help.aliyun.com/api/imm/indextag.html
+func (client *Client) IndexTag(request *IndexTagRequest) (response *IndexTagResponse, err error) {
+	response = CreateIndexTagResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// IndexTagWithChan invokes the imm.IndexTag API asynchronously
+// api document: https://help.aliyun.com/api/imm/indextag.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) IndexTagWithChan(request *IndexTagRequest) (<-chan *IndexTagResponse, <-chan error) {
+	responseChan := make(chan *IndexTagResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.IndexTag(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// IndexTagWithCallback invokes the imm.IndexTag API asynchronously
+// api document: https://help.aliyun.com/api/imm/indextag.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) IndexTagWithCallback(request *IndexTagRequest, callback func(response *IndexTagResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *IndexTagResponse
+		var err error
+		defer close(result)
+		response, err = client.IndexTag(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// IndexTagRequest is the request struct for api IndexTag
+type IndexTagRequest struct {
+	*requests.RpcRequest
+	SrcUris string `position:"Query" name:"SrcUris"`
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+	Force   string `position:"Query" name:"Force"`
+}
+
+// IndexTagResponse is the response struct for api IndexTag
+type IndexTagResponse struct {
+	*responses.BaseResponse
+	RequestId       string               `json:"RequestId" xml:"RequestId"`
+	SetId           string               `json:"SetId" xml:"SetId"`
+	SuccessIndexNum string               `json:"SuccessIndexNum" xml:"SuccessIndexNum"`
+	FailDetails     []FailDetailsItem    `json:"FailDetails" xml:"FailDetails"`
+	SuccessDetails  []SuccessDetailsItem `json:"SuccessDetails" xml:"SuccessDetails"`
+}
+
+// CreateIndexTagRequest creates a request to invoke IndexTag API
+func CreateIndexTagRequest() (request *IndexTagRequest) {
+	request = &IndexTagRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "IndexTag", "imm", "openAPI")
+	return
+}
+
+// CreateIndexTagResponse creates a response to parse from IndexTag response
+func CreateIndexTagResponse() (response *IndexTagResponse) {
+	response = &IndexTagResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/imm/list_face_group_photos.go

@@ -0,0 +1,109 @@
+package imm
+
+//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"
+)
+
+// ListFaceGroupPhotos invokes the imm.ListFaceGroupPhotos API synchronously
+// api document: https://help.aliyun.com/api/imm/listfacegroupphotos.html
+func (client *Client) ListFaceGroupPhotos(request *ListFaceGroupPhotosRequest) (response *ListFaceGroupPhotosResponse, err error) {
+	response = CreateListFaceGroupPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListFaceGroupPhotosWithChan invokes the imm.ListFaceGroupPhotos API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacegroupphotos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceGroupPhotosWithChan(request *ListFaceGroupPhotosRequest) (<-chan *ListFaceGroupPhotosResponse, <-chan error) {
+	responseChan := make(chan *ListFaceGroupPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListFaceGroupPhotos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListFaceGroupPhotosWithCallback invokes the imm.ListFaceGroupPhotos API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacegroupphotos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceGroupPhotosWithCallback(request *ListFaceGroupPhotosRequest, callback func(response *ListFaceGroupPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListFaceGroupPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.ListFaceGroupPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListFaceGroupPhotosRequest is the request struct for api ListFaceGroupPhotos
+type ListFaceGroupPhotosRequest struct {
+	*requests.RpcRequest
+	MaxKeys requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker  string           `position:"Query" name:"Marker"`
+	GroupId string           `position:"Query" name:"GroupId"`
+	Project string           `position:"Query" name:"Project"`
+	SetId   string           `position:"Query" name:"SetId"`
+}
+
+// ListFaceGroupPhotosResponse is the response struct for api ListFaceGroupPhotos
+type ListFaceGroupPhotosResponse struct {
+	*responses.BaseResponse
+	RequestId  string       `json:"RequestId" xml:"RequestId"`
+	NextMarker string       `json:"NextMarker" xml:"NextMarker"`
+	Photos     []PhotosItem `json:"Photos" xml:"Photos"`
+}
+
+// CreateListFaceGroupPhotosRequest creates a request to invoke ListFaceGroupPhotos API
+func CreateListFaceGroupPhotosRequest() (request *ListFaceGroupPhotosRequest) {
+	request = &ListFaceGroupPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListFaceGroupPhotos", "imm", "openAPI")
+	return
+}
+
+// CreateListFaceGroupPhotosResponse creates a response to parse from ListFaceGroupPhotos response
+func CreateListFaceGroupPhotosResponse() (response *ListFaceGroupPhotosResponse) {
+	response = &ListFaceGroupPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/imm/list_face_groups.go

@@ -0,0 +1,108 @@
+package imm
+
+//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"
+)
+
+// ListFaceGroups invokes the imm.ListFaceGroups API synchronously
+// api document: https://help.aliyun.com/api/imm/listfacegroups.html
+func (client *Client) ListFaceGroups(request *ListFaceGroupsRequest) (response *ListFaceGroupsResponse, err error) {
+	response = CreateListFaceGroupsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListFaceGroupsWithChan invokes the imm.ListFaceGroups API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacegroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceGroupsWithChan(request *ListFaceGroupsRequest) (<-chan *ListFaceGroupsResponse, <-chan error) {
+	responseChan := make(chan *ListFaceGroupsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListFaceGroups(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListFaceGroupsWithCallback invokes the imm.ListFaceGroups API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacegroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceGroupsWithCallback(request *ListFaceGroupsRequest, callback func(response *ListFaceGroupsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListFaceGroupsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListFaceGroups(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListFaceGroupsRequest is the request struct for api ListFaceGroups
+type ListFaceGroupsRequest struct {
+	*requests.RpcRequest
+	MaxKeys requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker  requests.Integer `position:"Query" name:"Marker"`
+	Project string           `position:"Query" name:"Project"`
+	SetId   string           `position:"Query" name:"SetId"`
+}
+
+// ListFaceGroupsResponse is the response struct for api ListFaceGroups
+type ListFaceGroupsResponse struct {
+	*responses.BaseResponse
+	RequestId  string                       `json:"RequestId" xml:"RequestId"`
+	NextMarker int                          `json:"NextMarker" xml:"NextMarker"`
+	Groups     []GroupsItemInListFaceGroups `json:"Groups" xml:"Groups"`
+}
+
+// CreateListFaceGroupsRequest creates a request to invoke ListFaceGroups API
+func CreateListFaceGroupsRequest() (request *ListFaceGroupsRequest) {
+	request = &ListFaceGroupsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListFaceGroups", "imm", "openAPI")
+	return
+}
+
+// CreateListFaceGroupsResponse creates a response to parse from ListFaceGroups response
+func CreateListFaceGroupsResponse() (response *ListFaceGroupsResponse) {
+	response = &ListFaceGroupsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/imm/list_face_jobs.go

@@ -0,0 +1,108 @@
+package imm
+
+//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"
+)
+
+// ListFaceJobs invokes the imm.ListFaceJobs API synchronously
+// api document: https://help.aliyun.com/api/imm/listfacejobs.html
+func (client *Client) ListFaceJobs(request *ListFaceJobsRequest) (response *ListFaceJobsResponse, err error) {
+	response = CreateListFaceJobsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListFaceJobsWithChan invokes the imm.ListFaceJobs API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacejobs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceJobsWithChan(request *ListFaceJobsRequest) (<-chan *ListFaceJobsResponse, <-chan error) {
+	responseChan := make(chan *ListFaceJobsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListFaceJobs(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListFaceJobsWithCallback invokes the imm.ListFaceJobs API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacejobs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceJobsWithCallback(request *ListFaceJobsRequest, callback func(response *ListFaceJobsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListFaceJobsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListFaceJobs(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListFaceJobsRequest is the request struct for api ListFaceJobs
+type ListFaceJobsRequest struct {
+	*requests.RpcRequest
+	Condition string           `position:"Query" name:"Condition"`
+	MaxKeys   requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker    string           `position:"Query" name:"Marker"`
+	Project   string           `position:"Query" name:"Project"`
+}
+
+// ListFaceJobsResponse is the response struct for api ListFaceJobs
+type ListFaceJobsResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	NextMarker string     `json:"NextMarker" xml:"NextMarker"`
+	Jobs       []JobsItem `json:"Jobs" xml:"Jobs"`
+}
+
+// CreateListFaceJobsRequest creates a request to invoke ListFaceJobs API
+func CreateListFaceJobsRequest() (request *ListFaceJobsRequest) {
+	request = &ListFaceJobsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListFaceJobs", "imm", "openAPI")
+	return
+}
+
+// CreateListFaceJobsResponse creates a response to parse from ListFaceJobs response
+func CreateListFaceJobsResponse() (response *ListFaceJobsResponse) {
+	response = &ListFaceJobsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/imm/list_face_search_group_images.go

@@ -0,0 +1,111 @@
+package imm
+
+//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"
+)
+
+// ListFaceSearchGroupImages invokes the imm.ListFaceSearchGroupImages API synchronously
+// api document: https://help.aliyun.com/api/imm/listfacesearchgroupimages.html
+func (client *Client) ListFaceSearchGroupImages(request *ListFaceSearchGroupImagesRequest) (response *ListFaceSearchGroupImagesResponse, err error) {
+	response = CreateListFaceSearchGroupImagesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListFaceSearchGroupImagesWithChan invokes the imm.ListFaceSearchGroupImages API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacesearchgroupimages.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceSearchGroupImagesWithChan(request *ListFaceSearchGroupImagesRequest) (<-chan *ListFaceSearchGroupImagesResponse, <-chan error) {
+	responseChan := make(chan *ListFaceSearchGroupImagesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListFaceSearchGroupImages(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListFaceSearchGroupImagesWithCallback invokes the imm.ListFaceSearchGroupImages API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacesearchgroupimages.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceSearchGroupImagesWithCallback(request *ListFaceSearchGroupImagesRequest, callback func(response *ListFaceSearchGroupImagesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListFaceSearchGroupImagesResponse
+		var err error
+		defer close(result)
+		response, err = client.ListFaceSearchGroupImages(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListFaceSearchGroupImagesRequest is the request struct for api ListFaceSearchGroupImages
+type ListFaceSearchGroupImagesRequest struct {
+	*requests.RpcRequest
+	MaxKeys   requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker    string           `position:"Query" name:"Marker"`
+	Project   string           `position:"Query" name:"Project"`
+	GroupName string           `position:"Query" name:"GroupName"`
+	User      string           `position:"Query" name:"User"`
+}
+
+// ListFaceSearchGroupImagesResponse is the response struct for api ListFaceSearchGroupImages
+type ListFaceSearchGroupImagesResponse struct {
+	*responses.BaseResponse
+	RequestId  string       `json:"RequestId" xml:"RequestId"`
+	NextMarker string       `json:"NextMarker" xml:"NextMarker"`
+	GroupName  string       `json:"GroupName" xml:"GroupName"`
+	GroupId    string       `json:"GroupId" xml:"GroupId"`
+	Images     []ImagesItem `json:"Images" xml:"Images"`
+}
+
+// CreateListFaceSearchGroupImagesRequest creates a request to invoke ListFaceSearchGroupImages API
+func CreateListFaceSearchGroupImagesRequest() (request *ListFaceSearchGroupImagesRequest) {
+	request = &ListFaceSearchGroupImagesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListFaceSearchGroupImages", "imm", "openAPI")
+	return
+}
+
+// CreateListFaceSearchGroupImagesResponse creates a response to parse from ListFaceSearchGroupImages response
+func CreateListFaceSearchGroupImagesResponse() (response *ListFaceSearchGroupImagesResponse) {
+	response = &ListFaceSearchGroupImagesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/imm/list_face_search_group_users.go

@@ -0,0 +1,110 @@
+package imm
+
+//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"
+)
+
+// ListFaceSearchGroupUsers invokes the imm.ListFaceSearchGroupUsers API synchronously
+// api document: https://help.aliyun.com/api/imm/listfacesearchgroupusers.html
+func (client *Client) ListFaceSearchGroupUsers(request *ListFaceSearchGroupUsersRequest) (response *ListFaceSearchGroupUsersResponse, err error) {
+	response = CreateListFaceSearchGroupUsersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListFaceSearchGroupUsersWithChan invokes the imm.ListFaceSearchGroupUsers API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacesearchgroupusers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceSearchGroupUsersWithChan(request *ListFaceSearchGroupUsersRequest) (<-chan *ListFaceSearchGroupUsersResponse, <-chan error) {
+	responseChan := make(chan *ListFaceSearchGroupUsersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListFaceSearchGroupUsers(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListFaceSearchGroupUsersWithCallback invokes the imm.ListFaceSearchGroupUsers API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacesearchgroupusers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceSearchGroupUsersWithCallback(request *ListFaceSearchGroupUsersRequest, callback func(response *ListFaceSearchGroupUsersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListFaceSearchGroupUsersResponse
+		var err error
+		defer close(result)
+		response, err = client.ListFaceSearchGroupUsers(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListFaceSearchGroupUsersRequest is the request struct for api ListFaceSearchGroupUsers
+type ListFaceSearchGroupUsersRequest struct {
+	*requests.RpcRequest
+	MaxKeys   requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker    string           `position:"Query" name:"Marker"`
+	Project   string           `position:"Query" name:"Project"`
+	GroupName string           `position:"Query" name:"GroupName"`
+}
+
+// ListFaceSearchGroupUsersResponse is the response struct for api ListFaceSearchGroupUsers
+type ListFaceSearchGroupUsersResponse struct {
+	*responses.BaseResponse
+	RequestId  string      `json:"RequestId" xml:"RequestId"`
+	NextMarker string      `json:"NextMarker" xml:"NextMarker"`
+	GroupName  string      `json:"GroupName" xml:"GroupName"`
+	GroupId    string      `json:"GroupId" xml:"GroupId"`
+	Users      []UsersItem `json:"Users" xml:"Users"`
+}
+
+// CreateListFaceSearchGroupUsersRequest creates a request to invoke ListFaceSearchGroupUsers API
+func CreateListFaceSearchGroupUsersRequest() (request *ListFaceSearchGroupUsersRequest) {
+	request = &ListFaceSearchGroupUsersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListFaceSearchGroupUsers", "imm", "openAPI")
+	return
+}
+
+// CreateListFaceSearchGroupUsersResponse creates a response to parse from ListFaceSearchGroupUsers response
+func CreateListFaceSearchGroupUsersResponse() (response *ListFaceSearchGroupUsersResponse) {
+	response = &ListFaceSearchGroupUsersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/imm/list_face_search_groups.go

@@ -0,0 +1,107 @@
+package imm
+
+//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"
+)
+
+// ListFaceSearchGroups invokes the imm.ListFaceSearchGroups API synchronously
+// api document: https://help.aliyun.com/api/imm/listfacesearchgroups.html
+func (client *Client) ListFaceSearchGroups(request *ListFaceSearchGroupsRequest) (response *ListFaceSearchGroupsResponse, err error) {
+	response = CreateListFaceSearchGroupsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListFaceSearchGroupsWithChan invokes the imm.ListFaceSearchGroups API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacesearchgroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceSearchGroupsWithChan(request *ListFaceSearchGroupsRequest) (<-chan *ListFaceSearchGroupsResponse, <-chan error) {
+	responseChan := make(chan *ListFaceSearchGroupsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListFaceSearchGroups(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListFaceSearchGroupsWithCallback invokes the imm.ListFaceSearchGroups API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacesearchgroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceSearchGroupsWithCallback(request *ListFaceSearchGroupsRequest, callback func(response *ListFaceSearchGroupsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListFaceSearchGroupsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListFaceSearchGroups(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListFaceSearchGroupsRequest is the request struct for api ListFaceSearchGroups
+type ListFaceSearchGroupsRequest struct {
+	*requests.RpcRequest
+	MaxKeys requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker  string           `position:"Query" name:"Marker"`
+	Project string           `position:"Query" name:"Project"`
+}
+
+// ListFaceSearchGroupsResponse is the response struct for api ListFaceSearchGroups
+type ListFaceSearchGroupsResponse struct {
+	*responses.BaseResponse
+	RequestId  string       `json:"RequestId" xml:"RequestId"`
+	NextMarker string       `json:"NextMarker" xml:"NextMarker"`
+	Groups     []GroupsItem `json:"Groups" xml:"Groups"`
+}
+
+// CreateListFaceSearchGroupsRequest creates a request to invoke ListFaceSearchGroups API
+func CreateListFaceSearchGroupsRequest() (request *ListFaceSearchGroupsRequest) {
+	request = &ListFaceSearchGroupsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListFaceSearchGroups", "imm", "openAPI")
+	return
+}
+
+// CreateListFaceSearchGroupsResponse creates a response to parse from ListFaceSearchGroups response
+func CreateListFaceSearchGroupsResponse() (response *ListFaceSearchGroupsResponse) {
+	response = &ListFaceSearchGroupsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/list_face_sets.go

@@ -0,0 +1,106 @@
+package imm
+
+//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"
+)
+
+// ListFaceSets invokes the imm.ListFaceSets API synchronously
+// api document: https://help.aliyun.com/api/imm/listfacesets.html
+func (client *Client) ListFaceSets(request *ListFaceSetsRequest) (response *ListFaceSetsResponse, err error) {
+	response = CreateListFaceSetsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListFaceSetsWithChan invokes the imm.ListFaceSets API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacesets.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceSetsWithChan(request *ListFaceSetsRequest) (<-chan *ListFaceSetsResponse, <-chan error) {
+	responseChan := make(chan *ListFaceSetsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListFaceSets(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListFaceSetsWithCallback invokes the imm.ListFaceSets API asynchronously
+// api document: https://help.aliyun.com/api/imm/listfacesets.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFaceSetsWithCallback(request *ListFaceSetsRequest, callback func(response *ListFaceSetsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListFaceSetsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListFaceSets(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListFaceSetsRequest is the request struct for api ListFaceSets
+type ListFaceSetsRequest struct {
+	*requests.RpcRequest
+	Marker  string `position:"Query" name:"Marker"`
+	Project string `position:"Query" name:"Project"`
+}
+
+// ListFaceSetsResponse is the response struct for api ListFaceSets
+type ListFaceSetsResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	NextMarker string     `json:"NextMarker" xml:"NextMarker"`
+	Sets       []SetsItem `json:"Sets" xml:"Sets"`
+}
+
+// CreateListFaceSetsRequest creates a request to invoke ListFaceSets API
+func CreateListFaceSetsRequest() (request *ListFaceSetsRequest) {
+	request = &ListFaceSetsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListFaceSets", "imm", "openAPI")
+	return
+}
+
+// CreateListFaceSetsResponse creates a response to parse from ListFaceSets response
+func CreateListFaceSetsResponse() (response *ListFaceSetsResponse) {
+	response = &ListFaceSetsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/imm/list_office_conversion_task.go

@@ -0,0 +1,107 @@
+package imm
+
+//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"
+)
+
+// ListOfficeConversionTask invokes the imm.ListOfficeConversionTask API synchronously
+// api document: https://help.aliyun.com/api/imm/listofficeconversiontask.html
+func (client *Client) ListOfficeConversionTask(request *ListOfficeConversionTaskRequest) (response *ListOfficeConversionTaskResponse, err error) {
+	response = CreateListOfficeConversionTaskResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListOfficeConversionTaskWithChan invokes the imm.ListOfficeConversionTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/listofficeconversiontask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListOfficeConversionTaskWithChan(request *ListOfficeConversionTaskRequest) (<-chan *ListOfficeConversionTaskResponse, <-chan error) {
+	responseChan := make(chan *ListOfficeConversionTaskResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListOfficeConversionTask(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListOfficeConversionTaskWithCallback invokes the imm.ListOfficeConversionTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/listofficeconversiontask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListOfficeConversionTaskWithCallback(request *ListOfficeConversionTaskRequest, callback func(response *ListOfficeConversionTaskResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListOfficeConversionTaskResponse
+		var err error
+		defer close(result)
+		response, err = client.ListOfficeConversionTask(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListOfficeConversionTaskRequest is the request struct for api ListOfficeConversionTask
+type ListOfficeConversionTaskRequest struct {
+	*requests.RpcRequest
+	MaxKeys requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker  string           `position:"Query" name:"Marker"`
+	Project string           `position:"Query" name:"Project"`
+}
+
+// ListOfficeConversionTaskResponse is the response struct for api ListOfficeConversionTask
+type ListOfficeConversionTaskResponse struct {
+	*responses.BaseResponse
+	RequestId  string      `json:"RequestId" xml:"RequestId"`
+	NextMarker string      `json:"NextMarker" xml:"NextMarker"`
+	Tasks      []TasksItem `json:"Tasks" xml:"Tasks"`
+}
+
+// CreateListOfficeConversionTaskRequest creates a request to invoke ListOfficeConversionTask API
+func CreateListOfficeConversionTaskRequest() (request *ListOfficeConversionTaskRequest) {
+	request = &ListOfficeConversionTaskRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListOfficeConversionTask", "imm", "openAPI")
+	return
+}
+
+// CreateListOfficeConversionTaskResponse creates a response to parse from ListOfficeConversionTask response
+func CreateListOfficeConversionTaskResponse() (response *ListOfficeConversionTaskResponse) {
+	response = &ListOfficeConversionTaskResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/imm/list_photo_process_tasks.go

@@ -0,0 +1,107 @@
+package imm
+
+//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"
+)
+
+// ListPhotoProcessTasks invokes the imm.ListPhotoProcessTasks API synchronously
+// api document: https://help.aliyun.com/api/imm/listphotoprocesstasks.html
+func (client *Client) ListPhotoProcessTasks(request *ListPhotoProcessTasksRequest) (response *ListPhotoProcessTasksResponse, err error) {
+	response = CreateListPhotoProcessTasksResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListPhotoProcessTasksWithChan invokes the imm.ListPhotoProcessTasks API asynchronously
+// api document: https://help.aliyun.com/api/imm/listphotoprocesstasks.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListPhotoProcessTasksWithChan(request *ListPhotoProcessTasksRequest) (<-chan *ListPhotoProcessTasksResponse, <-chan error) {
+	responseChan := make(chan *ListPhotoProcessTasksResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListPhotoProcessTasks(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListPhotoProcessTasksWithCallback invokes the imm.ListPhotoProcessTasks API asynchronously
+// api document: https://help.aliyun.com/api/imm/listphotoprocesstasks.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListPhotoProcessTasksWithCallback(request *ListPhotoProcessTasksRequest, callback func(response *ListPhotoProcessTasksResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListPhotoProcessTasksResponse
+		var err error
+		defer close(result)
+		response, err = client.ListPhotoProcessTasks(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListPhotoProcessTasksRequest is the request struct for api ListPhotoProcessTasks
+type ListPhotoProcessTasksRequest struct {
+	*requests.RpcRequest
+	MaxKeys requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker  string           `position:"Query" name:"Marker"`
+	Project string           `position:"Query" name:"Project"`
+}
+
+// ListPhotoProcessTasksResponse is the response struct for api ListPhotoProcessTasks
+type ListPhotoProcessTasksResponse struct {
+	*responses.BaseResponse
+	RequestId  string      `json:"RequestId" xml:"RequestId"`
+	NextMarker string      `json:"NextMarker" xml:"NextMarker"`
+	Tasks      []TasksItem `json:"Tasks" xml:"Tasks"`
+}
+
+// CreateListPhotoProcessTasksRequest creates a request to invoke ListPhotoProcessTasks API
+func CreateListPhotoProcessTasksRequest() (request *ListPhotoProcessTasksRequest) {
+	request = &ListPhotoProcessTasksRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListPhotoProcessTasks", "imm", "openAPI")
+	return
+}
+
+// CreateListPhotoProcessTasksResponse creates a response to parse from ListPhotoProcessTasks response
+func CreateListPhotoProcessTasksResponse() (response *ListPhotoProcessTasksResponse) {
+	response = &ListPhotoProcessTasksResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/imm/list_porn_batch_detect_jobs.go

@@ -0,0 +1,107 @@
+package imm
+
+//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"
+)
+
+// ListPornBatchDetectJobs invokes the imm.ListPornBatchDetectJobs API synchronously
+// api document: https://help.aliyun.com/api/imm/listpornbatchdetectjobs.html
+func (client *Client) ListPornBatchDetectJobs(request *ListPornBatchDetectJobsRequest) (response *ListPornBatchDetectJobsResponse, err error) {
+	response = CreateListPornBatchDetectJobsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListPornBatchDetectJobsWithChan invokes the imm.ListPornBatchDetectJobs API asynchronously
+// api document: https://help.aliyun.com/api/imm/listpornbatchdetectjobs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListPornBatchDetectJobsWithChan(request *ListPornBatchDetectJobsRequest) (<-chan *ListPornBatchDetectJobsResponse, <-chan error) {
+	responseChan := make(chan *ListPornBatchDetectJobsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListPornBatchDetectJobs(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListPornBatchDetectJobsWithCallback invokes the imm.ListPornBatchDetectJobs API asynchronously
+// api document: https://help.aliyun.com/api/imm/listpornbatchdetectjobs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListPornBatchDetectJobsWithCallback(request *ListPornBatchDetectJobsRequest, callback func(response *ListPornBatchDetectJobsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListPornBatchDetectJobsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListPornBatchDetectJobs(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListPornBatchDetectJobsRequest is the request struct for api ListPornBatchDetectJobs
+type ListPornBatchDetectJobsRequest struct {
+	*requests.RpcRequest
+	MaxKeys requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker  string           `position:"Query" name:"Marker"`
+	Project string           `position:"Query" name:"Project"`
+}
+
+// ListPornBatchDetectJobsResponse is the response struct for api ListPornBatchDetectJobs
+type ListPornBatchDetectJobsResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	NextMarker string     `json:"NextMarker" xml:"NextMarker"`
+	Jobs       []JobsItem `json:"Jobs" xml:"Jobs"`
+}
+
+// CreateListPornBatchDetectJobsRequest creates a request to invoke ListPornBatchDetectJobs API
+func CreateListPornBatchDetectJobsRequest() (request *ListPornBatchDetectJobsRequest) {
+	request = &ListPornBatchDetectJobsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListPornBatchDetectJobs", "imm", "openAPI")
+	return
+}
+
+// CreateListPornBatchDetectJobsResponse creates a response to parse from ListPornBatchDetectJobs response
+func CreateListPornBatchDetectJobsResponse() (response *ListPornBatchDetectJobsResponse) {
+	response = &ListPornBatchDetectJobsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/list_projects.go

@@ -0,0 +1,106 @@
+package imm
+
+//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"
+)
+
+// ListProjects invokes the imm.ListProjects API synchronously
+// api document: https://help.aliyun.com/api/imm/listprojects.html
+func (client *Client) ListProjects(request *ListProjectsRequest) (response *ListProjectsResponse, err error) {
+	response = CreateListProjectsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListProjectsWithChan invokes the imm.ListProjects API asynchronously
+// api document: https://help.aliyun.com/api/imm/listprojects.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListProjectsWithChan(request *ListProjectsRequest) (<-chan *ListProjectsResponse, <-chan error) {
+	responseChan := make(chan *ListProjectsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListProjects(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListProjectsWithCallback invokes the imm.ListProjects API asynchronously
+// api document: https://help.aliyun.com/api/imm/listprojects.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListProjectsWithCallback(request *ListProjectsRequest, callback func(response *ListProjectsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListProjectsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListProjects(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListProjectsRequest is the request struct for api ListProjects
+type ListProjectsRequest struct {
+	*requests.RpcRequest
+	MaxKeys requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker  string           `position:"Query" name:"Marker"`
+}
+
+// ListProjectsResponse is the response struct for api ListProjects
+type ListProjectsResponse struct {
+	*responses.BaseResponse
+	RequestId  string         `json:"RequestId" xml:"RequestId"`
+	NextMarker string         `json:"NextMarker" xml:"NextMarker"`
+	Projects   []ProjectsItem `json:"Projects" xml:"Projects"`
+}
+
+// CreateListProjectsRequest creates a request to invoke ListProjects API
+func CreateListProjectsRequest() (request *ListProjectsRequest) {
+	request = &ListProjectsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListProjects", "imm", "openAPI")
+	return
+}
+
+// CreateListProjectsResponse creates a response to parse from ListProjects response
+func CreateListProjectsResponse() (response *ListProjectsResponse) {
+	response = &ListProjectsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/imm/list_tag_jobs.go

@@ -0,0 +1,108 @@
+package imm
+
+//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"
+)
+
+// ListTagJobs invokes the imm.ListTagJobs API synchronously
+// api document: https://help.aliyun.com/api/imm/listtagjobs.html
+func (client *Client) ListTagJobs(request *ListTagJobsRequest) (response *ListTagJobsResponse, err error) {
+	response = CreateListTagJobsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListTagJobsWithChan invokes the imm.ListTagJobs API asynchronously
+// api document: https://help.aliyun.com/api/imm/listtagjobs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListTagJobsWithChan(request *ListTagJobsRequest) (<-chan *ListTagJobsResponse, <-chan error) {
+	responseChan := make(chan *ListTagJobsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListTagJobs(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListTagJobsWithCallback invokes the imm.ListTagJobs API asynchronously
+// api document: https://help.aliyun.com/api/imm/listtagjobs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListTagJobsWithCallback(request *ListTagJobsRequest, callback func(response *ListTagJobsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListTagJobsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListTagJobs(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListTagJobsRequest is the request struct for api ListTagJobs
+type ListTagJobsRequest struct {
+	*requests.RpcRequest
+	Condition string           `position:"Query" name:"Condition"`
+	MaxKeys   requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker    string           `position:"Query" name:"Marker"`
+	Project   string           `position:"Query" name:"Project"`
+}
+
+// ListTagJobsResponse is the response struct for api ListTagJobs
+type ListTagJobsResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	NextMarker string     `json:"NextMarker" xml:"NextMarker"`
+	Jobs       []JobsItem `json:"Jobs" xml:"Jobs"`
+}
+
+// CreateListTagJobsRequest creates a request to invoke ListTagJobs API
+func CreateListTagJobsRequest() (request *ListTagJobsRequest) {
+	request = &ListTagJobsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListTagJobs", "imm", "openAPI")
+	return
+}
+
+// CreateListTagJobsResponse creates a response to parse from ListTagJobs response
+func CreateListTagJobsResponse() (response *ListTagJobsResponse) {
+	response = &ListTagJobsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/imm/list_tag_names.go

@@ -0,0 +1,105 @@
+package imm
+
+//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"
+)
+
+// ListTagNames invokes the imm.ListTagNames API synchronously
+// api document: https://help.aliyun.com/api/imm/listtagnames.html
+func (client *Client) ListTagNames(request *ListTagNamesRequest) (response *ListTagNamesResponse, err error) {
+	response = CreateListTagNamesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListTagNamesWithChan invokes the imm.ListTagNames API asynchronously
+// api document: https://help.aliyun.com/api/imm/listtagnames.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListTagNamesWithChan(request *ListTagNamesRequest) (<-chan *ListTagNamesResponse, <-chan error) {
+	responseChan := make(chan *ListTagNamesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListTagNames(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListTagNamesWithCallback invokes the imm.ListTagNames API asynchronously
+// api document: https://help.aliyun.com/api/imm/listtagnames.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListTagNamesWithCallback(request *ListTagNamesRequest, callback func(response *ListTagNamesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListTagNamesResponse
+		var err error
+		defer close(result)
+		response, err = client.ListTagNames(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListTagNamesRequest is the request struct for api ListTagNames
+type ListTagNamesRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+}
+
+// ListTagNamesResponse is the response struct for api ListTagNames
+type ListTagNamesResponse struct {
+	*responses.BaseResponse
+	RequestId string     `json:"RequestId" xml:"RequestId"`
+	Tags      []TagsItem `json:"Tags" xml:"Tags"`
+}
+
+// CreateListTagNamesRequest creates a request to invoke ListTagNames API
+func CreateListTagNamesRequest() (request *ListTagNamesRequest) {
+	request = &ListTagNamesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListTagNames", "imm", "openAPI")
+	return
+}
+
+// CreateListTagNamesResponse creates a response to parse from ListTagNames response
+func CreateListTagNamesResponse() (response *ListTagNamesResponse) {
+	response = &ListTagNamesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/imm/list_tag_photos.go

@@ -0,0 +1,109 @@
+package imm
+
+//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"
+)
+
+// ListTagPhotos invokes the imm.ListTagPhotos API synchronously
+// api document: https://help.aliyun.com/api/imm/listtagphotos.html
+func (client *Client) ListTagPhotos(request *ListTagPhotosRequest) (response *ListTagPhotosResponse, err error) {
+	response = CreateListTagPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListTagPhotosWithChan invokes the imm.ListTagPhotos API asynchronously
+// api document: https://help.aliyun.com/api/imm/listtagphotos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListTagPhotosWithChan(request *ListTagPhotosRequest) (<-chan *ListTagPhotosResponse, <-chan error) {
+	responseChan := make(chan *ListTagPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListTagPhotos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListTagPhotosWithCallback invokes the imm.ListTagPhotos API asynchronously
+// api document: https://help.aliyun.com/api/imm/listtagphotos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListTagPhotosWithCallback(request *ListTagPhotosRequest, callback func(response *ListTagPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListTagPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.ListTagPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListTagPhotosRequest is the request struct for api ListTagPhotos
+type ListTagPhotosRequest struct {
+	*requests.RpcRequest
+	TagName string `position:"Query" name:"TagName"`
+	MaxKeys string `position:"Query" name:"MaxKeys"`
+	Marker  string `position:"Query" name:"Marker"`
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+}
+
+// ListTagPhotosResponse is the response struct for api ListTagPhotos
+type ListTagPhotosResponse struct {
+	*responses.BaseResponse
+	RequestId  string       `json:"RequestId" xml:"RequestId"`
+	NextMarker string       `json:"NextMarker" xml:"NextMarker"`
+	Photos     []PhotosItem `json:"Photos" xml:"Photos"`
+}
+
+// CreateListTagPhotosRequest creates a request to invoke ListTagPhotos API
+func CreateListTagPhotosRequest() (request *ListTagPhotosRequest) {
+	request = &ListTagPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListTagPhotos", "imm", "openAPI")
+	return
+}
+
+// CreateListTagPhotosResponse creates a response to parse from ListTagPhotos response
+func CreateListTagPhotosResponse() (response *ListTagPhotosResponse) {
+	response = &ListTagPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/imm/list_tag_sets.go

@@ -0,0 +1,107 @@
+package imm
+
+//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"
+)
+
+// ListTagSets invokes the imm.ListTagSets API synchronously
+// api document: https://help.aliyun.com/api/imm/listtagsets.html
+func (client *Client) ListTagSets(request *ListTagSetsRequest) (response *ListTagSetsResponse, err error) {
+	response = CreateListTagSetsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListTagSetsWithChan invokes the imm.ListTagSets API asynchronously
+// api document: https://help.aliyun.com/api/imm/listtagsets.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListTagSetsWithChan(request *ListTagSetsRequest) (<-chan *ListTagSetsResponse, <-chan error) {
+	responseChan := make(chan *ListTagSetsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListTagSets(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListTagSetsWithCallback invokes the imm.ListTagSets API asynchronously
+// api document: https://help.aliyun.com/api/imm/listtagsets.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListTagSetsWithCallback(request *ListTagSetsRequest, callback func(response *ListTagSetsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListTagSetsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListTagSets(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListTagSetsRequest is the request struct for api ListTagSets
+type ListTagSetsRequest struct {
+	*requests.RpcRequest
+	MaxKeys requests.Integer `position:"Query" name:"MaxKeys"`
+	Marker  string           `position:"Query" name:"Marker"`
+	Project string           `position:"Query" name:"Project"`
+}
+
+// ListTagSetsResponse is the response struct for api ListTagSets
+type ListTagSetsResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	NextMarker string     `json:"NextMarker" xml:"NextMarker"`
+	Sets       []SetsItem `json:"Sets" xml:"Sets"`
+}
+
+// CreateListTagSetsRequest creates a request to invoke ListTagSets API
+func CreateListTagSetsRequest() (request *ListTagSetsRequest) {
+	request = &ListTagSetsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListTagSets", "imm", "openAPI")
+	return
+}
+
+// CreateListTagSetsResponse creates a response to parse from ListTagSets response
+func CreateListTagSetsResponse() (response *ListTagSetsResponse) {
+	response = &ListTagSetsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/imm/photo_process.go

@@ -0,0 +1,114 @@
+package imm
+
+//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"
+)
+
+// PhotoProcess invokes the imm.PhotoProcess API synchronously
+// api document: https://help.aliyun.com/api/imm/photoprocess.html
+func (client *Client) PhotoProcess(request *PhotoProcessRequest) (response *PhotoProcessResponse, err error) {
+	response = CreatePhotoProcessResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// PhotoProcessWithChan invokes the imm.PhotoProcess API asynchronously
+// api document: https://help.aliyun.com/api/imm/photoprocess.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) PhotoProcessWithChan(request *PhotoProcessRequest) (<-chan *PhotoProcessResponse, <-chan error) {
+	responseChan := make(chan *PhotoProcessResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.PhotoProcess(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// PhotoProcessWithCallback invokes the imm.PhotoProcess API asynchronously
+// api document: https://help.aliyun.com/api/imm/photoprocess.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) PhotoProcessWithCallback(request *PhotoProcessRequest, callback func(response *PhotoProcessResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *PhotoProcessResponse
+		var err error
+		defer close(result)
+		response, err = client.PhotoProcess(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// PhotoProcessRequest is the request struct for api PhotoProcess
+type PhotoProcessRequest struct {
+	*requests.RpcRequest
+	NotifyTopicName string `position:"Query" name:"NotifyTopicName"`
+	NotifyEndpoint  string `position:"Query" name:"NotifyEndpoint"`
+	Project         string `position:"Query" name:"Project"`
+	ExternalID      string `position:"Query" name:"ExternalID"`
+	SrcUri          string `position:"Query" name:"SrcUri"`
+	Style           string `position:"Query" name:"Style"`
+	TgtUri          string `position:"Query" name:"TgtUri"`
+}
+
+// PhotoProcessResponse is the response struct for api PhotoProcess
+type PhotoProcessResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	TaskId     string `json:"TaskId" xml:"TaskId"`
+	TgtLoc     string `json:"TgtLoc" xml:"TgtLoc"`
+	Status     string `json:"Status" xml:"Status"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	Percent    int    `json:"Percent" xml:"Percent"`
+}
+
+// CreatePhotoProcessRequest creates a request to invoke PhotoProcess API
+func CreatePhotoProcessRequest() (request *PhotoProcessRequest) {
+	request = &PhotoProcessRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "PhotoProcess", "imm", "openAPI")
+	return
+}
+
+// CreatePhotoProcessResponse creates a response to parse from PhotoProcess response
+func CreatePhotoProcessResponse() (response *PhotoProcessResponse) {
+	response = &PhotoProcessResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/imm/put_project.go

@@ -0,0 +1,116 @@
+package imm
+
+//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"
+)
+
+// PutProject invokes the imm.PutProject API synchronously
+// api document: https://help.aliyun.com/api/imm/putproject.html
+func (client *Client) PutProject(request *PutProjectRequest) (response *PutProjectResponse, err error) {
+	response = CreatePutProjectResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// PutProjectWithChan invokes the imm.PutProject API asynchronously
+// api document: https://help.aliyun.com/api/imm/putproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) PutProjectWithChan(request *PutProjectRequest) (<-chan *PutProjectResponse, <-chan error) {
+	responseChan := make(chan *PutProjectResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.PutProject(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// PutProjectWithCallback invokes the imm.PutProject API asynchronously
+// api document: https://help.aliyun.com/api/imm/putproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) PutProjectWithCallback(request *PutProjectRequest, callback func(response *PutProjectResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *PutProjectResponse
+		var err error
+		defer close(result)
+		response, err = client.PutProject(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// PutProjectRequest is the request struct for api PutProject
+type PutProjectRequest struct {
+	*requests.RpcRequest
+	Indexers    string           `position:"Query" name:"Indexers"`
+	CU          requests.Integer `position:"Query" name:"CU"`
+	Engines     string           `position:"Query" name:"Engines"`
+	ServiceRole string           `position:"Query" name:"ServiceRole"`
+	Project     string           `position:"Query" name:"Project"`
+	Type        string           `position:"Query" name:"Type"`
+}
+
+// PutProjectResponse is the response struct for api PutProject
+type PutProjectResponse struct {
+	*responses.BaseResponse
+	RequestId   string         `json:"RequestId" xml:"RequestId"`
+	Project     string         `json:"Project" xml:"Project"`
+	CreateTime  string         `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime  string         `json:"ModifyTime" xml:"ModifyTime"`
+	ServiceRole string         `json:"ServiceRole" xml:"ServiceRole"`
+	CU          int            `json:"CU" xml:"CU"`
+	Type        string         `json:"Type" xml:"Type"`
+	Engines     []EnginesItem  `json:"Engines" xml:"Engines"`
+	Indexers    []IndexersItem `json:"Indexers" xml:"Indexers"`
+}
+
+// CreatePutProjectRequest creates a request to invoke PutProject API
+func CreatePutProjectRequest() (request *PutProjectRequest) {
+	request = &PutProjectRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "PutProject", "imm", "openAPI")
+	return
+}
+
+// CreatePutProjectResponse creates a response to parse from PutProject response
+func CreatePutProjectResponse() (response *PutProjectResponse) {
+	response = &PutProjectResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 21 - 0
services/imm/struct_age.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// Age is a nested struct in imm response
+type Age struct {
+	Value string `json:"Value" xml:"Value"`
+}

+ 21 - 0
services/imm/struct_age_in_detect_face.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// AgeInDetectFace is a nested struct in imm response
+type AgeInDetectFace struct {
+	Value int `json:"Value" xml:"Value"`
+}

+ 21 - 0
services/imm/struct_age_in_index_face.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// AgeInIndexFace is a nested struct in imm response
+type AgeInIndexFace struct {
+	Value int `json:"Value" xml:"Value"`
+}

+ 21 - 0
services/imm/struct_axis_in_face_compare.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// AxisInFaceCompare is a nested struct in imm response
+type AxisInFaceCompare struct {
+	Axis []string `json:"Axis" xml:"Axis"`
+}

+ 21 - 0
services/imm/struct_axis_in_face_regist.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// AxisInFaceRegist is a nested struct in imm response
+type AxisInFaceRegist struct {
+	Axis []string `json:"Axis" xml:"Axis"`
+}

+ 21 - 0
services/imm/struct_axis_in_face_search.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// AxisInFaceSearch is a nested struct in imm response
+type AxisInFaceSearch struct {
+	Axis []string `json:"Axis" xml:"Axis"`
+}

+ 21 - 0
services/imm/struct_axis_in_get_face_search_image.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// AxisInGetFaceSearchImage is a nested struct in imm response
+type AxisInGetFaceSearchImage struct {
+	Axis []string `json:"Axis" xml:"Axis"`
+}

+ 21 - 0
services/imm/struct_axis_in_list_face_search_group_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// AxisInListFaceSearchGroupImages is a nested struct in imm response
+type AxisInListFaceSearchGroupImages struct {
+	Axis []string `json:"Axis" xml:"Axis"`
+}

+ 21 - 0
services/imm/struct_blur.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// Blur is a nested struct in imm response
+type Blur struct {
+	Blurness Blurness `json:"Blurness" xml:"Blurness"`
+}

+ 23 - 0
services/imm/struct_blurness.go

@@ -0,0 +1,23 @@
+package imm
+
+//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.
+
+// Blurness is a nested struct in imm response
+type Blurness struct {
+	Balue     float64 `json:"Balue" xml:"Balue"`
+	Value     float64 `json:"Value" xml:"Value"`
+	Threshold float64 `json:"Threshold" xml:"Threshold"`
+}

+ 21 - 0
services/imm/struct_compare_result.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// CompareResult is a nested struct in imm response
+type CompareResult struct {
+	CompareResultItem []CompareResultItem `json:"CompareResultItem" xml:"CompareResultItem"`
+}

+ 23 - 0
services/imm/struct_compare_result_item.go

@@ -0,0 +1,23 @@
+package imm
+
+//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.
+
+// CompareResultItem is a nested struct in imm response
+type CompareResultItem struct {
+	Similarity float64 `json:"Similarity" xml:"Similarity"`
+	FaceA      FaceA   `json:"FaceA" xml:"FaceA"`
+	FaceB      FaceB   `json:"FaceB" xml:"FaceB"`
+}

+ 21 - 0
services/imm/struct_engines_in_get_project.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// EnginesInGetProject is a nested struct in imm response
+type EnginesInGetProject struct {
+	EnginesItem []EnginesItem `json:"EnginesItem" xml:"EnginesItem"`
+}

+ 21 - 0
services/imm/struct_engines_in_list_projects.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// EnginesInListProjects is a nested struct in imm response
+type EnginesInListProjects struct {
+	EnginesItem []EnginesItem `json:"EnginesItem" xml:"EnginesItem"`
+}

+ 21 - 0
services/imm/struct_engines_in_put_project.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// EnginesInPutProject is a nested struct in imm response
+type EnginesInPutProject struct {
+	EnginesItem []EnginesItem `json:"EnginesItem" xml:"EnginesItem"`
+}

+ 22 - 0
services/imm/struct_engines_item.go

@@ -0,0 +1,22 @@
+package imm
+
+//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.
+
+// EnginesItem is a nested struct in imm response
+type EnginesItem struct {
+	Name   string `json:"Name" xml:"Name"`
+	JobTtl int    `json:"JobTtl" xml:"JobTtl"`
+}

+ 22 - 0
services/imm/struct_eye_status.go

@@ -0,0 +1,22 @@
+package imm
+
+//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.
+
+// EyeStatus is a nested struct in imm response
+type EyeStatus struct {
+	LeftEyeStatus  LeftEyeStatus  `json:"LeftEyeStatus" xml:"LeftEyeStatus"`
+	RightEyeStatus RightEyeStatus `json:"RightEyeStatus" xml:"RightEyeStatus"`
+}

+ 22 - 0
services/imm/struct_face_a.go

@@ -0,0 +1,22 @@
+package imm
+
+//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.
+
+// FaceA is a nested struct in imm response
+type FaceA struct {
+	ImageUrl string   `json:"ImageUrl" xml:"ImageUrl"`
+	Axis     []string `json:"Axis" xml:"Axis"`
+}

+ 26 - 0
services/imm/struct_face_attribute.go

@@ -0,0 +1,26 @@
+package imm
+
+//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.
+
+// FaceAttribute is a nested struct in imm response
+type FaceAttribute struct {
+	Blur        Blur           `json:"Blur" xml:"Blur"`
+	Gender      Gender         `json:"Gender" xml:"Gender"`
+	Age         AgeInIndexFace `json:"Age" xml:"Age"`
+	FaceQuality FaceQuality    `json:"FaceQuality" xml:"FaceQuality"`
+	EyeStatus   EyeStatus      `json:"EyeStatus" xml:"EyeStatus"`
+	HeadPose    HeadPose       `json:"HeadPose" xml:"HeadPose"`
+}

+ 22 - 0
services/imm/struct_face_b.go

@@ -0,0 +1,22 @@
+package imm
+
+//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.
+
+// FaceB is a nested struct in imm response
+type FaceB struct {
+	ImageUrl string   `json:"ImageUrl" xml:"ImageUrl"`
+	Axis     []string `json:"Axis" xml:"Axis"`
+}

+ 21 - 0
services/imm/struct_face_details.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// FaceDetails is a nested struct in imm response
+type FaceDetails struct {
+	FaceDetailsItem []FaceDetailsItem `json:"FaceDetailsItem" xml:"FaceDetailsItem"`
+}

+ 27 - 0
services/imm/struct_face_details_item.go

@@ -0,0 +1,27 @@
+package imm
+
+//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.
+
+// FaceDetailsItem is a nested struct in imm response
+type FaceDetailsItem struct {
+	FaceId        string        `json:"FaceId" xml:"FaceId"`
+	SrcUri        string        `json:"SrcUri" xml:"SrcUri"`
+	PhotoId       string        `json:"PhotoId" xml:"PhotoId"`
+	GroupId       string        `json:"GroupId" xml:"GroupId"`
+	UnGroupReason string        `json:"UnGroupReason" xml:"UnGroupReason"`
+	FaceRectangle FaceRectangle `json:"FaceRectangle" xml:"FaceRectangle"`
+	FaceAttribute FaceAttribute `json:"FaceAttribute" xml:"FaceAttribute"`
+}

+ 22 - 0
services/imm/struct_face_quality.go

@@ -0,0 +1,22 @@
+package imm
+
+//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.
+
+// FaceQuality is a nested struct in imm response
+type FaceQuality struct {
+	Value     float64 `json:"Value" xml:"Value"`
+	Threshold float64 `json:"Threshold" xml:"Threshold"`
+}

+ 24 - 0
services/imm/struct_face_rectangle.go

@@ -0,0 +1,24 @@
+package imm
+
+//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.
+
+// FaceRectangle is a nested struct in imm response
+type FaceRectangle struct {
+	Width  int `json:"Width" xml:"Width"`
+	Height int `json:"Height" xml:"Height"`
+	Top    int `json:"Top" xml:"Top"`
+	Left   int `json:"Left" xml:"Left"`
+}

+ 24 - 0
services/imm/struct_face_rectangle_in_detect_face.go

@@ -0,0 +1,24 @@
+package imm
+
+//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.
+
+// FaceRectangleInDetectFace is a nested struct in imm response
+type FaceRectangleInDetectFace struct {
+	Top    string `json:"Top" xml:"Top"`
+	Left   string `json:"Left" xml:"Left"`
+	Width  string `json:"Width" xml:"Width"`
+	Height string `json:"Height" xml:"Height"`
+}

+ 24 - 0
services/imm/struct_face_rectangle_in_index_face.go

@@ -0,0 +1,24 @@
+package imm
+
+//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.
+
+// FaceRectangleInIndexFace is a nested struct in imm response
+type FaceRectangleInIndexFace struct {
+	Top    string `json:"Top" xml:"Top"`
+	Left   string `json:"Left" xml:"Left"`
+	Width  string `json:"Width" xml:"Width"`
+	Height string `json:"Height" xml:"Height"`
+}

+ 21 - 0
services/imm/struct_faces_in_detect_face.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// FacesInDetectFace is a nested struct in imm response
+type FacesInDetectFace struct {
+	FacesItem []FacesItem `json:"FacesItem" xml:"FacesItem"`
+}

+ 21 - 0
services/imm/struct_faces_in_index_face.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// FacesInIndexFace is a nested struct in imm response
+type FacesInIndexFace struct {
+	FacesItem []FacesItem `json:"FacesItem" xml:"FacesItem"`
+}

+ 21 - 0
services/imm/struct_faces_in_update_face_group_by_id.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// FacesInUpdateFaceGroupById is a nested struct in imm response
+type FacesInUpdateFaceGroupById struct {
+	FacesItem []FacesItem `json:"FacesItem" xml:"FacesItem"`
+}

+ 24 - 0
services/imm/struct_faces_item.go

@@ -0,0 +1,24 @@
+package imm
+
+//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.
+
+// FacesItem is a nested struct in imm response
+type FacesItem struct {
+	FaceId        string                   `json:"FaceId" xml:"FaceId"`
+	GroupId       string                   `json:"GroupId" xml:"GroupId"`
+	FaceAttribute FaceAttribute            `json:"FaceAttribute" xml:"FaceAttribute"`
+	FaceRectangle FaceRectangleInIndexFace `json:"FaceRectangle" xml:"FaceRectangle"`
+}

+ 21 - 0
services/imm/struct_fail_detail.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// FailDetail is a nested struct in imm response
+type FailDetail struct {
+	Code string `json:"Code" xml:"Code"`
+}

+ 21 - 0
services/imm/struct_fail_details_in_detect_face.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// FailDetailsInDetectFace is a nested struct in imm response
+type FailDetailsInDetectFace struct {
+	FailDetailsItem []FailDetailsItem `json:"FailDetailsItem" xml:"FailDetailsItem"`
+}

+ 21 - 0
services/imm/struct_fail_details_in_detect_tag.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// FailDetailsInDetectTag is a nested struct in imm response
+type FailDetailsInDetectTag struct {
+	FailDetailsItem []FailDetailsItem `json:"FailDetailsItem" xml:"FailDetailsItem"`
+}

+ 21 - 0
services/imm/struct_fail_details_in_index_face.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// FailDetailsInIndexFace is a nested struct in imm response
+type FailDetailsInIndexFace struct {
+	FailDetailsItem []FailDetailsItem `json:"FailDetailsItem" xml:"FailDetailsItem"`
+}

+ 21 - 0
services/imm/struct_fail_details_in_index_tag.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// FailDetailsInIndexTag is a nested struct in imm response
+type FailDetailsInIndexTag struct {
+	FailDetailsItem []FailDetailsItem `json:"FailDetailsItem" xml:"FailDetailsItem"`
+}

+ 22 - 0
services/imm/struct_fail_details_item.go

@@ -0,0 +1,22 @@
+package imm
+
+//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.
+
+// FailDetailsItem is a nested struct in imm response
+type FailDetailsItem struct {
+	Reason string `json:"Reason" xml:"Reason"`
+	SrcUri string `json:"SrcUri" xml:"SrcUri"`
+}

+ 21 - 0
services/imm/struct_fail_update_detail.go

@@ -0,0 +1,21 @@
+package imm
+
+//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.
+
+// FailUpdateDetail is a nested struct in imm response
+type FailUpdateDetail struct {
+	FailUpdateDetailItem []FailUpdateDetailItem `json:"FailUpdateDetailItem" xml:"FailUpdateDetailItem"`
+}

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików