Pārlūkot izejas kodu

由廷诚发起的CLOUDPHOTO SDK自动发布, BUILD_ID=287, 版本号:0.6.1

Signed-off-by: haowei.yao <haowei.yao@alibaba-inc.com>
haowei.yao 8 gadi atpakaļ
vecāks
revīzija
cc8f65fd07
60 mainītis faili ar 5939 papildinājumiem un 0 dzēšanām
  1. 5 0
      ChangeLog.txt
  2. 98 0
      services/cloudphoto/activate_photos.go
  3. 99 0
      services/cloudphoto/add_album_photos.go
  4. 43 0
      services/cloudphoto/client.go
  5. 116 0
      services/cloudphoto/create_album.go
  6. 114 0
      services/cloudphoto/create_photo.go
  7. 94 0
      services/cloudphoto/create_photo_store.go
  8. 108 0
      services/cloudphoto/create_transaction.go
  9. 98 0
      services/cloudphoto/delete_albums.go
  10. 98 0
      services/cloudphoto/delete_faces.go
  11. 91 0
      services/cloudphoto/delete_photo_store.go
  12. 98 0
      services/cloudphoto/delete_photos.go
  13. 95 0
      services/cloudphoto/edit_photo_store.go
  14. 101 0
      services/cloudphoto/edit_photos.go
  15. 94 0
      services/cloudphoto/get_download_url.go
  16. 99 0
      services/cloudphoto/get_download_urls.go
  17. 100 0
      services/cloudphoto/get_framed_photo_urls.go
  18. 105 0
      services/cloudphoto/get_library.go
  19. 107 0
      services/cloudphoto/get_photo_store.go
  20. 110 0
      services/cloudphoto/get_photos.go
  21. 109 0
      services/cloudphoto/get_photos_by_md5s.go
  22. 100 0
      services/cloudphoto/get_private_access_urls.go
  23. 101 0
      services/cloudphoto/get_public_access_urls.go
  24. 99 0
      services/cloudphoto/get_quota.go
  25. 95 0
      services/cloudphoto/get_thumbnail.go
  26. 100 0
      services/cloudphoto/get_thumbnails.go
  27. 95 0
      services/cloudphoto/get_video_cover.go
  28. 99 0
      services/cloudphoto/inactivate_photos.go
  29. 93 0
      services/cloudphoto/like_photo.go
  30. 103 0
      services/cloudphoto/list_album_photos.go
  31. 119 0
      services/cloudphoto/list_albums.go
  32. 103 0
      services/cloudphoto/list_face_photos.go
  33. 122 0
      services/cloudphoto/list_faces.go
  34. 103 0
      services/cloudphoto/list_moment_photos.go
  35. 107 0
      services/cloudphoto/list_moments.go
  36. 98 0
      services/cloudphoto/list_photo_faces.go
  37. 105 0
      services/cloudphoto/list_photo_stores.go
  38. 100 0
      services/cloudphoto/list_photo_tags.go
  39. 114 0
      services/cloudphoto/list_photos.go
  40. 99 0
      services/cloudphoto/list_registered_tags.go
  41. 103 0
      services/cloudphoto/list_tag_photos.go
  42. 112 0
      services/cloudphoto/list_tags.go
  43. 116 0
      services/cloudphoto/list_time_line_photos.go
  44. 122 0
      services/cloudphoto/list_time_lines.go
  45. 99 0
      services/cloudphoto/merge_faces.go
  46. 100 0
      services/cloudphoto/move_album_photos.go
  47. 100 0
      services/cloudphoto/move_face_photos.go
  48. 98 0
      services/cloudphoto/reactivate_photos.go
  49. 94 0
      services/cloudphoto/register_tag.go
  50. 99 0
      services/cloudphoto/remove_album_photos.go
  51. 99 0
      services/cloudphoto/remove_face_photos.go
  52. 94 0
      services/cloudphoto/rename_album.go
  53. 94 0
      services/cloudphoto/rename_face.go
  54. 110 0
      services/cloudphoto/search_photos.go
  55. 94 0
      services/cloudphoto/set_album_cover.go
  56. 94 0
      services/cloudphoto/set_face_cover.go
  57. 93 0
      services/cloudphoto/set_me.go
  58. 93 0
      services/cloudphoto/set_quota.go
  59. 95 0
      services/cloudphoto/tag_photo.go
  60. 93 0
      services/cloudphoto/toggle_features.go

+ 5 - 0
ChangeLog.txt

@@ -1,3 +1,8 @@
+2017-12-19 Version: 0.6.1
+1, InactivatePhotos support customer inactiveTime
+2, support customer tags
+3, ListPhotoTags、ListTags add param lang
+
 2017-12-18 Version: 0.6.0
 1, Add Scdn API.
 

+ 98 - 0
services/cloudphoto/activate_photos.go

@@ -0,0 +1,98 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ActivatePhotos(request *ActivatePhotosRequest) (response *ActivatePhotosResponse, err error) {
+	response = CreateActivatePhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ActivatePhotosWithChan(request *ActivatePhotosRequest) (<-chan *ActivatePhotosResponse, <-chan error) {
+	responseChan := make(chan *ActivatePhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ActivatePhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ActivatePhotosWithCallback(request *ActivatePhotosRequest, callback func(response *ActivatePhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ActivatePhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.ActivatePhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ActivatePhotosRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+}
+
+type ActivatePhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateActivatePhotosRequest() (request *ActivatePhotosRequest) {
+	request = &ActivatePhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ActivatePhotos", "", "")
+	return
+}
+
+func CreateActivatePhotosResponse() (response *ActivatePhotosResponse) {
+	response = &ActivatePhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 99 - 0
services/cloudphoto/add_album_photos.go

@@ -0,0 +1,99 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) AddAlbumPhotos(request *AddAlbumPhotosRequest) (response *AddAlbumPhotosResponse, err error) {
+	response = CreateAddAlbumPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) AddAlbumPhotosWithChan(request *AddAlbumPhotosRequest) (<-chan *AddAlbumPhotosResponse, <-chan error) {
+	responseChan := make(chan *AddAlbumPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddAlbumPhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) AddAlbumPhotosWithCallback(request *AddAlbumPhotosRequest, callback func(response *AddAlbumPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddAlbumPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.AddAlbumPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type AddAlbumPhotosRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	AlbumId   string    `position:"Query" name:"AlbumId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+}
+
+type AddAlbumPhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateAddAlbumPhotosRequest() (request *AddAlbumPhotosRequest) {
+	request = &AddAlbumPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "AddAlbumPhotos", "", "")
+	return
+}
+
+func CreateAddAlbumPhotosResponse() (response *AddAlbumPhotosResponse) {
+	response = &AddAlbumPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 43 - 0
services/cloudphoto/client.go

@@ -0,0 +1,43 @@
+package cloudphoto
+
+//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"
+)
+
+type Client struct {
+	sdk.Client
+}
+
+func NewClient() (client *Client, err error) {
+	client = &Client{}
+	err = client.Init()
+	return
+}
+
+func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithOptions(regionId, config, credential)
+	return
+}
+
+func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	return
+}

+ 116 - 0
services/cloudphoto/create_album.go

@@ -0,0 +1,116 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) CreateAlbum(request *CreateAlbumRequest) (response *CreateAlbumResponse, err error) {
+	response = CreateCreateAlbumResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) CreateAlbumWithChan(request *CreateAlbumRequest) (<-chan *CreateAlbumResponse, <-chan error) {
+	responseChan := make(chan *CreateAlbumResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateAlbum(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) CreateAlbumWithCallback(request *CreateAlbumRequest, callback func(response *CreateAlbumResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateAlbumResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateAlbum(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type CreateAlbumRequest struct {
+	*requests.RpcRequest
+	AlbumName string `position:"Query" name:"AlbumName"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	Remark    string `position:"Query" name:"Remark"`
+}
+
+type CreateAlbumResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Album     struct {
+		Id          int64  `json:"Id"`
+		Name        string `json:"Name"`
+		State       string `json:"State"`
+		Remark      string `json:"Remark"`
+		PhotosCount int64  `json:"PhotosCount"`
+		Ctime       int64  `json:"Ctime"`
+		Mtime       int64  `json:"Mtime"`
+		Cover       struct {
+			Id      int64  `json:"Id"`
+			Title   string `json:"Title"`
+			FileId  string `json:"FileId"`
+			State   string `json:"State"`
+			Md5     string `json:"Md5"`
+			IsVideo bool   `json:"IsVideo"`
+			Width   int64  `json:"Width"`
+			Height  int64  `json:"Height"`
+			Ctime   int64  `json:"Ctime"`
+			Mtime   int64  `json:"Mtime"`
+			Remark  string `json:"Remark"`
+		} `json:"Cover"`
+	} `json:"Album"`
+}
+
+func CreateCreateAlbumRequest() (request *CreateAlbumRequest) {
+	request = &CreateAlbumRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "CreateAlbum", "", "")
+	return
+}
+
+func CreateCreateAlbumResponse() (response *CreateAlbumResponse) {
+	response = &CreateAlbumResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/cloudphoto/create_photo.go

@@ -0,0 +1,114 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) CreatePhoto(request *CreatePhotoRequest) (response *CreatePhotoResponse, err error) {
+	response = CreateCreatePhotoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) CreatePhotoWithChan(request *CreatePhotoRequest) (<-chan *CreatePhotoResponse, <-chan error) {
+	responseChan := make(chan *CreatePhotoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreatePhoto(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) CreatePhotoWithCallback(request *CreatePhotoRequest, callback func(response *CreatePhotoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreatePhotoResponse
+		var err error
+		defer close(result)
+		response, err = client.CreatePhoto(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type CreatePhotoRequest struct {
+	*requests.RpcRequest
+	PhotoTitle      string `position:"Query" name:"PhotoTitle"`
+	LibraryId       string `position:"Query" name:"LibraryId"`
+	ShareExpireTime string `position:"Query" name:"ShareExpireTime"`
+	StoreName       string `position:"Query" name:"StoreName"`
+	UploadType      string `position:"Query" name:"UploadType"`
+	Remark          string `position:"Query" name:"Remark"`
+	SessionId       string `position:"Query" name:"SessionId"`
+	Staging         string `position:"Query" name:"Staging"`
+	FileId          string `position:"Query" name:"FileId"`
+}
+
+type CreatePhotoResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Photo     struct {
+		Id              int64  `json:"Id"`
+		Title           string `json:"Title"`
+		FileId          string `json:"FileId"`
+		State           string `json:"State"`
+		Md5             string `json:"Md5"`
+		IsVideo         bool   `json:"IsVideo"`
+		Remark          string `json:"Remark"`
+		Width           int64  `json:"Width"`
+		Height          int64  `json:"Height"`
+		Ctime           int64  `json:"Ctime"`
+		Mtime           int64  `json:"Mtime"`
+		TakenAt         int64  `json:"TakenAt"`
+		ShareExpireTime int64  `json:"ShareExpireTime"`
+	} `json:"Photo"`
+}
+
+func CreateCreatePhotoRequest() (request *CreatePhotoRequest) {
+	request = &CreatePhotoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "CreatePhoto", "", "")
+	return
+}
+
+func CreateCreatePhotoResponse() (response *CreatePhotoResponse) {
+	response = &CreatePhotoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 94 - 0
services/cloudphoto/create_photo_store.go

@@ -0,0 +1,94 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) CreatePhotoStore(request *CreatePhotoStoreRequest) (response *CreatePhotoStoreResponse, err error) {
+	response = CreateCreatePhotoStoreResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) CreatePhotoStoreWithChan(request *CreatePhotoStoreRequest) (<-chan *CreatePhotoStoreResponse, <-chan error) {
+	responseChan := make(chan *CreatePhotoStoreResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreatePhotoStore(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) CreatePhotoStoreWithCallback(request *CreatePhotoStoreRequest, callback func(response *CreatePhotoStoreResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreatePhotoStoreResponse
+		var err error
+		defer close(result)
+		response, err = client.CreatePhotoStore(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type CreatePhotoStoreRequest struct {
+	*requests.RpcRequest
+	BucketName   string `position:"Query" name:"BucketName"`
+	StoreName    string `position:"Query" name:"StoreName"`
+	Remark       string `position:"Query" name:"Remark"`
+	DefaultQuota string `position:"Query" name:"DefaultQuota"`
+}
+
+type CreatePhotoStoreResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateCreatePhotoStoreRequest() (request *CreatePhotoStoreRequest) {
+	request = &CreatePhotoStoreRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "CreatePhotoStore", "", "")
+	return
+}
+
+func CreateCreatePhotoStoreResponse() (response *CreatePhotoStoreResponse) {
+	response = &CreatePhotoStoreResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/cloudphoto/create_transaction.go

@@ -0,0 +1,108 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) CreateTransaction(request *CreateTransactionRequest) (response *CreateTransactionResponse, err error) {
+	response = CreateCreateTransactionResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) CreateTransactionWithChan(request *CreateTransactionRequest) (<-chan *CreateTransactionResponse, <-chan error) {
+	responseChan := make(chan *CreateTransactionResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateTransaction(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) CreateTransactionWithCallback(request *CreateTransactionRequest, callback func(response *CreateTransactionResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateTransactionResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateTransaction(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type CreateTransactionRequest struct {
+	*requests.RpcRequest
+	Ext       string `position:"Query" name:"Ext"`
+	Size      string `position:"Query" name:"Size"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	Force     string `position:"Query" name:"Force"`
+	Md5       string `position:"Query" name:"Md5"`
+}
+
+type CreateTransactionResponse struct {
+	*responses.BaseResponse
+	Code        string `json:"Code"`
+	Message     string `json:"Message"`
+	RequestId   string `json:"RequestId"`
+	Action      string `json:"Action"`
+	Transaction struct {
+		Upload struct {
+			Bucket          string `json:"Bucket"`
+			FileId          string `json:"FileId"`
+			OssEndpoint     string `json:"OssEndpoint"`
+			ObjectKey       string `json:"ObjectKey"`
+			SessionId       string `json:"SessionId"`
+			AccessKeyId     string `json:"AccessKeyId"`
+			AccessKeySecret string `json:"AccessKeySecret"`
+			StsToken        string `json:"StsToken"`
+		} `json:"Upload"`
+	} `json:"Transaction"`
+}
+
+func CreateCreateTransactionRequest() (request *CreateTransactionRequest) {
+	request = &CreateTransactionRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "CreateTransaction", "", "")
+	return
+}
+
+func CreateCreateTransactionResponse() (response *CreateTransactionResponse) {
+	response = &CreateTransactionResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 98 - 0
services/cloudphoto/delete_albums.go

@@ -0,0 +1,98 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) DeleteAlbums(request *DeleteAlbumsRequest) (response *DeleteAlbumsResponse, err error) {
+	response = CreateDeleteAlbumsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) DeleteAlbumsWithChan(request *DeleteAlbumsRequest) (<-chan *DeleteAlbumsResponse, <-chan error) {
+	responseChan := make(chan *DeleteAlbumsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteAlbums(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) DeleteAlbumsWithCallback(request *DeleteAlbumsRequest, callback func(response *DeleteAlbumsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteAlbumsResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteAlbums(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type DeleteAlbumsRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	AlbumId   *[]string `position:"Query" name:"AlbumId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+}
+
+type DeleteAlbumsResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateDeleteAlbumsRequest() (request *DeleteAlbumsRequest) {
+	request = &DeleteAlbumsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "DeleteAlbums", "", "")
+	return
+}
+
+func CreateDeleteAlbumsResponse() (response *DeleteAlbumsResponse) {
+	response = &DeleteAlbumsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 98 - 0
services/cloudphoto/delete_faces.go

@@ -0,0 +1,98 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) DeleteFaces(request *DeleteFacesRequest) (response *DeleteFacesResponse, err error) {
+	response = CreateDeleteFacesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) DeleteFacesWithChan(request *DeleteFacesRequest) (<-chan *DeleteFacesResponse, <-chan error) {
+	responseChan := make(chan *DeleteFacesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFaces(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) DeleteFacesWithCallback(request *DeleteFacesRequest, callback func(response *DeleteFacesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFacesResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFaces(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type DeleteFacesRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	StoreName string    `position:"Query" name:"StoreName"`
+	FaceId    *[]string `position:"Query" name:"FaceId"  type:"Repeated"`
+}
+
+type DeleteFacesResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateDeleteFacesRequest() (request *DeleteFacesRequest) {
+	request = &DeleteFacesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "DeleteFaces", "", "")
+	return
+}
+
+func CreateDeleteFacesResponse() (response *DeleteFacesResponse) {
+	response = &DeleteFacesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 91 - 0
services/cloudphoto/delete_photo_store.go

@@ -0,0 +1,91 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) DeletePhotoStore(request *DeletePhotoStoreRequest) (response *DeletePhotoStoreResponse, err error) {
+	response = CreateDeletePhotoStoreResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) DeletePhotoStoreWithChan(request *DeletePhotoStoreRequest) (<-chan *DeletePhotoStoreResponse, <-chan error) {
+	responseChan := make(chan *DeletePhotoStoreResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeletePhotoStore(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) DeletePhotoStoreWithCallback(request *DeletePhotoStoreRequest, callback func(response *DeletePhotoStoreResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeletePhotoStoreResponse
+		var err error
+		defer close(result)
+		response, err = client.DeletePhotoStore(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type DeletePhotoStoreRequest struct {
+	*requests.RpcRequest
+	StoreName string `position:"Query" name:"StoreName"`
+}
+
+type DeletePhotoStoreResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateDeletePhotoStoreRequest() (request *DeletePhotoStoreRequest) {
+	request = &DeletePhotoStoreRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "DeletePhotoStore", "", "")
+	return
+}
+
+func CreateDeletePhotoStoreResponse() (response *DeletePhotoStoreResponse) {
+	response = &DeletePhotoStoreResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 98 - 0
services/cloudphoto/delete_photos.go

@@ -0,0 +1,98 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) DeletePhotos(request *DeletePhotosRequest) (response *DeletePhotosResponse, err error) {
+	response = CreateDeletePhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) DeletePhotosWithChan(request *DeletePhotosRequest) (<-chan *DeletePhotosResponse, <-chan error) {
+	responseChan := make(chan *DeletePhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeletePhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) DeletePhotosWithCallback(request *DeletePhotosRequest, callback func(response *DeletePhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeletePhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.DeletePhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type DeletePhotosRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+}
+
+type DeletePhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateDeletePhotosRequest() (request *DeletePhotosRequest) {
+	request = &DeletePhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "DeletePhotos", "", "")
+	return
+}
+
+func CreateDeletePhotosResponse() (response *DeletePhotosResponse) {
+	response = &DeletePhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 95 - 0
services/cloudphoto/edit_photo_store.go

@@ -0,0 +1,95 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) EditPhotoStore(request *EditPhotoStoreRequest) (response *EditPhotoStoreResponse, err error) {
+	response = CreateEditPhotoStoreResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) EditPhotoStoreWithChan(request *EditPhotoStoreRequest) (<-chan *EditPhotoStoreResponse, <-chan error) {
+	responseChan := make(chan *EditPhotoStoreResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.EditPhotoStore(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) EditPhotoStoreWithCallback(request *EditPhotoStoreRequest, callback func(response *EditPhotoStoreResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *EditPhotoStoreResponse
+		var err error
+		defer close(result)
+		response, err = client.EditPhotoStore(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type EditPhotoStoreRequest struct {
+	*requests.RpcRequest
+	AutoCleanEnabled string `position:"Query" name:"AutoCleanEnabled"`
+	StoreName        string `position:"Query" name:"StoreName"`
+	Remark           string `position:"Query" name:"Remark"`
+	DefaultQuota     string `position:"Query" name:"DefaultQuota"`
+	AutoCleanDays    string `position:"Query" name:"AutoCleanDays"`
+}
+
+type EditPhotoStoreResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateEditPhotoStoreRequest() (request *EditPhotoStoreRequest) {
+	request = &EditPhotoStoreRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "EditPhotoStore", "", "")
+	return
+}
+
+func CreateEditPhotoStoreResponse() (response *EditPhotoStoreResponse) {
+	response = &EditPhotoStoreResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 101 - 0
services/cloudphoto/edit_photos.go

@@ -0,0 +1,101 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) EditPhotos(request *EditPhotosRequest) (response *EditPhotosResponse, err error) {
+	response = CreateEditPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) EditPhotosWithChan(request *EditPhotosRequest) (<-chan *EditPhotosResponse, <-chan error) {
+	responseChan := make(chan *EditPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.EditPhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) EditPhotosWithCallback(request *EditPhotosRequest, callback func(response *EditPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *EditPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.EditPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type EditPhotosRequest struct {
+	*requests.RpcRequest
+	LibraryId       string    `position:"Query" name:"LibraryId"`
+	ShareExpireTime string    `position:"Query" name:"ShareExpireTime"`
+	PhotoId         *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName       string    `position:"Query" name:"StoreName"`
+	Remark          string    `position:"Query" name:"Remark"`
+	Title           string    `position:"Query" name:"Title"`
+}
+
+type EditPhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateEditPhotosRequest() (request *EditPhotosRequest) {
+	request = &EditPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "EditPhotos", "", "")
+	return
+}
+
+func CreateEditPhotosResponse() (response *EditPhotosResponse) {
+	response = &EditPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 94 - 0
services/cloudphoto/get_download_url.go

@@ -0,0 +1,94 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetDownloadUrl(request *GetDownloadUrlRequest) (response *GetDownloadUrlResponse, err error) {
+	response = CreateGetDownloadUrlResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetDownloadUrlWithChan(request *GetDownloadUrlRequest) (<-chan *GetDownloadUrlResponse, <-chan error) {
+	responseChan := make(chan *GetDownloadUrlResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetDownloadUrl(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetDownloadUrlWithCallback(request *GetDownloadUrlRequest, callback func(response *GetDownloadUrlResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetDownloadUrlResponse
+		var err error
+		defer close(result)
+		response, err = client.GetDownloadUrl(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetDownloadUrlRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	PhotoId   string `position:"Query" name:"PhotoId"`
+	StoreName string `position:"Query" name:"StoreName"`
+}
+
+type GetDownloadUrlResponse struct {
+	*responses.BaseResponse
+	Code        string `json:"Code"`
+	Message     string `json:"Message"`
+	DownloadUrl string `json:"DownloadUrl"`
+	RequestId   string `json:"RequestId"`
+	Action      string `json:"Action"`
+}
+
+func CreateGetDownloadUrlRequest() (request *GetDownloadUrlRequest) {
+	request = &GetDownloadUrlRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetDownloadUrl", "", "")
+	return
+}
+
+func CreateGetDownloadUrlResponse() (response *GetDownloadUrlResponse) {
+	response = &GetDownloadUrlResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 99 - 0
services/cloudphoto/get_download_urls.go

@@ -0,0 +1,99 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetDownloadUrls(request *GetDownloadUrlsRequest) (response *GetDownloadUrlsResponse, err error) {
+	response = CreateGetDownloadUrlsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetDownloadUrlsWithChan(request *GetDownloadUrlsRequest) (<-chan *GetDownloadUrlsResponse, <-chan error) {
+	responseChan := make(chan *GetDownloadUrlsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetDownloadUrls(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetDownloadUrlsWithCallback(request *GetDownloadUrlsRequest, callback func(response *GetDownloadUrlsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetDownloadUrlsResponse
+		var err error
+		defer close(result)
+		response, err = client.GetDownloadUrls(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetDownloadUrlsRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+}
+
+type GetDownloadUrlsResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Code        string `json:"Code"`
+		Message     string `json:"Message"`
+		PhotoId     int64  `json:"PhotoId"`
+		DownloadUrl string `json:"DownloadUrl"`
+	} `json:"Results"`
+}
+
+func CreateGetDownloadUrlsRequest() (request *GetDownloadUrlsRequest) {
+	request = &GetDownloadUrlsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetDownloadUrls", "", "")
+	return
+}
+
+func CreateGetDownloadUrlsResponse() (response *GetDownloadUrlsResponse) {
+	response = &GetDownloadUrlsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 100 - 0
services/cloudphoto/get_framed_photo_urls.go

@@ -0,0 +1,100 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetFramedPhotoUrls(request *GetFramedPhotoUrlsRequest) (response *GetFramedPhotoUrlsResponse, err error) {
+	response = CreateGetFramedPhotoUrlsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetFramedPhotoUrlsWithChan(request *GetFramedPhotoUrlsRequest) (<-chan *GetFramedPhotoUrlsResponse, <-chan error) {
+	responseChan := make(chan *GetFramedPhotoUrlsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetFramedPhotoUrls(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetFramedPhotoUrlsWithCallback(request *GetFramedPhotoUrlsRequest, callback func(response *GetFramedPhotoUrlsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetFramedPhotoUrlsResponse
+		var err error
+		defer close(result)
+		response, err = client.GetFramedPhotoUrls(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetFramedPhotoUrlsRequest struct {
+	*requests.RpcRequest
+	FrameId   string    `position:"Query" name:"FrameId"`
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+}
+
+type GetFramedPhotoUrlsResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Code           string `json:"Code"`
+		Message        string `json:"Message"`
+		PhotoId        int64  `json:"PhotoId"`
+		FramedPhotoUrl string `json:"FramedPhotoUrl"`
+	} `json:"Results"`
+}
+
+func CreateGetFramedPhotoUrlsRequest() (request *GetFramedPhotoUrlsRequest) {
+	request = &GetFramedPhotoUrlsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetFramedPhotoUrls", "", "")
+	return
+}
+
+func CreateGetFramedPhotoUrlsResponse() (response *GetFramedPhotoUrlsResponse) {
+	response = &GetFramedPhotoUrlsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/cloudphoto/get_library.go

@@ -0,0 +1,105 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetLibrary(request *GetLibraryRequest) (response *GetLibraryResponse, err error) {
+	response = CreateGetLibraryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetLibraryWithChan(request *GetLibraryRequest) (<-chan *GetLibraryResponse, <-chan error) {
+	responseChan := make(chan *GetLibraryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetLibrary(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetLibraryWithCallback(request *GetLibraryRequest, callback func(response *GetLibraryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetLibraryResponse
+		var err error
+		defer close(result)
+		response, err = client.GetLibrary(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetLibraryRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+}
+
+type GetLibraryResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Library   struct {
+		Quota struct {
+			TotalQuota  int64 `json:"TotalQuota"`
+			FacesCount  int   `json:"FacesCount"`
+			PhotosCount int   `json:"PhotosCount"`
+			UsedQuota   int64 `json:"UsedQuota"`
+			VideosCount int   `json:"VideosCount"`
+		} `json:"Quota"`
+		AutoCleanConfig struct {
+			AutoCleanEnabled bool `json:"AutoCleanEnabled"`
+			AutoCleanDays    int  `json:"AutoCleanDays"`
+		} `json:"AutoCleanConfig"`
+	} `json:"Library"`
+}
+
+func CreateGetLibraryRequest() (request *GetLibraryRequest) {
+	request = &GetLibraryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetLibrary", "", "")
+	return
+}
+
+func CreateGetLibraryResponse() (response *GetLibraryResponse) {
+	response = &GetLibraryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/cloudphoto/get_photo_store.go

@@ -0,0 +1,107 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetPhotoStore(request *GetPhotoStoreRequest) (response *GetPhotoStoreResponse, err error) {
+	response = CreateGetPhotoStoreResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetPhotoStoreWithChan(request *GetPhotoStoreRequest) (<-chan *GetPhotoStoreResponse, <-chan error) {
+	responseChan := make(chan *GetPhotoStoreResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetPhotoStore(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetPhotoStoreWithCallback(request *GetPhotoStoreRequest, callback func(response *GetPhotoStoreResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetPhotoStoreResponse
+		var err error
+		defer close(result)
+		response, err = client.GetPhotoStore(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetPhotoStoreRequest struct {
+	*requests.RpcRequest
+	StoreName string `position:"Query" name:"StoreName"`
+}
+
+type GetPhotoStoreResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	PhotoStore struct {
+		Id               int64  `json:"Id"`
+		Name             string `json:"Name"`
+		Remark           string `json:"Remark"`
+		AutoCleanEnabled bool   `json:"AutoCleanEnabled"`
+		AutoCleanDays    int    `json:"AutoCleanDays"`
+		DefaultQuota     int64  `json:"DefaultQuota"`
+		Ctime            int64  `json:"Ctime"`
+		Mtime            int64  `json:"Mtime"`
+		Buckets          []struct {
+			Name   string `json:"Name"`
+			Region string `json:"Region"`
+			State  string `json:"State"`
+			Acl    string `json:"Acl"`
+		} `json:"Buckets"`
+	} `json:"PhotoStore"`
+}
+
+func CreateGetPhotoStoreRequest() (request *GetPhotoStoreRequest) {
+	request = &GetPhotoStoreRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetPhotoStore", "", "")
+	return
+}
+
+func CreateGetPhotoStoreResponse() (response *GetPhotoStoreResponse) {
+	response = &GetPhotoStoreResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/cloudphoto/get_photos.go

@@ -0,0 +1,110 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetPhotos(request *GetPhotosRequest) (response *GetPhotosResponse, err error) {
+	response = CreateGetPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetPhotosWithChan(request *GetPhotosRequest) (<-chan *GetPhotosResponse, <-chan error) {
+	responseChan := make(chan *GetPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetPhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetPhotosWithCallback(request *GetPhotosRequest, callback func(response *GetPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.GetPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetPhotosRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+}
+
+type GetPhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Photos    []struct {
+		Id              int64  `json:"Id"`
+		Title           string `json:"Title"`
+		FileId          string `json:"FileId"`
+		State           string `json:"State"`
+		Md5             string `json:"Md5"`
+		IsVideo         bool   `json:"IsVideo"`
+		Remark          string `json:"Remark"`
+		Width           int64  `json:"Width"`
+		Height          int64  `json:"Height"`
+		Ctime           int64  `json:"Ctime"`
+		Mtime           int64  `json:"Mtime"`
+		TakenAt         int64  `json:"TakenAt"`
+		InactiveTime    int64  `json:"InactiveTime"`
+		ShareExpireTime int64  `json:"ShareExpireTime"`
+		Like            int64  `json:"Like"`
+	} `json:"Photos"`
+}
+
+func CreateGetPhotosRequest() (request *GetPhotosRequest) {
+	request = &GetPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetPhotos", "", "")
+	return
+}
+
+func CreateGetPhotosResponse() (response *GetPhotosResponse) {
+	response = &GetPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/cloudphoto/get_photos_by_md5s.go

@@ -0,0 +1,109 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetPhotosByMd5s(request *GetPhotosByMd5sRequest) (response *GetPhotosByMd5sResponse, err error) {
+	response = CreateGetPhotosByMd5sResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetPhotosByMd5sWithChan(request *GetPhotosByMd5sRequest) (<-chan *GetPhotosByMd5sResponse, <-chan error) {
+	responseChan := make(chan *GetPhotosByMd5sResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetPhotosByMd5s(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetPhotosByMd5sWithCallback(request *GetPhotosByMd5sRequest, callback func(response *GetPhotosByMd5sResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetPhotosByMd5sResponse
+		var err error
+		defer close(result)
+		response, err = client.GetPhotosByMd5s(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetPhotosByMd5sRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	StoreName string    `position:"Query" name:"StoreName"`
+	State     string    `position:"Query" name:"State"`
+	Md5       *[]string `position:"Query" name:"Md5"  type:"Repeated"`
+}
+
+type GetPhotosByMd5sResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Photos    []struct {
+		Id              int64  `json:"Id"`
+		Title           string `json:"Title"`
+		FileId          string `json:"FileId"`
+		State           string `json:"State"`
+		Md5             string `json:"Md5"`
+		IsVideo         bool   `json:"IsVideo"`
+		Remark          string `json:"Remark"`
+		Width           int64  `json:"Width"`
+		Height          int64  `json:"Height"`
+		Ctime           int64  `json:"Ctime"`
+		Mtime           int64  `json:"Mtime"`
+		TakenAt         int64  `json:"TakenAt"`
+		ShareExpireTime int64  `json:"ShareExpireTime"`
+	} `json:"Photos"`
+}
+
+func CreateGetPhotosByMd5sRequest() (request *GetPhotosByMd5sRequest) {
+	request = &GetPhotosByMd5sRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetPhotosByMd5s", "", "")
+	return
+}
+
+func CreateGetPhotosByMd5sResponse() (response *GetPhotosByMd5sResponse) {
+	response = &GetPhotosByMd5sResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 100 - 0
services/cloudphoto/get_private_access_urls.go

@@ -0,0 +1,100 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetPrivateAccessUrls(request *GetPrivateAccessUrlsRequest) (response *GetPrivateAccessUrlsResponse, err error) {
+	response = CreateGetPrivateAccessUrlsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetPrivateAccessUrlsWithChan(request *GetPrivateAccessUrlsRequest) (<-chan *GetPrivateAccessUrlsResponse, <-chan error) {
+	responseChan := make(chan *GetPrivateAccessUrlsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetPrivateAccessUrls(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetPrivateAccessUrlsWithCallback(request *GetPrivateAccessUrlsRequest, callback func(response *GetPrivateAccessUrlsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetPrivateAccessUrlsResponse
+		var err error
+		defer close(result)
+		response, err = client.GetPrivateAccessUrls(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetPrivateAccessUrlsRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+	ZoomType  string    `position:"Query" name:"ZoomType"`
+}
+
+type GetPrivateAccessUrlsResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Code      string `json:"Code"`
+		Message   string `json:"Message"`
+		PhotoId   int64  `json:"PhotoId"`
+		AccessUrl string `json:"AccessUrl"`
+	} `json:"Results"`
+}
+
+func CreateGetPrivateAccessUrlsRequest() (request *GetPrivateAccessUrlsRequest) {
+	request = &GetPrivateAccessUrlsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetPrivateAccessUrls", "", "")
+	return
+}
+
+func CreateGetPrivateAccessUrlsResponse() (response *GetPrivateAccessUrlsResponse) {
+	response = &GetPrivateAccessUrlsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 101 - 0
services/cloudphoto/get_public_access_urls.go

@@ -0,0 +1,101 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetPublicAccessUrls(request *GetPublicAccessUrlsRequest) (response *GetPublicAccessUrlsResponse, err error) {
+	response = CreateGetPublicAccessUrlsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetPublicAccessUrlsWithChan(request *GetPublicAccessUrlsRequest) (<-chan *GetPublicAccessUrlsResponse, <-chan error) {
+	responseChan := make(chan *GetPublicAccessUrlsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetPublicAccessUrls(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetPublicAccessUrlsWithCallback(request *GetPublicAccessUrlsRequest, callback func(response *GetPublicAccessUrlsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetPublicAccessUrlsResponse
+		var err error
+		defer close(result)
+		response, err = client.GetPublicAccessUrls(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetPublicAccessUrlsRequest struct {
+	*requests.RpcRequest
+	DomainType string    `position:"Query" name:"DomainType"`
+	LibraryId  string    `position:"Query" name:"LibraryId"`
+	PhotoId    *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName  string    `position:"Query" name:"StoreName"`
+	ZoomType   string    `position:"Query" name:"ZoomType"`
+}
+
+type GetPublicAccessUrlsResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Code      string `json:"Code"`
+		Message   string `json:"Message"`
+		PhotoId   int64  `json:"PhotoId"`
+		AccessUrl string `json:"AccessUrl"`
+	} `json:"Results"`
+}
+
+func CreateGetPublicAccessUrlsRequest() (request *GetPublicAccessUrlsRequest) {
+	request = &GetPublicAccessUrlsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetPublicAccessUrls", "", "")
+	return
+}
+
+func CreateGetPublicAccessUrlsResponse() (response *GetPublicAccessUrlsResponse) {
+	response = &GetPublicAccessUrlsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 99 - 0
services/cloudphoto/get_quota.go

@@ -0,0 +1,99 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetQuota(request *GetQuotaRequest) (response *GetQuotaResponse, err error) {
+	response = CreateGetQuotaResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetQuotaWithChan(request *GetQuotaRequest) (<-chan *GetQuotaResponse, <-chan error) {
+	responseChan := make(chan *GetQuotaResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetQuota(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetQuotaWithCallback(request *GetQuotaRequest, callback func(response *GetQuotaResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetQuotaResponse
+		var err error
+		defer close(result)
+		response, err = client.GetQuota(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetQuotaRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+}
+
+type GetQuotaResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Quota     struct {
+		TotalQuota  int64 `json:"TotalQuota"`
+		FacesCount  int   `json:"FacesCount"`
+		PhotosCount int   `json:"PhotosCount"`
+		UsedQuota   int64 `json:"UsedQuota"`
+		VideosCount int   `json:"VideosCount"`
+	} `json:"Quota"`
+}
+
+func CreateGetQuotaRequest() (request *GetQuotaRequest) {
+	request = &GetQuotaRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetQuota", "", "")
+	return
+}
+
+func CreateGetQuotaResponse() (response *GetQuotaResponse) {
+	response = &GetQuotaResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 95 - 0
services/cloudphoto/get_thumbnail.go

@@ -0,0 +1,95 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetThumbnail(request *GetThumbnailRequest) (response *GetThumbnailResponse, err error) {
+	response = CreateGetThumbnailResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetThumbnailWithChan(request *GetThumbnailRequest) (<-chan *GetThumbnailResponse, <-chan error) {
+	responseChan := make(chan *GetThumbnailResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetThumbnail(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetThumbnailWithCallback(request *GetThumbnailRequest, callback func(response *GetThumbnailResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetThumbnailResponse
+		var err error
+		defer close(result)
+		response, err = client.GetThumbnail(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetThumbnailRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	PhotoId   string `position:"Query" name:"PhotoId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	ZoomType  string `position:"Query" name:"ZoomType"`
+}
+
+type GetThumbnailResponse struct {
+	*responses.BaseResponse
+	Code         string `json:"Code"`
+	Message      string `json:"Message"`
+	ThumbnailUrl string `json:"ThumbnailUrl"`
+	RequestId    string `json:"RequestId"`
+	Action       string `json:"Action"`
+}
+
+func CreateGetThumbnailRequest() (request *GetThumbnailRequest) {
+	request = &GetThumbnailRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetThumbnail", "", "")
+	return
+}
+
+func CreateGetThumbnailResponse() (response *GetThumbnailResponse) {
+	response = &GetThumbnailResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 100 - 0
services/cloudphoto/get_thumbnails.go

@@ -0,0 +1,100 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetThumbnails(request *GetThumbnailsRequest) (response *GetThumbnailsResponse, err error) {
+	response = CreateGetThumbnailsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetThumbnailsWithChan(request *GetThumbnailsRequest) (<-chan *GetThumbnailsResponse, <-chan error) {
+	responseChan := make(chan *GetThumbnailsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetThumbnails(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetThumbnailsWithCallback(request *GetThumbnailsRequest, callback func(response *GetThumbnailsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetThumbnailsResponse
+		var err error
+		defer close(result)
+		response, err = client.GetThumbnails(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetThumbnailsRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+	ZoomType  string    `position:"Query" name:"ZoomType"`
+}
+
+type GetThumbnailsResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Code         string `json:"Code"`
+		Message      string `json:"Message"`
+		PhotoId      int64  `json:"PhotoId"`
+		ThumbnailUrl string `json:"ThumbnailUrl"`
+	} `json:"Results"`
+}
+
+func CreateGetThumbnailsRequest() (request *GetThumbnailsRequest) {
+	request = &GetThumbnailsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetThumbnails", "", "")
+	return
+}
+
+func CreateGetThumbnailsResponse() (response *GetThumbnailsResponse) {
+	response = &GetThumbnailsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 95 - 0
services/cloudphoto/get_video_cover.go

@@ -0,0 +1,95 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) GetVideoCover(request *GetVideoCoverRequest) (response *GetVideoCoverResponse, err error) {
+	response = CreateGetVideoCoverResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetVideoCoverWithChan(request *GetVideoCoverRequest) (<-chan *GetVideoCoverResponse, <-chan error) {
+	responseChan := make(chan *GetVideoCoverResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetVideoCover(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetVideoCoverWithCallback(request *GetVideoCoverRequest, callback func(response *GetVideoCoverResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetVideoCoverResponse
+		var err error
+		defer close(result)
+		response, err = client.GetVideoCover(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetVideoCoverRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	PhotoId   string `position:"Query" name:"PhotoId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	ZoomType  string `position:"Query" name:"ZoomType"`
+}
+
+type GetVideoCoverResponse struct {
+	*responses.BaseResponse
+	Code          string `json:"Code"`
+	Message       string `json:"Message"`
+	VideoCoverUrl string `json:"VideoCoverUrl"`
+	RequestId     string `json:"RequestId"`
+	Action        string `json:"Action"`
+}
+
+func CreateGetVideoCoverRequest() (request *GetVideoCoverRequest) {
+	request = &GetVideoCoverRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "GetVideoCover", "", "")
+	return
+}
+
+func CreateGetVideoCoverResponse() (response *GetVideoCoverResponse) {
+	response = &GetVideoCoverResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 99 - 0
services/cloudphoto/inactivate_photos.go

@@ -0,0 +1,99 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) InactivatePhotos(request *InactivatePhotosRequest) (response *InactivatePhotosResponse, err error) {
+	response = CreateInactivatePhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) InactivatePhotosWithChan(request *InactivatePhotosRequest) (<-chan *InactivatePhotosResponse, <-chan error) {
+	responseChan := make(chan *InactivatePhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.InactivatePhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) InactivatePhotosWithCallback(request *InactivatePhotosRequest, callback func(response *InactivatePhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *InactivatePhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.InactivatePhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type InactivatePhotosRequest struct {
+	*requests.RpcRequest
+	LibraryId    string    `position:"Query" name:"LibraryId"`
+	PhotoId      *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName    string    `position:"Query" name:"StoreName"`
+	InactiveTime string    `position:"Query" name:"InactiveTime"`
+}
+
+type InactivatePhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateInactivatePhotosRequest() (request *InactivatePhotosRequest) {
+	request = &InactivatePhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "InactivatePhotos", "", "")
+	return
+}
+
+func CreateInactivatePhotosResponse() (response *InactivatePhotosResponse) {
+	response = &InactivatePhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 93 - 0
services/cloudphoto/like_photo.go

@@ -0,0 +1,93 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) LikePhoto(request *LikePhotoRequest) (response *LikePhotoResponse, err error) {
+	response = CreateLikePhotoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) LikePhotoWithChan(request *LikePhotoRequest) (<-chan *LikePhotoResponse, <-chan error) {
+	responseChan := make(chan *LikePhotoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.LikePhoto(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) LikePhotoWithCallback(request *LikePhotoRequest, callback func(response *LikePhotoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *LikePhotoResponse
+		var err error
+		defer close(result)
+		response, err = client.LikePhoto(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type LikePhotoRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	PhotoId   string `position:"Query" name:"PhotoId"`
+	StoreName string `position:"Query" name:"StoreName"`
+}
+
+type LikePhotoResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateLikePhotoRequest() (request *LikePhotoRequest) {
+	request = &LikePhotoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "LikePhoto", "", "")
+	return
+}
+
+func CreateLikePhotoResponse() (response *LikePhotoResponse) {
+	response = &LikePhotoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 103 - 0
services/cloudphoto/list_album_photos.go

@@ -0,0 +1,103 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListAlbumPhotos(request *ListAlbumPhotosRequest) (response *ListAlbumPhotosResponse, err error) {
+	response = CreateListAlbumPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListAlbumPhotosWithChan(request *ListAlbumPhotosRequest) (<-chan *ListAlbumPhotosResponse, <-chan error) {
+	responseChan := make(chan *ListAlbumPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAlbumPhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListAlbumPhotosWithCallback(request *ListAlbumPhotosRequest, callback func(response *ListAlbumPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAlbumPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAlbumPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListAlbumPhotosRequest struct {
+	*requests.RpcRequest
+	Cursor    string `position:"Query" name:"Cursor"`
+	Size      string `position:"Query" name:"Size"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	AlbumId   string `position:"Query" name:"AlbumId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	State     string `position:"Query" name:"State"`
+	Direction string `position:"Query" name:"Direction"`
+}
+
+type ListAlbumPhotosResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	NextCursor string `json:"NextCursor"`
+	TotalCount int    `json:"TotalCount"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	Results    []struct {
+		PhotoId int64  `json:"PhotoId"`
+		State   string `json:"State"`
+	} `json:"Results"`
+}
+
+func CreateListAlbumPhotosRequest() (request *ListAlbumPhotosRequest) {
+	request = &ListAlbumPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListAlbumPhotos", "", "")
+	return
+}
+
+func CreateListAlbumPhotosResponse() (response *ListAlbumPhotosResponse) {
+	response = &ListAlbumPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 119 - 0
services/cloudphoto/list_albums.go

@@ -0,0 +1,119 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListAlbums(request *ListAlbumsRequest) (response *ListAlbumsResponse, err error) {
+	response = CreateListAlbumsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListAlbumsWithChan(request *ListAlbumsRequest) (<-chan *ListAlbumsResponse, <-chan error) {
+	responseChan := make(chan *ListAlbumsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAlbums(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListAlbumsWithCallback(request *ListAlbumsRequest, callback func(response *ListAlbumsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAlbumsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAlbums(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListAlbumsRequest struct {
+	*requests.RpcRequest
+	Cursor    string `position:"Query" name:"Cursor"`
+	Size      string `position:"Query" name:"Size"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	State     string `position:"Query" name:"State"`
+	Direction string `position:"Query" name:"Direction"`
+}
+
+type ListAlbumsResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	NextCursor string `json:"NextCursor"`
+	TotalCount int    `json:"TotalCount"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	Albums     []struct {
+		Id          int64  `json:"Id"`
+		Name        string `json:"Name"`
+		State       string `json:"State"`
+		PhotosCount int64  `json:"PhotosCount"`
+		Ctime       int64  `json:"Ctime"`
+		Mtime       int64  `json:"Mtime"`
+		Cover       struct {
+			Id      int64  `json:"Id"`
+			Title   string `json:"Title"`
+			FileId  string `json:"FileId"`
+			State   string `json:"State"`
+			Md5     string `json:"Md5"`
+			IsVideo bool   `json:"IsVideo"`
+			Remark  string `json:"Remark"`
+			Width   int64  `json:"Width"`
+			Height  int64  `json:"Height"`
+			Ctime   int64  `json:"Ctime"`
+			Mtime   int64  `json:"Mtime"`
+		} `json:"Cover"`
+	} `json:"Albums"`
+}
+
+func CreateListAlbumsRequest() (request *ListAlbumsRequest) {
+	request = &ListAlbumsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListAlbums", "", "")
+	return
+}
+
+func CreateListAlbumsResponse() (response *ListAlbumsResponse) {
+	response = &ListAlbumsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 103 - 0
services/cloudphoto/list_face_photos.go

@@ -0,0 +1,103 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListFacePhotos(request *ListFacePhotosRequest) (response *ListFacePhotosResponse, err error) {
+	response = CreateListFacePhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListFacePhotosWithChan(request *ListFacePhotosRequest) (<-chan *ListFacePhotosResponse, <-chan error) {
+	responseChan := make(chan *ListFacePhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListFacePhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListFacePhotosWithCallback(request *ListFacePhotosRequest, callback func(response *ListFacePhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListFacePhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.ListFacePhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListFacePhotosRequest struct {
+	*requests.RpcRequest
+	Cursor    string `position:"Query" name:"Cursor"`
+	Size      string `position:"Query" name:"Size"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	FaceId    string `position:"Query" name:"FaceId"`
+	State     string `position:"Query" name:"State"`
+	Direction string `position:"Query" name:"Direction"`
+}
+
+type ListFacePhotosResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	NextCursor string `json:"NextCursor"`
+	TotalCount int    `json:"TotalCount"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	Results    []struct {
+		PhotoId int64  `json:"PhotoId"`
+		State   string `json:"State"`
+	} `json:"Results"`
+}
+
+func CreateListFacePhotosRequest() (request *ListFacePhotosRequest) {
+	request = &ListFacePhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListFacePhotos", "", "")
+	return
+}
+
+func CreateListFacePhotosResponse() (response *ListFacePhotosResponse) {
+	response = &ListFacePhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 122 - 0
services/cloudphoto/list_faces.go

@@ -0,0 +1,122 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListFaces(request *ListFacesRequest) (response *ListFacesResponse, err error) {
+	response = CreateListFacesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListFacesWithChan(request *ListFacesRequest) (<-chan *ListFacesResponse, <-chan error) {
+	responseChan := make(chan *ListFacesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListFaces(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListFacesWithCallback(request *ListFacesRequest, callback func(response *ListFacesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListFacesResponse
+		var err error
+		defer close(result)
+		response, err = client.ListFaces(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListFacesRequest struct {
+	*requests.RpcRequest
+	Cursor      string `position:"Query" name:"Cursor"`
+	HasFaceName string `position:"Query" name:"HasFaceName"`
+	Size        string `position:"Query" name:"Size"`
+	LibraryId   string `position:"Query" name:"LibraryId"`
+	StoreName   string `position:"Query" name:"StoreName"`
+	State       string `position:"Query" name:"State"`
+	Direction   string `position:"Query" name:"Direction"`
+}
+
+type ListFacesResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	NextCursor string `json:"NextCursor"`
+	TotalCount int    `json:"TotalCount"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	Faces      []struct {
+		Id          int64    `json:"Id"`
+		Name        string   `json:"Name"`
+		PhotosCount int      `json:"PhotosCount"`
+		State       string   `json:"State"`
+		IsMe        bool     `json:"IsMe"`
+		Ctime       int64    `json:"Ctime"`
+		Mtime       int64    `json:"Mtime"`
+		Axis        []string `json:"Axis"`
+		Cover       struct {
+			Id      int64  `json:"Id"`
+			Title   string `json:"Title"`
+			FileId  string `json:"FileId"`
+			State   string `json:"State"`
+			Md5     string `json:"Md5"`
+			IsVideo bool   `json:"IsVideo"`
+			Width   int64  `json:"Width"`
+			Height  int64  `json:"Height"`
+			Ctime   int64  `json:"Ctime"`
+			Mtime   int64  `json:"Mtime"`
+			Remark  string `json:"Remark"`
+		} `json:"Cover"`
+	} `json:"Faces"`
+}
+
+func CreateListFacesRequest() (request *ListFacesRequest) {
+	request = &ListFacesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListFaces", "", "")
+	return
+}
+
+func CreateListFacesResponse() (response *ListFacesResponse) {
+	response = &ListFacesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 103 - 0
services/cloudphoto/list_moment_photos.go

@@ -0,0 +1,103 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListMomentPhotos(request *ListMomentPhotosRequest) (response *ListMomentPhotosResponse, err error) {
+	response = CreateListMomentPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListMomentPhotosWithChan(request *ListMomentPhotosRequest) (<-chan *ListMomentPhotosResponse, <-chan error) {
+	responseChan := make(chan *ListMomentPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListMomentPhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListMomentPhotosWithCallback(request *ListMomentPhotosRequest, callback func(response *ListMomentPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListMomentPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.ListMomentPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListMomentPhotosRequest struct {
+	*requests.RpcRequest
+	Cursor    string `position:"Query" name:"Cursor"`
+	Size      string `position:"Query" name:"Size"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	State     string `position:"Query" name:"State"`
+	MomentId  string `position:"Query" name:"MomentId"`
+	Direction string `position:"Query" name:"Direction"`
+}
+
+type ListMomentPhotosResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	NextCursor string `json:"NextCursor"`
+	TotalCount int    `json:"TotalCount"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	Results    []struct {
+		PhotoId int64  `json:"PhotoId"`
+		State   string `json:"State"`
+	} `json:"Results"`
+}
+
+func CreateListMomentPhotosRequest() (request *ListMomentPhotosRequest) {
+	request = &ListMomentPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListMomentPhotos", "", "")
+	return
+}
+
+func CreateListMomentPhotosResponse() (response *ListMomentPhotosResponse) {
+	response = &ListMomentPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/cloudphoto/list_moments.go

@@ -0,0 +1,107 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListMoments(request *ListMomentsRequest) (response *ListMomentsResponse, err error) {
+	response = CreateListMomentsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListMomentsWithChan(request *ListMomentsRequest) (<-chan *ListMomentsResponse, <-chan error) {
+	responseChan := make(chan *ListMomentsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListMoments(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListMomentsWithCallback(request *ListMomentsRequest, callback func(response *ListMomentsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListMomentsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListMoments(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListMomentsRequest struct {
+	*requests.RpcRequest
+	Cursor    string `position:"Query" name:"Cursor"`
+	Size      string `position:"Query" name:"Size"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	State     string `position:"Query" name:"State"`
+	Direction string `position:"Query" name:"Direction"`
+}
+
+type ListMomentsResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	NextCursor string `json:"NextCursor"`
+	TotalCount int    `json:"TotalCount"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	Moments    []struct {
+		Id           int64  `json:"Id"`
+		LocationName string `json:"LocationName"`
+		PhotosCount  int    `json:"PhotosCount"`
+		State        string `json:"State"`
+		TakenAt      int64  `json:"TakenAt"`
+		Ctime        int64  `json:"Ctime"`
+		Mtime        int64  `json:"Mtime"`
+	} `json:"Moments"`
+}
+
+func CreateListMomentsRequest() (request *ListMomentsRequest) {
+	request = &ListMomentsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListMoments", "", "")
+	return
+}
+
+func CreateListMomentsResponse() (response *ListMomentsResponse) {
+	response = &ListMomentsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 98 - 0
services/cloudphoto/list_photo_faces.go

@@ -0,0 +1,98 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListPhotoFaces(request *ListPhotoFacesRequest) (response *ListPhotoFacesResponse, err error) {
+	response = CreateListPhotoFacesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListPhotoFacesWithChan(request *ListPhotoFacesRequest) (<-chan *ListPhotoFacesResponse, <-chan error) {
+	responseChan := make(chan *ListPhotoFacesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListPhotoFaces(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListPhotoFacesWithCallback(request *ListPhotoFacesRequest, callback func(response *ListPhotoFacesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListPhotoFacesResponse
+		var err error
+		defer close(result)
+		response, err = client.ListPhotoFaces(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListPhotoFacesRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	PhotoId   string `position:"Query" name:"PhotoId"`
+	StoreName string `position:"Query" name:"StoreName"`
+}
+
+type ListPhotoFacesResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Faces     []struct {
+		FaceId   int64    `json:"FaceId"`
+		FaceName string   `json:"FaceName"`
+		Axis     []string `json:"Axis"`
+	} `json:"Faces"`
+}
+
+func CreateListPhotoFacesRequest() (request *ListPhotoFacesRequest) {
+	request = &ListPhotoFacesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListPhotoFaces", "", "")
+	return
+}
+
+func CreateListPhotoFacesResponse() (response *ListPhotoFacesResponse) {
+	response = &ListPhotoFacesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/cloudphoto/list_photo_stores.go

@@ -0,0 +1,105 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListPhotoStores(request *ListPhotoStoresRequest) (response *ListPhotoStoresResponse, err error) {
+	response = CreateListPhotoStoresResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListPhotoStoresWithChan(request *ListPhotoStoresRequest) (<-chan *ListPhotoStoresResponse, <-chan error) {
+	responseChan := make(chan *ListPhotoStoresResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListPhotoStores(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListPhotoStoresWithCallback(request *ListPhotoStoresRequest, callback func(response *ListPhotoStoresResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListPhotoStoresResponse
+		var err error
+		defer close(result)
+		response, err = client.ListPhotoStores(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListPhotoStoresRequest struct {
+	*requests.RpcRequest
+}
+
+type ListPhotoStoresResponse struct {
+	*responses.BaseResponse
+	Code        string `json:"Code"`
+	Message     string `json:"Message"`
+	RequestId   string `json:"RequestId"`
+	Action      string `json:"Action"`
+	PhotoStores []struct {
+		Id               int64  `json:"Id"`
+		Name             string `json:"Name"`
+		Remark           string `json:"Remark"`
+		AutoCleanEnabled bool   `json:"AutoCleanEnabled"`
+		AutoCleanDays    int    `json:"AutoCleanDays"`
+		DefaultQuota     int64  `json:"DefaultQuota"`
+		Ctime            int64  `json:"Ctime"`
+		Mtime            int64  `json:"Mtime"`
+		Buckets          []struct {
+			Name   string `json:"Name"`
+			Region string `json:"Region"`
+			State  string `json:"State"`
+		} `json:"Buckets"`
+	} `json:"PhotoStores"`
+}
+
+func CreateListPhotoStoresRequest() (request *ListPhotoStoresRequest) {
+	request = &ListPhotoStoresRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListPhotoStores", "", "")
+	return
+}
+
+func CreateListPhotoStoresResponse() (response *ListPhotoStoresResponse) {
+	response = &ListPhotoStoresResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 100 - 0
services/cloudphoto/list_photo_tags.go

@@ -0,0 +1,100 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListPhotoTags(request *ListPhotoTagsRequest) (response *ListPhotoTagsResponse, err error) {
+	response = CreateListPhotoTagsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListPhotoTagsWithChan(request *ListPhotoTagsRequest) (<-chan *ListPhotoTagsResponse, <-chan error) {
+	responseChan := make(chan *ListPhotoTagsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListPhotoTags(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListPhotoTagsWithCallback(request *ListPhotoTagsRequest, callback func(response *ListPhotoTagsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListPhotoTagsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListPhotoTags(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListPhotoTagsRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	PhotoId   string `position:"Query" name:"PhotoId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	Lang      string `position:"Query" name:"Lang"`
+}
+
+type ListPhotoTagsResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Tags      []struct {
+		Id        int64  `json:"Id"`
+		IsSubTag  bool   `json:"IsSubTag"`
+		Name      string `json:"Name"`
+		ParentTag string `json:"ParentTag"`
+	} `json:"Tags"`
+}
+
+func CreateListPhotoTagsRequest() (request *ListPhotoTagsRequest) {
+	request = &ListPhotoTagsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListPhotoTags", "", "")
+	return
+}
+
+func CreateListPhotoTagsResponse() (response *ListPhotoTagsResponse) {
+	response = &ListPhotoTagsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/cloudphoto/list_photos.go

@@ -0,0 +1,114 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListPhotos(request *ListPhotosRequest) (response *ListPhotosResponse, err error) {
+	response = CreateListPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListPhotosWithChan(request *ListPhotosRequest) (<-chan *ListPhotosResponse, <-chan error) {
+	responseChan := make(chan *ListPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListPhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListPhotosWithCallback(request *ListPhotosRequest, callback func(response *ListPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.ListPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListPhotosRequest struct {
+	*requests.RpcRequest
+	Cursor    string `position:"Query" name:"Cursor"`
+	Size      string `position:"Query" name:"Size"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	State     string `position:"Query" name:"State"`
+	Direction string `position:"Query" name:"Direction"`
+}
+
+type ListPhotosResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	NextCursor string `json:"NextCursor"`
+	TotalCount int    `json:"TotalCount"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	Photos     []struct {
+		Id              int64  `json:"Id"`
+		Title           string `json:"Title"`
+		FileId          string `json:"FileId"`
+		State           string `json:"State"`
+		Md5             string `json:"Md5"`
+		IsVideo         bool   `json:"IsVideo"`
+		Remark          string `json:"Remark"`
+		Width           int64  `json:"Width"`
+		Height          int64  `json:"Height"`
+		Ctime           int64  `json:"Ctime"`
+		Mtime           int64  `json:"Mtime"`
+		TakenAt         int64  `json:"TakenAt"`
+		InactiveTime    int64  `json:"InactiveTime"`
+		ShareExpireTime int64  `json:"ShareExpireTime"`
+	} `json:"Photos"`
+}
+
+func CreateListPhotosRequest() (request *ListPhotosRequest) {
+	request = &ListPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListPhotos", "", "")
+	return
+}
+
+func CreateListPhotosResponse() (response *ListPhotosResponse) {
+	response = &ListPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 99 - 0
services/cloudphoto/list_registered_tags.go

@@ -0,0 +1,99 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListRegisteredTags(request *ListRegisteredTagsRequest) (response *ListRegisteredTagsResponse, err error) {
+	response = CreateListRegisteredTagsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListRegisteredTagsWithChan(request *ListRegisteredTagsRequest) (<-chan *ListRegisteredTagsResponse, <-chan error) {
+	responseChan := make(chan *ListRegisteredTagsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListRegisteredTags(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListRegisteredTagsWithCallback(request *ListRegisteredTagsRequest, callback func(response *ListRegisteredTagsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListRegisteredTagsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListRegisteredTags(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListRegisteredTagsRequest struct {
+	*requests.RpcRequest
+	StoreName string    `position:"Query" name:"StoreName"`
+	Lang      *[]string `position:"Query" name:"Lang"  type:"Repeated"`
+}
+
+type ListRegisteredTagsResponse struct {
+	*responses.BaseResponse
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	RequestId      string `json:"RequestId"`
+	Action         string `json:"Action"`
+	RegisteredTags []struct {
+		TagKey    string `json:"TagKey"`
+		TagValues []struct {
+			Lang string `json:"Lang"`
+			Text string `json:"Text"`
+		} `json:"TagValues"`
+	} `json:"RegisteredTags"`
+}
+
+func CreateListRegisteredTagsRequest() (request *ListRegisteredTagsRequest) {
+	request = &ListRegisteredTagsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListRegisteredTags", "", "")
+	return
+}
+
+func CreateListRegisteredTagsResponse() (response *ListRegisteredTagsResponse) {
+	response = &ListRegisteredTagsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 103 - 0
services/cloudphoto/list_tag_photos.go

@@ -0,0 +1,103 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListTagPhotos(request *ListTagPhotosRequest) (response *ListTagPhotosResponse, err error) {
+	response = CreateListTagPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+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)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+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
+}
+
+type ListTagPhotosRequest struct {
+	*requests.RpcRequest
+	Cursor    string `position:"Query" name:"Cursor"`
+	Size      string `position:"Query" name:"Size"`
+	TagId     string `position:"Query" name:"TagId"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	State     string `position:"Query" name:"State"`
+	Direction string `position:"Query" name:"Direction"`
+}
+
+type ListTagPhotosResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	NextCursor string `json:"NextCursor"`
+	TotalCount int    `json:"TotalCount"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	Results    []struct {
+		PhotoId int64  `json:"PhotoId"`
+		State   string `json:"State"`
+	} `json:"Results"`
+}
+
+func CreateListTagPhotosRequest() (request *ListTagPhotosRequest) {
+	request = &ListTagPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListTagPhotos", "", "")
+	return
+}
+
+func CreateListTagPhotosResponse() (response *ListTagPhotosResponse) {
+	response = &ListTagPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/cloudphoto/list_tags.go

@@ -0,0 +1,112 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListTags(request *ListTagsRequest) (response *ListTagsResponse, err error) {
+	response = CreateListTagsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListTagsWithChan(request *ListTagsRequest) (<-chan *ListTagsResponse, <-chan error) {
+	responseChan := make(chan *ListTagsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListTags(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListTagsWithCallback(request *ListTagsRequest, callback func(response *ListTagsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListTagsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListTags(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListTagsRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	Lang      string `position:"Query" name:"Lang"`
+}
+
+type ListTagsResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Tags      []struct {
+		Id        int64  `json:"Id"`
+		Name      string `json:"Name"`
+		IsSubTag  bool   `json:"IsSubTag"`
+		ParentTag string `json:"ParentTag"`
+		Cover     struct {
+			Id      int64  `json:"Id"`
+			Title   string `json:"Title"`
+			FileId  string `json:"FileId"`
+			State   string `json:"State"`
+			Md5     string `json:"Md5"`
+			IsVideo bool   `json:"IsVideo"`
+			Remark  string `json:"Remark"`
+			Width   int64  `json:"Width"`
+			Height  int64  `json:"Height"`
+			Ctime   int64  `json:"Ctime"`
+			Mtime   int64  `json:"Mtime"`
+		} `json:"Cover"`
+	} `json:"Tags"`
+}
+
+func CreateListTagsRequest() (request *ListTagsRequest) {
+	request = &ListTagsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListTags", "", "")
+	return
+}
+
+func CreateListTagsResponse() (response *ListTagsResponse) {
+	response = &ListTagsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/cloudphoto/list_time_line_photos.go

@@ -0,0 +1,116 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListTimeLinePhotos(request *ListTimeLinePhotosRequest) (response *ListTimeLinePhotosResponse, err error) {
+	response = CreateListTimeLinePhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListTimeLinePhotosWithChan(request *ListTimeLinePhotosRequest) (<-chan *ListTimeLinePhotosResponse, <-chan error) {
+	responseChan := make(chan *ListTimeLinePhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListTimeLinePhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListTimeLinePhotosWithCallback(request *ListTimeLinePhotosRequest, callback func(response *ListTimeLinePhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListTimeLinePhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.ListTimeLinePhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListTimeLinePhotosRequest struct {
+	*requests.RpcRequest
+	Size      string `position:"Query" name:"Size"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	EndTime   string `position:"Query" name:"EndTime"`
+	StoreName string `position:"Query" name:"StoreName"`
+	Page      string `position:"Query" name:"Page"`
+	StartTime string `position:"Query" name:"StartTime"`
+	FilterBy  string `position:"Query" name:"FilterBy"`
+	Direction string `position:"Query" name:"Direction"`
+	Order     string `position:"Query" name:"Order"`
+}
+
+type ListTimeLinePhotosResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	TotalCount int    `json:"TotalCount"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	Photos     []struct {
+		Id              int64  `json:"Id"`
+		Title           string `json:"Title"`
+		FileId          string `json:"FileId"`
+		State           string `json:"State"`
+		Md5             string `json:"Md5"`
+		IsVideo         bool   `json:"IsVideo"`
+		Remark          string `json:"Remark"`
+		Width           int64  `json:"Width"`
+		Height          int64  `json:"Height"`
+		Ctime           int64  `json:"Ctime"`
+		Mtime           int64  `json:"Mtime"`
+		TakenAt         int64  `json:"TakenAt"`
+		ShareExpireTime int64  `json:"ShareExpireTime"`
+		Like            int64  `json:"Like"`
+	} `json:"Photos"`
+}
+
+func CreateListTimeLinePhotosRequest() (request *ListTimeLinePhotosRequest) {
+	request = &ListTimeLinePhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListTimeLinePhotos", "", "")
+	return
+}
+
+func CreateListTimeLinePhotosResponse() (response *ListTimeLinePhotosResponse) {
+	response = &ListTimeLinePhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 122 - 0
services/cloudphoto/list_time_lines.go

@@ -0,0 +1,122 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ListTimeLines(request *ListTimeLinesRequest) (response *ListTimeLinesResponse, err error) {
+	response = CreateListTimeLinesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListTimeLinesWithChan(request *ListTimeLinesRequest) (<-chan *ListTimeLinesResponse, <-chan error) {
+	responseChan := make(chan *ListTimeLinesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListTimeLines(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListTimeLinesWithCallback(request *ListTimeLinesRequest, callback func(response *ListTimeLinesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListTimeLinesResponse
+		var err error
+		defer close(result)
+		response, err = client.ListTimeLines(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListTimeLinesRequest struct {
+	*requests.RpcRequest
+	Cursor        string `position:"Query" name:"Cursor"`
+	PhotoSize     string `position:"Query" name:"PhotoSize"`
+	TimeLineCount string `position:"Query" name:"TimeLineCount"`
+	LibraryId     string `position:"Query" name:"LibraryId"`
+	StoreName     string `position:"Query" name:"StoreName"`
+	TimeLineUnit  string `position:"Query" name:"TimeLineUnit"`
+	FilterBy      string `position:"Query" name:"FilterBy"`
+	Direction     string `position:"Query" name:"Direction"`
+	Order         string `position:"Query" name:"Order"`
+}
+
+type ListTimeLinesResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	NextCursor int    `json:"NextCursor"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	TimeLines  []struct {
+		StartTime   int64 `json:"StartTime"`
+		EndTime     int64 `json:"EndTime"`
+		TotalCount  int   `json:"TotalCount"`
+		PhotosCount int   `json:"PhotosCount"`
+		Photos      []struct {
+			Id              int64  `json:"Id"`
+			Title           string `json:"Title"`
+			FileId          string `json:"FileId"`
+			State           string `json:"State"`
+			Md5             string `json:"Md5"`
+			IsVideo         bool   `json:"IsVideo"`
+			Remark          string `json:"Remark"`
+			Width           int64  `json:"Width"`
+			Height          int64  `json:"Height"`
+			Ctime           int64  `json:"Ctime"`
+			Mtime           int64  `json:"Mtime"`
+			TakenAt         int64  `json:"TakenAt"`
+			ShareExpireTime int64  `json:"ShareExpireTime"`
+			Like            int64  `json:"Like"`
+		} `json:"Photos"`
+	} `json:"TimeLines"`
+}
+
+func CreateListTimeLinesRequest() (request *ListTimeLinesRequest) {
+	request = &ListTimeLinesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ListTimeLines", "", "")
+	return
+}
+
+func CreateListTimeLinesResponse() (response *ListTimeLinesResponse) {
+	response = &ListTimeLinesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 99 - 0
services/cloudphoto/merge_faces.go

@@ -0,0 +1,99 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) MergeFaces(request *MergeFacesRequest) (response *MergeFacesResponse, err error) {
+	response = CreateMergeFacesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) MergeFacesWithChan(request *MergeFacesRequest) (<-chan *MergeFacesResponse, <-chan error) {
+	responseChan := make(chan *MergeFacesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.MergeFaces(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) MergeFacesWithCallback(request *MergeFacesRequest, callback func(response *MergeFacesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *MergeFacesResponse
+		var err error
+		defer close(result)
+		response, err = client.MergeFaces(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type MergeFacesRequest struct {
+	*requests.RpcRequest
+	LibraryId    string    `position:"Query" name:"LibraryId"`
+	TargetFaceId string    `position:"Query" name:"TargetFaceId"`
+	StoreName    string    `position:"Query" name:"StoreName"`
+	FaceId       *[]string `position:"Query" name:"FaceId"  type:"Repeated"`
+}
+
+type MergeFacesResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateMergeFacesRequest() (request *MergeFacesRequest) {
+	request = &MergeFacesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "MergeFaces", "", "")
+	return
+}
+
+func CreateMergeFacesResponse() (response *MergeFacesResponse) {
+	response = &MergeFacesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 100 - 0
services/cloudphoto/move_album_photos.go

@@ -0,0 +1,100 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) MoveAlbumPhotos(request *MoveAlbumPhotosRequest) (response *MoveAlbumPhotosResponse, err error) {
+	response = CreateMoveAlbumPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) MoveAlbumPhotosWithChan(request *MoveAlbumPhotosRequest) (<-chan *MoveAlbumPhotosResponse, <-chan error) {
+	responseChan := make(chan *MoveAlbumPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.MoveAlbumPhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) MoveAlbumPhotosWithCallback(request *MoveAlbumPhotosRequest, callback func(response *MoveAlbumPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *MoveAlbumPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.MoveAlbumPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type MoveAlbumPhotosRequest struct {
+	*requests.RpcRequest
+	SourceAlbumId string    `position:"Query" name:"SourceAlbumId"`
+	TargetAlbumId string    `position:"Query" name:"TargetAlbumId"`
+	LibraryId     string    `position:"Query" name:"LibraryId"`
+	PhotoId       *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName     string    `position:"Query" name:"StoreName"`
+}
+
+type MoveAlbumPhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateMoveAlbumPhotosRequest() (request *MoveAlbumPhotosRequest) {
+	request = &MoveAlbumPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "MoveAlbumPhotos", "", "")
+	return
+}
+
+func CreateMoveAlbumPhotosResponse() (response *MoveAlbumPhotosResponse) {
+	response = &MoveAlbumPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 100 - 0
services/cloudphoto/move_face_photos.go

@@ -0,0 +1,100 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) MoveFacePhotos(request *MoveFacePhotosRequest) (response *MoveFacePhotosResponse, err error) {
+	response = CreateMoveFacePhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) MoveFacePhotosWithChan(request *MoveFacePhotosRequest) (<-chan *MoveFacePhotosResponse, <-chan error) {
+	responseChan := make(chan *MoveFacePhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.MoveFacePhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) MoveFacePhotosWithCallback(request *MoveFacePhotosRequest, callback func(response *MoveFacePhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *MoveFacePhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.MoveFacePhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type MoveFacePhotosRequest struct {
+	*requests.RpcRequest
+	LibraryId    string    `position:"Query" name:"LibraryId"`
+	TargetFaceId string    `position:"Query" name:"TargetFaceId"`
+	PhotoId      *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName    string    `position:"Query" name:"StoreName"`
+	SourceFaceId string    `position:"Query" name:"SourceFaceId"`
+}
+
+type MoveFacePhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateMoveFacePhotosRequest() (request *MoveFacePhotosRequest) {
+	request = &MoveFacePhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "MoveFacePhotos", "", "")
+	return
+}
+
+func CreateMoveFacePhotosResponse() (response *MoveFacePhotosResponse) {
+	response = &MoveFacePhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 98 - 0
services/cloudphoto/reactivate_photos.go

@@ -0,0 +1,98 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ReactivatePhotos(request *ReactivatePhotosRequest) (response *ReactivatePhotosResponse, err error) {
+	response = CreateReactivatePhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ReactivatePhotosWithChan(request *ReactivatePhotosRequest) (<-chan *ReactivatePhotosResponse, <-chan error) {
+	responseChan := make(chan *ReactivatePhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ReactivatePhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ReactivatePhotosWithCallback(request *ReactivatePhotosRequest, callback func(response *ReactivatePhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ReactivatePhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.ReactivatePhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ReactivatePhotosRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+}
+
+type ReactivatePhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateReactivatePhotosRequest() (request *ReactivatePhotosRequest) {
+	request = &ReactivatePhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ReactivatePhotos", "", "")
+	return
+}
+
+func CreateReactivatePhotosResponse() (response *ReactivatePhotosResponse) {
+	response = &ReactivatePhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 94 - 0
services/cloudphoto/register_tag.go

@@ -0,0 +1,94 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) RegisterTag(request *RegisterTagRequest) (response *RegisterTagResponse, err error) {
+	response = CreateRegisterTagResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) RegisterTagWithChan(request *RegisterTagRequest) (<-chan *RegisterTagResponse, <-chan error) {
+	responseChan := make(chan *RegisterTagResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RegisterTag(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) RegisterTagWithCallback(request *RegisterTagRequest, callback func(response *RegisterTagResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RegisterTagResponse
+		var err error
+		defer close(result)
+		response, err = client.RegisterTag(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type RegisterTagRequest struct {
+	*requests.RpcRequest
+	StoreName string `position:"Query" name:"StoreName"`
+	Text      string `position:"Query" name:"Text"`
+	TagKey    string `position:"Query" name:"TagKey"`
+	Lang      string `position:"Query" name:"Lang"`
+}
+
+type RegisterTagResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateRegisterTagRequest() (request *RegisterTagRequest) {
+	request = &RegisterTagRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "RegisterTag", "", "")
+	return
+}
+
+func CreateRegisterTagResponse() (response *RegisterTagResponse) {
+	response = &RegisterTagResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 99 - 0
services/cloudphoto/remove_album_photos.go

@@ -0,0 +1,99 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) RemoveAlbumPhotos(request *RemoveAlbumPhotosRequest) (response *RemoveAlbumPhotosResponse, err error) {
+	response = CreateRemoveAlbumPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) RemoveAlbumPhotosWithChan(request *RemoveAlbumPhotosRequest) (<-chan *RemoveAlbumPhotosResponse, <-chan error) {
+	responseChan := make(chan *RemoveAlbumPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RemoveAlbumPhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) RemoveAlbumPhotosWithCallback(request *RemoveAlbumPhotosRequest, callback func(response *RemoveAlbumPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RemoveAlbumPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.RemoveAlbumPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type RemoveAlbumPhotosRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	AlbumId   string    `position:"Query" name:"AlbumId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+}
+
+type RemoveAlbumPhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateRemoveAlbumPhotosRequest() (request *RemoveAlbumPhotosRequest) {
+	request = &RemoveAlbumPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "RemoveAlbumPhotos", "", "")
+	return
+}
+
+func CreateRemoveAlbumPhotosResponse() (response *RemoveAlbumPhotosResponse) {
+	response = &RemoveAlbumPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 99 - 0
services/cloudphoto/remove_face_photos.go

@@ -0,0 +1,99 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) RemoveFacePhotos(request *RemoveFacePhotosRequest) (response *RemoveFacePhotosResponse, err error) {
+	response = CreateRemoveFacePhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) RemoveFacePhotosWithChan(request *RemoveFacePhotosRequest) (<-chan *RemoveFacePhotosResponse, <-chan error) {
+	responseChan := make(chan *RemoveFacePhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RemoveFacePhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) RemoveFacePhotosWithCallback(request *RemoveFacePhotosRequest, callback func(response *RemoveFacePhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RemoveFacePhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.RemoveFacePhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type RemoveFacePhotosRequest struct {
+	*requests.RpcRequest
+	LibraryId string    `position:"Query" name:"LibraryId"`
+	PhotoId   *[]string `position:"Query" name:"PhotoId"  type:"Repeated"`
+	StoreName string    `position:"Query" name:"StoreName"`
+	FaceId    string    `position:"Query" name:"FaceId"`
+}
+
+type RemoveFacePhotosResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+	Results   []struct {
+		Id      int64  `json:"Id"`
+		Code    string `json:"Code"`
+		Message string `json:"Message"`
+	} `json:"Results"`
+}
+
+func CreateRemoveFacePhotosRequest() (request *RemoveFacePhotosRequest) {
+	request = &RemoveFacePhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "RemoveFacePhotos", "", "")
+	return
+}
+
+func CreateRemoveFacePhotosResponse() (response *RemoveFacePhotosResponse) {
+	response = &RemoveFacePhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 94 - 0
services/cloudphoto/rename_album.go

@@ -0,0 +1,94 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) RenameAlbum(request *RenameAlbumRequest) (response *RenameAlbumResponse, err error) {
+	response = CreateRenameAlbumResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) RenameAlbumWithChan(request *RenameAlbumRequest) (<-chan *RenameAlbumResponse, <-chan error) {
+	responseChan := make(chan *RenameAlbumResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RenameAlbum(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) RenameAlbumWithCallback(request *RenameAlbumRequest, callback func(response *RenameAlbumResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RenameAlbumResponse
+		var err error
+		defer close(result)
+		response, err = client.RenameAlbum(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type RenameAlbumRequest struct {
+	*requests.RpcRequest
+	AlbumName string `position:"Query" name:"AlbumName"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	AlbumId   string `position:"Query" name:"AlbumId"`
+	StoreName string `position:"Query" name:"StoreName"`
+}
+
+type RenameAlbumResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateRenameAlbumRequest() (request *RenameAlbumRequest) {
+	request = &RenameAlbumRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "RenameAlbum", "", "")
+	return
+}
+
+func CreateRenameAlbumResponse() (response *RenameAlbumResponse) {
+	response = &RenameAlbumResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 94 - 0
services/cloudphoto/rename_face.go

@@ -0,0 +1,94 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) RenameFace(request *RenameFaceRequest) (response *RenameFaceResponse, err error) {
+	response = CreateRenameFaceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) RenameFaceWithChan(request *RenameFaceRequest) (<-chan *RenameFaceResponse, <-chan error) {
+	responseChan := make(chan *RenameFaceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RenameFace(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) RenameFaceWithCallback(request *RenameFaceRequest, callback func(response *RenameFaceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RenameFaceResponse
+		var err error
+		defer close(result)
+		response, err = client.RenameFace(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type RenameFaceRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	FaceId    string `position:"Query" name:"FaceId"`
+	FaceName  string `position:"Query" name:"FaceName"`
+}
+
+type RenameFaceResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateRenameFaceRequest() (request *RenameFaceRequest) {
+	request = &RenameFaceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "RenameFace", "", "")
+	return
+}
+
+func CreateRenameFaceResponse() (response *RenameFaceResponse) {
+	response = &RenameFaceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/cloudphoto/search_photos.go

@@ -0,0 +1,110 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) SearchPhotos(request *SearchPhotosRequest) (response *SearchPhotosResponse, err error) {
+	response = CreateSearchPhotosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) SearchPhotosWithChan(request *SearchPhotosRequest) (<-chan *SearchPhotosResponse, <-chan error) {
+	responseChan := make(chan *SearchPhotosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SearchPhotos(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) SearchPhotosWithCallback(request *SearchPhotosRequest, callback func(response *SearchPhotosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SearchPhotosResponse
+		var err error
+		defer close(result)
+		response, err = client.SearchPhotos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type SearchPhotosRequest struct {
+	*requests.RpcRequest
+	Size      string `position:"Query" name:"Size"`
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	Page      string `position:"Query" name:"Page"`
+	Keyword   string `position:"Query" name:"Keyword"`
+}
+
+type SearchPhotosResponse struct {
+	*responses.BaseResponse
+	Code       string `json:"Code"`
+	Message    string `json:"Message"`
+	TotalCount int    `json:"TotalCount"`
+	RequestId  string `json:"RequestId"`
+	Action     string `json:"Action"`
+	Photos     []struct {
+		Id              int64  `json:"Id"`
+		Title           string `json:"Title"`
+		FileId          string `json:"FileId"`
+		State           string `json:"State"`
+		Md5             string `json:"Md5"`
+		IsVideo         bool   `json:"IsVideo"`
+		Width           int64  `json:"Width"`
+		Height          int64  `json:"Height"`
+		Ctime           int64  `json:"Ctime"`
+		Mtime           int64  `json:"Mtime"`
+		TakenAt         int64  `json:"TakenAt"`
+		ShareExpireTime int64  `json:"ShareExpireTime"`
+	} `json:"Photos"`
+}
+
+func CreateSearchPhotosRequest() (request *SearchPhotosRequest) {
+	request = &SearchPhotosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "SearchPhotos", "", "")
+	return
+}
+
+func CreateSearchPhotosResponse() (response *SearchPhotosResponse) {
+	response = &SearchPhotosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 94 - 0
services/cloudphoto/set_album_cover.go

@@ -0,0 +1,94 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) SetAlbumCover(request *SetAlbumCoverRequest) (response *SetAlbumCoverResponse, err error) {
+	response = CreateSetAlbumCoverResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) SetAlbumCoverWithChan(request *SetAlbumCoverRequest) (<-chan *SetAlbumCoverResponse, <-chan error) {
+	responseChan := make(chan *SetAlbumCoverResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SetAlbumCover(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) SetAlbumCoverWithCallback(request *SetAlbumCoverRequest, callback func(response *SetAlbumCoverResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SetAlbumCoverResponse
+		var err error
+		defer close(result)
+		response, err = client.SetAlbumCover(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type SetAlbumCoverRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	AlbumId   string `position:"Query" name:"AlbumId"`
+	PhotoId   string `position:"Query" name:"PhotoId"`
+	StoreName string `position:"Query" name:"StoreName"`
+}
+
+type SetAlbumCoverResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateSetAlbumCoverRequest() (request *SetAlbumCoverRequest) {
+	request = &SetAlbumCoverRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "SetAlbumCover", "", "")
+	return
+}
+
+func CreateSetAlbumCoverResponse() (response *SetAlbumCoverResponse) {
+	response = &SetAlbumCoverResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 94 - 0
services/cloudphoto/set_face_cover.go

@@ -0,0 +1,94 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) SetFaceCover(request *SetFaceCoverRequest) (response *SetFaceCoverResponse, err error) {
+	response = CreateSetFaceCoverResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) SetFaceCoverWithChan(request *SetFaceCoverRequest) (<-chan *SetFaceCoverResponse, <-chan error) {
+	responseChan := make(chan *SetFaceCoverResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SetFaceCover(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) SetFaceCoverWithCallback(request *SetFaceCoverRequest, callback func(response *SetFaceCoverResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SetFaceCoverResponse
+		var err error
+		defer close(result)
+		response, err = client.SetFaceCover(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type SetFaceCoverRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	PhotoId   string `position:"Query" name:"PhotoId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	FaceId    string `position:"Query" name:"FaceId"`
+}
+
+type SetFaceCoverResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateSetFaceCoverRequest() (request *SetFaceCoverRequest) {
+	request = &SetFaceCoverRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "SetFaceCover", "", "")
+	return
+}
+
+func CreateSetFaceCoverResponse() (response *SetFaceCoverResponse) {
+	response = &SetFaceCoverResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 93 - 0
services/cloudphoto/set_me.go

@@ -0,0 +1,93 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) SetMe(request *SetMeRequest) (response *SetMeResponse, err error) {
+	response = CreateSetMeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) SetMeWithChan(request *SetMeRequest) (<-chan *SetMeResponse, <-chan error) {
+	responseChan := make(chan *SetMeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SetMe(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) SetMeWithCallback(request *SetMeRequest, callback func(response *SetMeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SetMeResponse
+		var err error
+		defer close(result)
+		response, err = client.SetMe(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type SetMeRequest struct {
+	*requests.RpcRequest
+	LibraryId string `position:"Query" name:"LibraryId"`
+	StoreName string `position:"Query" name:"StoreName"`
+	FaceId    string `position:"Query" name:"FaceId"`
+}
+
+type SetMeResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateSetMeRequest() (request *SetMeRequest) {
+	request = &SetMeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "SetMe", "", "")
+	return
+}
+
+func CreateSetMeResponse() (response *SetMeResponse) {
+	response = &SetMeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 93 - 0
services/cloudphoto/set_quota.go

@@ -0,0 +1,93 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) SetQuota(request *SetQuotaRequest) (response *SetQuotaResponse, err error) {
+	response = CreateSetQuotaResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) SetQuotaWithChan(request *SetQuotaRequest) (<-chan *SetQuotaResponse, <-chan error) {
+	responseChan := make(chan *SetQuotaResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SetQuota(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) SetQuotaWithCallback(request *SetQuotaRequest, callback func(response *SetQuotaResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SetQuotaResponse
+		var err error
+		defer close(result)
+		response, err = client.SetQuota(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type SetQuotaRequest struct {
+	*requests.RpcRequest
+	TotalQuota string `position:"Query" name:"TotalQuota"`
+	LibraryId  string `position:"Query" name:"LibraryId"`
+	StoreName  string `position:"Query" name:"StoreName"`
+}
+
+type SetQuotaResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateSetQuotaRequest() (request *SetQuotaRequest) {
+	request = &SetQuotaRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "SetQuota", "", "")
+	return
+}
+
+func CreateSetQuotaResponse() (response *SetQuotaResponse) {
+	response = &SetQuotaResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 95 - 0
services/cloudphoto/tag_photo.go

@@ -0,0 +1,95 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) TagPhoto(request *TagPhotoRequest) (response *TagPhotoResponse, err error) {
+	response = CreateTagPhotoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) TagPhotoWithChan(request *TagPhotoRequest) (<-chan *TagPhotoResponse, <-chan error) {
+	responseChan := make(chan *TagPhotoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.TagPhoto(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) TagPhotoWithCallback(request *TagPhotoRequest, callback func(response *TagPhotoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *TagPhotoResponse
+		var err error
+		defer close(result)
+		response, err = client.TagPhoto(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type TagPhotoRequest struct {
+	*requests.RpcRequest
+	LibraryId  string    `position:"Query" name:"LibraryId"`
+	Confidence *[]string `position:"Query" name:"Confidence"  type:"Repeated"`
+	StoreName  string    `position:"Query" name:"StoreName"`
+	PhotoId    string    `position:"Query" name:"PhotoId"`
+	TagKey     *[]string `position:"Query" name:"TagKey"  type:"Repeated"`
+}
+
+type TagPhotoResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateTagPhotoRequest() (request *TagPhotoRequest) {
+	request = &TagPhotoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "TagPhoto", "", "")
+	return
+}
+
+func CreateTagPhotoResponse() (response *TagPhotoResponse) {
+	response = &TagPhotoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 93 - 0
services/cloudphoto/toggle_features.go

@@ -0,0 +1,93 @@
+package cloudphoto
+
+//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"
+)
+
+func (client *Client) ToggleFeatures(request *ToggleFeaturesRequest) (response *ToggleFeaturesResponse, err error) {
+	response = CreateToggleFeaturesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ToggleFeaturesWithChan(request *ToggleFeaturesRequest) (<-chan *ToggleFeaturesResponse, <-chan error) {
+	responseChan := make(chan *ToggleFeaturesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ToggleFeatures(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ToggleFeaturesWithCallback(request *ToggleFeaturesRequest, callback func(response *ToggleFeaturesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ToggleFeaturesResponse
+		var err error
+		defer close(result)
+		response, err = client.ToggleFeatures(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ToggleFeaturesRequest struct {
+	*requests.RpcRequest
+	DisabledFeatures *[]string `position:"Query" name:"DisabledFeatures"  type:"Repeated"`
+	StoreName        string    `position:"Query" name:"StoreName"`
+	EnabledFeatures  *[]string `position:"Query" name:"EnabledFeatures"  type:"Repeated"`
+}
+
+type ToggleFeaturesResponse struct {
+	*responses.BaseResponse
+	Code      string `json:"Code"`
+	Message   string `json:"Message"`
+	RequestId string `json:"RequestId"`
+	Action    string `json:"Action"`
+}
+
+func CreateToggleFeaturesRequest() (request *ToggleFeaturesRequest) {
+	request = &ToggleFeaturesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CloudPhoto", "2017-07-11", "ToggleFeatures", "", "")
+	return
+}
+
+func CreateToggleFeaturesResponse() (response *ToggleFeaturesResponse) {
+	response = &ToggleFeaturesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}