Browse Source

VOD SDK Auto Released By guzhaoyuan,Version:1.55.1

Signed-off-by: haowei.yao <haowei.yao@alibaba-inc.com>
haowei.yao 6 years ago
parent
commit
b1ebd64d29
63 changed files with 2378 additions and 31 deletions
  1. 12 0
      ChangeLog.txt
  2. 1 0
      services/vod/add_category.go
  3. 1 0
      services/vod/add_editing_project.go
  4. 111 0
      services/vod/attach_app_policy_to_identity.go
  5. 109 0
      services/vod/create_app_info.go
  6. 3 0
      services/vod/create_upload_attached_media.go
  7. 1 0
      services/vod/create_upload_image.go
  8. 1 0
      services/vod/create_upload_video.go
  9. 107 0
      services/vod/delete_app_info.go
  10. 107 0
      services/vod/delete_attached_media.go
  11. 108 0
      services/vod/delete_message_callback.go
  12. 109 0
      services/vod/delete_multipart_upload.go
  13. 3 1
      services/vod/delete_video.go
  14. 111 0
      services/vod/detach_app_policy_from_identity.go
  15. 109 0
      services/vod/get_app_infos.go
  16. 111 0
      services/vod/get_attached_media_info.go
  17. 1 0
      services/vod/get_categories.go
  18. 1 0
      services/vod/get_editing_project_materials.go
  19. 1 0
      services/vod/get_image_info.go
  20. 109 0
      services/vod/get_message_callback.go
  21. 1 0
      services/vod/get_video_info.go
  22. 1 0
      services/vod/get_video_infos.go
  23. 110 0
      services/vod/list_app_info.go
  24. 109 0
      services/vod/list_app_policies_for_identity.go
  25. 111 0
      services/vod/move_app_resource.go
  26. 116 0
      services/vod/set_message_callback.go
  27. 27 0
      services/vod/struct_app_info.go
  28. 21 0
      services/vod/struct_app_info_list_in_get_app_infos.go
  29. 21 0
      services/vod/struct_app_info_list_in_list_app_info.go
  30. 27 0
      services/vod/struct_app_policy.go
  31. 21 0
      services/vod/struct_app_policy_list.go
  32. 34 0
      services/vod/struct_attached_media.go
  33. 34 0
      services/vod/struct_attached_media_in_search_media.go
  34. 21 0
      services/vod/struct_attached_media_list.go
  35. 1 0
      services/vod/struct_audio.go
  36. 21 0
      services/vod/struct_categories_in_get_attached_media_info.go
  37. 21 0
      services/vod/struct_categories_in_search_media.go
  38. 2 0
      services/vod/struct_category.go
  39. 21 0
      services/vod/struct_failed_policy_names_in_attach_app_policy_to_identity.go
  40. 21 0
      services/vod/struct_failed_policy_names_in_detach_app_policy_from_identity.go
  41. 21 0
      services/vod/struct_failed_resource_ids.go
  42. 21 0
      services/vod/struct_forbidden_video_ids_in_delete_video.go
  43. 21 0
      services/vod/struct_forbidden_video_ids_in_update_video_infos.go
  44. 1 0
      services/vod/struct_image.go
  45. 1 0
      services/vod/struct_image_info.go
  46. 7 6
      services/vod/struct_media.go
  47. 28 0
      services/vod/struct_message_callback.go
  48. 21 0
      services/vod/struct_non_exist_app_ids.go
  49. 21 0
      services/vod/struct_non_exist_media_ids_in_delete_attached_media.go
  50. 21 0
      services/vod/struct_non_exist_media_ids_in_get_attached_media_info.go
  51. 21 0
      services/vod/struct_non_exist_media_ids_in_update_attached_media_infos.go
  52. 21 0
      services/vod/struct_non_exist_policy_names_in_attach_app_policy_to_identity.go
  53. 21 0
      services/vod/struct_non_exist_policy_names_in_detach_app_policy_from_identity.go
  54. 21 0
      services/vod/struct_non_exist_resource_ids.go
  55. 21 0
      services/vod/struct_non_exist_video_ids_in_delete_video.go
  56. 11 8
      services/vod/struct_project.go
  57. 17 14
      services/vod/struct_transcode_template.go
  58. 1 0
      services/vod/struct_video.go
  59. 2 0
      services/vod/struct_video_in_get_video_info.go
  60. 1 0
      services/vod/struct_video_in_get_video_list.go
  61. 110 0
      services/vod/update_app_info.go
  62. 108 0
      services/vod/update_attached_media_infos.go
  63. 3 2
      services/vod/update_video_infos.go

+ 12 - 0
ChangeLog.txt

@@ -1,3 +1,15 @@
+2019-04-11 Version: 1.55.1
+1, Add some new apis to manage VoD's App, such as CreateAppInfo, GetAppInfos, ListAppInfos, UpdateAppInfo, DeleteAppInfo, AttachAppPolicyToIdentity, DetachAppPolicyFromIdentity, ListAppPoliciesForIdentity and MoveAppResource.
+2, Add new apis SetMessageCallback, GetMessageCallback and DeleteMessageCallback to manage message callback configuration.
+3, Add new apis GetAttachedMedia, UpdateAttachedMediaInfos and DeleteAttachedMedia to manage attached media information.
+4, Add a new api named DeleteMultipartUpload to clean up the fragmented files generated during the upload process.
+5, Add a new field named AppId to some apis supporting the VoD App feature, such as CreateUploadVideo, SearchMedia, GetVideoInfo, GetVideoInfos; Add new fields named NonExistVideoIds and ForbiddenVideoIds to DeleteVideo api response; Add a new field named ForbiddenVideoIds to UpdateVideoInfos api response.
+6, The Editing supports multi-region and multi-materials. Add new fields named StorageLocation and RegionId in Project struct to GetEditingProject api response; Add new fields named StorageLocation, RegionId and Duration in ProjectList struct to SearchEditingProject api response; Add a new field named MaterialType to GetEditingProjectMaterials api request.
+7, Add new fields named TranscodeFileRegular, Clip and Rotate to GetTranscodeTemplateGroup api response to support the custom file path feature.
+8, Add a new field named AttachedMedia to api response to support the attached media feature.
+9, Add a new field named SubTotal to GetCategories response to show the number of sub category.
+10, Add a new field named AdditionType to GetVideoInfo and GetVideoInfos api request to fetch the custom media info and the corresponding field is CustomMediaInfo.
+
 2019-04-11 Version: 1.55.0
 1, Release AddImage/SearchImage/DeleteImage OpenApi.
 2, Add 'SearchByName' feature to SearchImage

+ 1 - 0
services/vod/add_category.go

@@ -79,6 +79,7 @@ type AddCategoryRequest struct {
 	ResourceOwnerId      string           `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerId              string           `position:"Query" name:"OwnerId"`
+	Type                 string           `position:"Query" name:"Type"`
 	ParentId             requests.Integer `position:"Query" name:"ParentId"`
 	CateName             string           `position:"Query" name:"CateName"`
 }

+ 1 - 0
services/vod/add_editing_project.go

@@ -77,6 +77,7 @@ func (client *Client) AddEditingProjectWithCallback(request *AddEditingProjectRe
 type AddEditingProjectRequest struct {
 	*requests.RpcRequest
 	CoverURL             string `position:"Query" name:"CoverURL"`
+	Division             string `position:"Query" name:"Division"`
 	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string `position:"Query" name:"OwnerAccount"`

+ 111 - 0
services/vod/attach_app_policy_to_identity.go

@@ -0,0 +1,111 @@
+package vod
+
+//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"
+)
+
+// AttachAppPolicyToIdentity invokes the vod.AttachAppPolicyToIdentity API synchronously
+// api document: https://help.aliyun.com/api/vod/attachapppolicytoidentity.html
+func (client *Client) AttachAppPolicyToIdentity(request *AttachAppPolicyToIdentityRequest) (response *AttachAppPolicyToIdentityResponse, err error) {
+	response = CreateAttachAppPolicyToIdentityResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AttachAppPolicyToIdentityWithChan invokes the vod.AttachAppPolicyToIdentity API asynchronously
+// api document: https://help.aliyun.com/api/vod/attachapppolicytoidentity.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AttachAppPolicyToIdentityWithChan(request *AttachAppPolicyToIdentityRequest) (<-chan *AttachAppPolicyToIdentityResponse, <-chan error) {
+	responseChan := make(chan *AttachAppPolicyToIdentityResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AttachAppPolicyToIdentity(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AttachAppPolicyToIdentityWithCallback invokes the vod.AttachAppPolicyToIdentity API asynchronously
+// api document: https://help.aliyun.com/api/vod/attachapppolicytoidentity.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AttachAppPolicyToIdentityWithCallback(request *AttachAppPolicyToIdentityRequest, callback func(response *AttachAppPolicyToIdentityResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AttachAppPolicyToIdentityResponse
+		var err error
+		defer close(result)
+		response, err = client.AttachAppPolicyToIdentity(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AttachAppPolicyToIdentityRequest is the request struct for api AttachAppPolicyToIdentity
+type AttachAppPolicyToIdentityRequest struct {
+	*requests.RpcRequest
+	IdentityName         string           `position:"Query" name:"IdentityName"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	IdentityType         string           `position:"Query" name:"IdentityType"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	AppId                string           `position:"Query" name:"AppId"`
+	PolicyNames          string           `position:"Query" name:"PolicyNames"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// AttachAppPolicyToIdentityResponse is the response struct for api AttachAppPolicyToIdentity
+type AttachAppPolicyToIdentityResponse struct {
+	*responses.BaseResponse
+	RequestId           string   `json:"RequestId" xml:"RequestId"`
+	NonExistPolicyNames []string `json:"NonExistPolicyNames" xml:"NonExistPolicyNames"`
+	FailedPolicyNames   []string `json:"FailedPolicyNames" xml:"FailedPolicyNames"`
+}
+
+// CreateAttachAppPolicyToIdentityRequest creates a request to invoke AttachAppPolicyToIdentity API
+func CreateAttachAppPolicyToIdentityRequest() (request *AttachAppPolicyToIdentityRequest) {
+	request = &AttachAppPolicyToIdentityRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "AttachAppPolicyToIdentity", "vod", "openAPI")
+	return
+}
+
+// CreateAttachAppPolicyToIdentityResponse creates a response to parse from AttachAppPolicyToIdentity response
+func CreateAttachAppPolicyToIdentityResponse() (response *AttachAppPolicyToIdentityResponse) {
+	response = &AttachAppPolicyToIdentityResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/create_app_info.go

@@ -0,0 +1,109 @@
+package vod
+
+//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"
+)
+
+// CreateAppInfo invokes the vod.CreateAppInfo API synchronously
+// api document: https://help.aliyun.com/api/vod/createappinfo.html
+func (client *Client) CreateAppInfo(request *CreateAppInfoRequest) (response *CreateAppInfoResponse, err error) {
+	response = CreateCreateAppInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateAppInfoWithChan invokes the vod.CreateAppInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/createappinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAppInfoWithChan(request *CreateAppInfoRequest) (<-chan *CreateAppInfoResponse, <-chan error) {
+	responseChan := make(chan *CreateAppInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateAppInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateAppInfoWithCallback invokes the vod.CreateAppInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/createappinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAppInfoWithCallback(request *CreateAppInfoRequest, callback func(response *CreateAppInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateAppInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateAppInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateAppInfoRequest is the request struct for api CreateAppInfo
+type CreateAppInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AppName              string           `position:"Query" name:"AppName"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	Description          string           `position:"Query" name:"Description"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// CreateAppInfoResponse is the response struct for api CreateAppInfo
+type CreateAppInfoResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	AppId     string `json:"AppId" xml:"AppId"`
+}
+
+// CreateCreateAppInfoRequest creates a request to invoke CreateAppInfo API
+func CreateCreateAppInfoRequest() (request *CreateAppInfoRequest) {
+	request = &CreateAppInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "CreateAppInfo", "vod", "openAPI")
+	return
+}
+
+// CreateCreateAppInfoResponse creates a response to parse from CreateAppInfo response
+func CreateCreateAppInfoResponse() (response *CreateAppInfoResponse) {
+	response = &CreateAppInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 3 - 0
services/vod/create_upload_attached_media.go

@@ -78,6 +78,8 @@ type CreateUploadAttachedMediaRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	CateIds              string           `position:"Query" name:"CateIds"`
+	Icon                 string           `position:"Query" name:"Icon"`
 	Description          string           `position:"Query" name:"Description"`
 	FileSize             string           `position:"Query" name:"FileSize"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
@@ -89,6 +91,7 @@ type CreateUploadAttachedMediaRequest struct {
 	MediaExt             string           `position:"Query" name:"MediaExt"`
 	FileName             string           `position:"Query" name:"FileName"`
 	CateId               requests.Integer `position:"Query" name:"CateId"`
+	AppId                string           `position:"Query" name:"AppId"`
 }
 
 // CreateUploadAttachedMediaResponse is the response struct for api CreateUploadAttachedMedia

+ 1 - 0
services/vod/create_upload_image.go

@@ -88,6 +88,7 @@ type CreateUploadImageRequest struct {
 	UserData             string           `position:"Query" name:"UserData"`
 	OriginalFileName     string           `position:"Query" name:"OriginalFileName"`
 	CateId               requests.Integer `position:"Query" name:"CateId"`
+	AppId                string           `position:"Query" name:"AppId"`
 }
 
 // CreateUploadImageResponse is the response struct for api CreateUploadImage

+ 1 - 0
services/vod/create_upload_video.go

@@ -91,6 +91,7 @@ type CreateUploadVideoRequest struct {
 	FileName             string           `position:"Query" name:"FileName"`
 	TemplateGroupId      string           `position:"Query" name:"TemplateGroupId"`
 	CateId               requests.Integer `position:"Query" name:"CateId"`
+	AppId                string           `position:"Query" name:"AppId"`
 	WorkflowId           string           `position:"Query" name:"WorkflowId"`
 	CustomMediaInfo      string           `position:"Query" name:"CustomMediaInfo"`
 }

+ 107 - 0
services/vod/delete_app_info.go

@@ -0,0 +1,107 @@
+package vod
+
+//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"
+)
+
+// DeleteAppInfo invokes the vod.DeleteAppInfo API synchronously
+// api document: https://help.aliyun.com/api/vod/deleteappinfo.html
+func (client *Client) DeleteAppInfo(request *DeleteAppInfoRequest) (response *DeleteAppInfoResponse, err error) {
+	response = CreateDeleteAppInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteAppInfoWithChan invokes the vod.DeleteAppInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/deleteappinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAppInfoWithChan(request *DeleteAppInfoRequest) (<-chan *DeleteAppInfoResponse, <-chan error) {
+	responseChan := make(chan *DeleteAppInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteAppInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteAppInfoWithCallback invokes the vod.DeleteAppInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/deleteappinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAppInfoWithCallback(request *DeleteAppInfoRequest, callback func(response *DeleteAppInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteAppInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteAppInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteAppInfoRequest is the request struct for api DeleteAppInfo
+type DeleteAppInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	AppId                string           `position:"Query" name:"AppId"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteAppInfoResponse is the response struct for api DeleteAppInfo
+type DeleteAppInfoResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteAppInfoRequest creates a request to invoke DeleteAppInfo API
+func CreateDeleteAppInfoRequest() (request *DeleteAppInfoRequest) {
+	request = &DeleteAppInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DeleteAppInfo", "vod", "openAPI")
+	return
+}
+
+// CreateDeleteAppInfoResponse creates a response to parse from DeleteAppInfo response
+func CreateDeleteAppInfoResponse() (response *DeleteAppInfoResponse) {
+	response = &DeleteAppInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/vod/delete_attached_media.go

@@ -0,0 +1,107 @@
+package vod
+
+//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"
+)
+
+// DeleteAttachedMedia invokes the vod.DeleteAttachedMedia API synchronously
+// api document: https://help.aliyun.com/api/vod/deleteattachedmedia.html
+func (client *Client) DeleteAttachedMedia(request *DeleteAttachedMediaRequest) (response *DeleteAttachedMediaResponse, err error) {
+	response = CreateDeleteAttachedMediaResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteAttachedMediaWithChan invokes the vod.DeleteAttachedMedia API asynchronously
+// api document: https://help.aliyun.com/api/vod/deleteattachedmedia.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAttachedMediaWithChan(request *DeleteAttachedMediaRequest) (<-chan *DeleteAttachedMediaResponse, <-chan error) {
+	responseChan := make(chan *DeleteAttachedMediaResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteAttachedMedia(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteAttachedMediaWithCallback invokes the vod.DeleteAttachedMedia API asynchronously
+// api document: https://help.aliyun.com/api/vod/deleteattachedmedia.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAttachedMediaWithCallback(request *DeleteAttachedMediaRequest, callback func(response *DeleteAttachedMediaResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteAttachedMediaResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteAttachedMedia(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteAttachedMediaRequest is the request struct for api DeleteAttachedMedia
+type DeleteAttachedMediaRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	MediaIds             string           `position:"Query" name:"MediaIds"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteAttachedMediaResponse is the response struct for api DeleteAttachedMedia
+type DeleteAttachedMediaResponse struct {
+	*responses.BaseResponse
+	RequestId        string   `json:"RequestId" xml:"RequestId"`
+	NonExistMediaIds []string `json:"NonExistMediaIds" xml:"NonExistMediaIds"`
+}
+
+// CreateDeleteAttachedMediaRequest creates a request to invoke DeleteAttachedMedia API
+func CreateDeleteAttachedMediaRequest() (request *DeleteAttachedMediaRequest) {
+	request = &DeleteAttachedMediaRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DeleteAttachedMedia", "vod", "openAPI")
+	return
+}
+
+// CreateDeleteAttachedMediaResponse creates a response to parse from DeleteAttachedMedia response
+func CreateDeleteAttachedMediaResponse() (response *DeleteAttachedMediaResponse) {
+	response = &DeleteAttachedMediaResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vod/delete_message_callback.go

@@ -0,0 +1,108 @@
+package vod
+
+//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"
+)
+
+// DeleteMessageCallback invokes the vod.DeleteMessageCallback API synchronously
+// api document: https://help.aliyun.com/api/vod/deletemessagecallback.html
+func (client *Client) DeleteMessageCallback(request *DeleteMessageCallbackRequest) (response *DeleteMessageCallbackResponse, err error) {
+	response = CreateDeleteMessageCallbackResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteMessageCallbackWithChan invokes the vod.DeleteMessageCallback API asynchronously
+// api document: https://help.aliyun.com/api/vod/deletemessagecallback.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteMessageCallbackWithChan(request *DeleteMessageCallbackRequest) (<-chan *DeleteMessageCallbackResponse, <-chan error) {
+	responseChan := make(chan *DeleteMessageCallbackResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteMessageCallback(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteMessageCallbackWithCallback invokes the vod.DeleteMessageCallback API asynchronously
+// api document: https://help.aliyun.com/api/vod/deletemessagecallback.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteMessageCallbackWithCallback(request *DeleteMessageCallbackRequest, callback func(response *DeleteMessageCallbackResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteMessageCallbackResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteMessageCallback(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteMessageCallbackRequest is the request struct for api DeleteMessageCallback
+type DeleteMessageCallbackRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string           `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	AppId                string           `position:"Query" name:"AppId"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              string           `position:"Query" name:"OwnerId"`
+}
+
+// DeleteMessageCallbackResponse is the response struct for api DeleteMessageCallback
+type DeleteMessageCallbackResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteMessageCallbackRequest creates a request to invoke DeleteMessageCallback API
+func CreateDeleteMessageCallbackRequest() (request *DeleteMessageCallbackRequest) {
+	request = &DeleteMessageCallbackRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DeleteMessageCallback", "vod", "openAPI")
+	return
+}
+
+// CreateDeleteMessageCallbackResponse creates a response to parse from DeleteMessageCallback response
+func CreateDeleteMessageCallbackResponse() (response *DeleteMessageCallbackResponse) {
+	response = &DeleteMessageCallbackResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/delete_multipart_upload.go

@@ -0,0 +1,109 @@
+package vod
+
+//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"
+)
+
+// DeleteMultipartUpload invokes the vod.DeleteMultipartUpload API synchronously
+// api document: https://help.aliyun.com/api/vod/deletemultipartupload.html
+func (client *Client) DeleteMultipartUpload(request *DeleteMultipartUploadRequest) (response *DeleteMultipartUploadResponse, err error) {
+	response = CreateDeleteMultipartUploadResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteMultipartUploadWithChan invokes the vod.DeleteMultipartUpload API asynchronously
+// api document: https://help.aliyun.com/api/vod/deletemultipartupload.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteMultipartUploadWithChan(request *DeleteMultipartUploadRequest) (<-chan *DeleteMultipartUploadResponse, <-chan error) {
+	responseChan := make(chan *DeleteMultipartUploadResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteMultipartUpload(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteMultipartUploadWithCallback invokes the vod.DeleteMultipartUpload API asynchronously
+// api document: https://help.aliyun.com/api/vod/deletemultipartupload.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteMultipartUploadWithCallback(request *DeleteMultipartUploadRequest, callback func(response *DeleteMultipartUploadResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteMultipartUploadResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteMultipartUpload(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteMultipartUploadRequest is the request struct for api DeleteMultipartUpload
+type DeleteMultipartUploadRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string           `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              string           `position:"Query" name:"OwnerId"`
+	MediaId              string           `position:"Query" name:"MediaId"`
+	MediaType            string           `position:"Query" name:"MediaType"`
+}
+
+// DeleteMultipartUploadResponse is the response struct for api DeleteMultipartUpload
+type DeleteMultipartUploadResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteMultipartUploadRequest creates a request to invoke DeleteMultipartUpload API
+func CreateDeleteMultipartUploadRequest() (request *DeleteMultipartUploadRequest) {
+	request = &DeleteMultipartUploadRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DeleteMultipartUpload", "vod", "openAPI")
+	return
+}
+
+// CreateDeleteMultipartUploadResponse creates a response to parse from DeleteMultipartUpload response
+func CreateDeleteMultipartUploadResponse() (response *DeleteMultipartUploadResponse) {
+	response = &DeleteMultipartUploadResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 3 - 1
services/vod/delete_video.go

@@ -85,7 +85,9 @@ type DeleteVideoRequest struct {
 // DeleteVideoResponse is the response struct for api DeleteVideo
 type DeleteVideoResponse struct {
 	*responses.BaseResponse
-	RequestId string `json:"RequestId" xml:"RequestId"`
+	RequestId         string   `json:"RequestId" xml:"RequestId"`
+	NonExistVideoIds  []string `json:"NonExistVideoIds" xml:"NonExistVideoIds"`
+	ForbiddenVideoIds []string `json:"ForbiddenVideoIds" xml:"ForbiddenVideoIds"`
 }
 
 // CreateDeleteVideoRequest creates a request to invoke DeleteVideo API

+ 111 - 0
services/vod/detach_app_policy_from_identity.go

@@ -0,0 +1,111 @@
+package vod
+
+//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"
+)
+
+// DetachAppPolicyFromIdentity invokes the vod.DetachAppPolicyFromIdentity API synchronously
+// api document: https://help.aliyun.com/api/vod/detachapppolicyfromidentity.html
+func (client *Client) DetachAppPolicyFromIdentity(request *DetachAppPolicyFromIdentityRequest) (response *DetachAppPolicyFromIdentityResponse, err error) {
+	response = CreateDetachAppPolicyFromIdentityResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DetachAppPolicyFromIdentityWithChan invokes the vod.DetachAppPolicyFromIdentity API asynchronously
+// api document: https://help.aliyun.com/api/vod/detachapppolicyfromidentity.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetachAppPolicyFromIdentityWithChan(request *DetachAppPolicyFromIdentityRequest) (<-chan *DetachAppPolicyFromIdentityResponse, <-chan error) {
+	responseChan := make(chan *DetachAppPolicyFromIdentityResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DetachAppPolicyFromIdentity(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DetachAppPolicyFromIdentityWithCallback invokes the vod.DetachAppPolicyFromIdentity API asynchronously
+// api document: https://help.aliyun.com/api/vod/detachapppolicyfromidentity.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetachAppPolicyFromIdentityWithCallback(request *DetachAppPolicyFromIdentityRequest, callback func(response *DetachAppPolicyFromIdentityResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DetachAppPolicyFromIdentityResponse
+		var err error
+		defer close(result)
+		response, err = client.DetachAppPolicyFromIdentity(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DetachAppPolicyFromIdentityRequest is the request struct for api DetachAppPolicyFromIdentity
+type DetachAppPolicyFromIdentityRequest struct {
+	*requests.RpcRequest
+	IdentityName         string           `position:"Query" name:"IdentityName"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	IdentityType         string           `position:"Query" name:"IdentityType"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	AppId                string           `position:"Query" name:"AppId"`
+	PolicyNames          string           `position:"Query" name:"PolicyNames"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DetachAppPolicyFromIdentityResponse is the response struct for api DetachAppPolicyFromIdentity
+type DetachAppPolicyFromIdentityResponse struct {
+	*responses.BaseResponse
+	RequestId           string   `json:"RequestId" xml:"RequestId"`
+	NonExistPolicyNames []string `json:"NonExistPolicyNames" xml:"NonExistPolicyNames"`
+	FailedPolicyNames   []string `json:"FailedPolicyNames" xml:"FailedPolicyNames"`
+}
+
+// CreateDetachAppPolicyFromIdentityRequest creates a request to invoke DetachAppPolicyFromIdentity API
+func CreateDetachAppPolicyFromIdentityRequest() (request *DetachAppPolicyFromIdentityRequest) {
+	request = &DetachAppPolicyFromIdentityRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DetachAppPolicyFromIdentity", "vod", "openAPI")
+	return
+}
+
+// CreateDetachAppPolicyFromIdentityResponse creates a response to parse from DetachAppPolicyFromIdentity response
+func CreateDetachAppPolicyFromIdentityResponse() (response *DetachAppPolicyFromIdentityResponse) {
+	response = &DetachAppPolicyFromIdentityResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/get_app_infos.go

@@ -0,0 +1,109 @@
+package vod
+
+//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"
+)
+
+// GetAppInfos invokes the vod.GetAppInfos API synchronously
+// api document: https://help.aliyun.com/api/vod/getappinfos.html
+func (client *Client) GetAppInfos(request *GetAppInfosRequest) (response *GetAppInfosResponse, err error) {
+	response = CreateGetAppInfosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetAppInfosWithChan invokes the vod.GetAppInfos API asynchronously
+// api document: https://help.aliyun.com/api/vod/getappinfos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetAppInfosWithChan(request *GetAppInfosRequest) (<-chan *GetAppInfosResponse, <-chan error) {
+	responseChan := make(chan *GetAppInfosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetAppInfos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetAppInfosWithCallback invokes the vod.GetAppInfos API asynchronously
+// api document: https://help.aliyun.com/api/vod/getappinfos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetAppInfosWithCallback(request *GetAppInfosRequest, callback func(response *GetAppInfosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetAppInfosResponse
+		var err error
+		defer close(result)
+		response, err = client.GetAppInfos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetAppInfosRequest is the request struct for api GetAppInfos
+type GetAppInfosRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AppIds               string           `position:"Query" name:"AppIds"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// GetAppInfosResponse is the response struct for api GetAppInfos
+type GetAppInfosResponse struct {
+	*responses.BaseResponse
+	RequestId      string    `json:"RequestId" xml:"RequestId"`
+	NonExistAppIds []string  `json:"NonExistAppIds" xml:"NonExistAppIds"`
+	AppInfoList    []AppInfo `json:"AppInfoList" xml:"AppInfoList"`
+}
+
+// CreateGetAppInfosRequest creates a request to invoke GetAppInfos API
+func CreateGetAppInfosRequest() (request *GetAppInfosRequest) {
+	request = &GetAppInfosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetAppInfos", "vod", "openAPI")
+	return
+}
+
+// CreateGetAppInfosResponse creates a response to parse from GetAppInfos response
+func CreateGetAppInfosResponse() (response *GetAppInfosResponse) {
+	response = &GetAppInfosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/vod/get_attached_media_info.go

@@ -0,0 +1,111 @@
+package vod
+
+//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"
+)
+
+// GetAttachedMediaInfo invokes the vod.GetAttachedMediaInfo API synchronously
+// api document: https://help.aliyun.com/api/vod/getattachedmediainfo.html
+func (client *Client) GetAttachedMediaInfo(request *GetAttachedMediaInfoRequest) (response *GetAttachedMediaInfoResponse, err error) {
+	response = CreateGetAttachedMediaInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetAttachedMediaInfoWithChan invokes the vod.GetAttachedMediaInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getattachedmediainfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetAttachedMediaInfoWithChan(request *GetAttachedMediaInfoRequest) (<-chan *GetAttachedMediaInfoResponse, <-chan error) {
+	responseChan := make(chan *GetAttachedMediaInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetAttachedMediaInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetAttachedMediaInfoWithCallback invokes the vod.GetAttachedMediaInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getattachedmediainfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetAttachedMediaInfoWithCallback(request *GetAttachedMediaInfoRequest, callback func(response *GetAttachedMediaInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetAttachedMediaInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetAttachedMediaInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetAttachedMediaInfoRequest is the request struct for api GetAttachedMediaInfo
+type GetAttachedMediaInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OutputType           string           `position:"Query" name:"OutputType"`
+	MediaIds             string           `position:"Query" name:"MediaIds"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	AuthTimeout          requests.Integer `position:"Query" name:"AuthTimeout"`
+}
+
+// GetAttachedMediaInfoResponse is the response struct for api GetAttachedMediaInfo
+type GetAttachedMediaInfoResponse struct {
+	*responses.BaseResponse
+	RequestId         string          `json:"RequestId" xml:"RequestId"`
+	NonExistMediaIds  []string        `json:"NonExistMediaIds" xml:"NonExistMediaIds"`
+	AttachedMediaList []AttachedMedia `json:"AttachedMediaList" xml:"AttachedMediaList"`
+}
+
+// CreateGetAttachedMediaInfoRequest creates a request to invoke GetAttachedMediaInfo API
+func CreateGetAttachedMediaInfoRequest() (request *GetAttachedMediaInfoRequest) {
+	request = &GetAttachedMediaInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetAttachedMediaInfo", "vod", "openAPI")
+	return
+}
+
+// CreateGetAttachedMediaInfoResponse creates a response to parse from GetAttachedMediaInfo response
+func CreateGetAttachedMediaInfoResponse() (response *GetAttachedMediaInfoResponse) {
+	response = &GetAttachedMediaInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 0
services/vod/get_categories.go

@@ -83,6 +83,7 @@ type GetCategoriesRequest struct {
 	PageSize             requests.Integer `position:"Query" name:"PageSize"`
 	SortBy               string           `position:"Query" name:"SortBy"`
 	OwnerId              string           `position:"Query" name:"OwnerId"`
+	Type                 string           `position:"Query" name:"Type"`
 }
 
 // GetCategoriesResponse is the response struct for api GetCategories

+ 1 - 0
services/vod/get_editing_project_materials.go

@@ -77,6 +77,7 @@ func (client *Client) GetEditingProjectMaterialsWithCallback(request *GetEditing
 type GetEditingProjectMaterialsRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	MaterialType         string `position:"Query" name:"MaterialType"`
 	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
 	OwnerId              string `position:"Query" name:"OwnerId"`

+ 1 - 0
services/vod/get_image_info.go

@@ -79,6 +79,7 @@ type GetImageInfoRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ImageId              string           `position:"Query" name:"ImageId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OutputType           string           `position:"Query" name:"OutputType"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 	AuthTimeout          requests.Integer `position:"Query" name:"AuthTimeout"`
 }

+ 109 - 0
services/vod/get_message_callback.go

@@ -0,0 +1,109 @@
+package vod
+
+//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"
+)
+
+// GetMessageCallback invokes the vod.GetMessageCallback API synchronously
+// api document: https://help.aliyun.com/api/vod/getmessagecallback.html
+func (client *Client) GetMessageCallback(request *GetMessageCallbackRequest) (response *GetMessageCallbackResponse, err error) {
+	response = CreateGetMessageCallbackResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetMessageCallbackWithChan invokes the vod.GetMessageCallback API asynchronously
+// api document: https://help.aliyun.com/api/vod/getmessagecallback.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetMessageCallbackWithChan(request *GetMessageCallbackRequest) (<-chan *GetMessageCallbackResponse, <-chan error) {
+	responseChan := make(chan *GetMessageCallbackResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetMessageCallback(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetMessageCallbackWithCallback invokes the vod.GetMessageCallback API asynchronously
+// api document: https://help.aliyun.com/api/vod/getmessagecallback.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetMessageCallbackWithCallback(request *GetMessageCallbackRequest, callback func(response *GetMessageCallbackResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetMessageCallbackResponse
+		var err error
+		defer close(result)
+		response, err = client.GetMessageCallback(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetMessageCallbackRequest is the request struct for api GetMessageCallback
+type GetMessageCallbackRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string           `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	AppId                string           `position:"Query" name:"AppId"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              string           `position:"Query" name:"OwnerId"`
+}
+
+// GetMessageCallbackResponse is the response struct for api GetMessageCallback
+type GetMessageCallbackResponse struct {
+	*responses.BaseResponse
+	RequestId       string          `json:"RequestId" xml:"RequestId"`
+	MessageCallback MessageCallback `json:"MessageCallback" xml:"MessageCallback"`
+}
+
+// CreateGetMessageCallbackRequest creates a request to invoke GetMessageCallback API
+func CreateGetMessageCallbackRequest() (request *GetMessageCallbackRequest) {
+	request = &GetMessageCallbackRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetMessageCallback", "vod", "openAPI")
+	return
+}
+
+// CreateGetMessageCallbackResponse creates a response to parse from GetMessageCallback response
+func CreateGetMessageCallbackResponse() (response *GetMessageCallbackResponse) {
+	response = &GetMessageCallbackResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 0
services/vod/get_video_info.go

@@ -79,6 +79,7 @@ type GetVideoInfoRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	VideoId              string           `position:"Query" name:"VideoId"`
+	AdditionType         string           `position:"Query" name:"AdditionType"`
 	ResultTypes          string           `position:"Query" name:"ResultTypes"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 }

+ 1 - 0
services/vod/get_video_infos.go

@@ -78,6 +78,7 @@ type GetVideoInfosRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	AdditionType         string           `position:"Query" name:"AdditionType"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 	VideoIds             string           `position:"Query" name:"VideoIds"`
 }

+ 110 - 0
services/vod/list_app_info.go

@@ -0,0 +1,110 @@
+package vod
+
+//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"
+)
+
+// ListAppInfo invokes the vod.ListAppInfo API synchronously
+// api document: https://help.aliyun.com/api/vod/listappinfo.html
+func (client *Client) ListAppInfo(request *ListAppInfoRequest) (response *ListAppInfoResponse, err error) {
+	response = CreateListAppInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAppInfoWithChan invokes the vod.ListAppInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/listappinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAppInfoWithChan(request *ListAppInfoRequest) (<-chan *ListAppInfoResponse, <-chan error) {
+	responseChan := make(chan *ListAppInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAppInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAppInfoWithCallback invokes the vod.ListAppInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/listappinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAppInfoWithCallback(request *ListAppInfoRequest, callback func(response *ListAppInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAppInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAppInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAppInfoRequest is the request struct for api ListAppInfo
+type ListAppInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	PageNo               requests.Integer `position:"Query" name:"PageNo"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Status               string           `position:"Query" name:"Status"`
+}
+
+// ListAppInfoResponse is the response struct for api ListAppInfo
+type ListAppInfoResponse struct {
+	*responses.BaseResponse
+	RequestId   string    `json:"RequestId" xml:"RequestId"`
+	AppInfoList []AppInfo `json:"AppInfoList" xml:"AppInfoList"`
+}
+
+// CreateListAppInfoRequest creates a request to invoke ListAppInfo API
+func CreateListAppInfoRequest() (request *ListAppInfoRequest) {
+	request = &ListAppInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAppInfo", "vod", "openAPI")
+	return
+}
+
+// CreateListAppInfoResponse creates a response to parse from ListAppInfo response
+func CreateListAppInfoResponse() (response *ListAppInfoResponse) {
+	response = &ListAppInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/list_app_policies_for_identity.go

@@ -0,0 +1,109 @@
+package vod
+
+//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"
+)
+
+// ListAppPoliciesForIdentity invokes the vod.ListAppPoliciesForIdentity API synchronously
+// api document: https://help.aliyun.com/api/vod/listapppoliciesforidentity.html
+func (client *Client) ListAppPoliciesForIdentity(request *ListAppPoliciesForIdentityRequest) (response *ListAppPoliciesForIdentityResponse, err error) {
+	response = CreateListAppPoliciesForIdentityResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAppPoliciesForIdentityWithChan invokes the vod.ListAppPoliciesForIdentity API asynchronously
+// api document: https://help.aliyun.com/api/vod/listapppoliciesforidentity.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAppPoliciesForIdentityWithChan(request *ListAppPoliciesForIdentityRequest) (<-chan *ListAppPoliciesForIdentityResponse, <-chan error) {
+	responseChan := make(chan *ListAppPoliciesForIdentityResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAppPoliciesForIdentity(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAppPoliciesForIdentityWithCallback invokes the vod.ListAppPoliciesForIdentity API asynchronously
+// api document: https://help.aliyun.com/api/vod/listapppoliciesforidentity.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAppPoliciesForIdentityWithCallback(request *ListAppPoliciesForIdentityRequest, callback func(response *ListAppPoliciesForIdentityResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAppPoliciesForIdentityResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAppPoliciesForIdentity(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAppPoliciesForIdentityRequest is the request struct for api ListAppPoliciesForIdentity
+type ListAppPoliciesForIdentityRequest struct {
+	*requests.RpcRequest
+	IdentityName         string           `position:"Query" name:"IdentityName"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	IdentityType         string           `position:"Query" name:"IdentityType"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	AppId                string           `position:"Query" name:"AppId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// ListAppPoliciesForIdentityResponse is the response struct for api ListAppPoliciesForIdentity
+type ListAppPoliciesForIdentityResponse struct {
+	*responses.BaseResponse
+	RequestId     string      `json:"RequestId" xml:"RequestId"`
+	AppPolicyList []AppPolicy `json:"AppPolicyList" xml:"AppPolicyList"`
+}
+
+// CreateListAppPoliciesForIdentityRequest creates a request to invoke ListAppPoliciesForIdentity API
+func CreateListAppPoliciesForIdentityRequest() (request *ListAppPoliciesForIdentityRequest) {
+	request = &ListAppPoliciesForIdentityRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAppPoliciesForIdentity", "vod", "openAPI")
+	return
+}
+
+// CreateListAppPoliciesForIdentityResponse creates a response to parse from ListAppPoliciesForIdentity response
+func CreateListAppPoliciesForIdentityResponse() (response *ListAppPoliciesForIdentityResponse) {
+	response = &ListAppPoliciesForIdentityResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/vod/move_app_resource.go

@@ -0,0 +1,111 @@
+package vod
+
+//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"
+)
+
+// MoveAppResource invokes the vod.MoveAppResource API synchronously
+// api document: https://help.aliyun.com/api/vod/moveappresource.html
+func (client *Client) MoveAppResource(request *MoveAppResourceRequest) (response *MoveAppResourceResponse, err error) {
+	response = CreateMoveAppResourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// MoveAppResourceWithChan invokes the vod.MoveAppResource API asynchronously
+// api document: https://help.aliyun.com/api/vod/moveappresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) MoveAppResourceWithChan(request *MoveAppResourceRequest) (<-chan *MoveAppResourceResponse, <-chan error) {
+	responseChan := make(chan *MoveAppResourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.MoveAppResource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// MoveAppResourceWithCallback invokes the vod.MoveAppResource API asynchronously
+// api document: https://help.aliyun.com/api/vod/moveappresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) MoveAppResourceWithCallback(request *MoveAppResourceRequest, callback func(response *MoveAppResourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *MoveAppResourceResponse
+		var err error
+		defer close(result)
+		response, err = client.MoveAppResource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// MoveAppResourceRequest is the request struct for api MoveAppResource
+type MoveAppResourceRequest struct {
+	*requests.RpcRequest
+	TargetAppId          string           `position:"Query" name:"TargetAppId"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceType         string           `position:"Query" name:"ResourceType"`
+	ResourceIds          string           `position:"Query" name:"ResourceIds"`
+}
+
+// MoveAppResourceResponse is the response struct for api MoveAppResource
+type MoveAppResourceResponse struct {
+	*responses.BaseResponse
+	RequestId           string   `json:"RequestId" xml:"RequestId"`
+	NonExistResourceIds []string `json:"NonExistResourceIds" xml:"NonExistResourceIds"`
+	FailedResourceIds   []string `json:"FailedResourceIds" xml:"FailedResourceIds"`
+}
+
+// CreateMoveAppResourceRequest creates a request to invoke MoveAppResource API
+func CreateMoveAppResourceRequest() (request *MoveAppResourceRequest) {
+	request = &MoveAppResourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "MoveAppResource", "vod", "openAPI")
+	return
+}
+
+// CreateMoveAppResourceResponse creates a response to parse from MoveAppResource response
+func CreateMoveAppResourceResponse() (response *MoveAppResourceResponse) {
+	response = &MoveAppResourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/vod/set_message_callback.go

@@ -0,0 +1,116 @@
+package vod
+
+//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"
+)
+
+// SetMessageCallback invokes the vod.SetMessageCallback API synchronously
+// api document: https://help.aliyun.com/api/vod/setmessagecallback.html
+func (client *Client) SetMessageCallback(request *SetMessageCallbackRequest) (response *SetMessageCallbackResponse, err error) {
+	response = CreateSetMessageCallbackResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SetMessageCallbackWithChan invokes the vod.SetMessageCallback API asynchronously
+// api document: https://help.aliyun.com/api/vod/setmessagecallback.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetMessageCallbackWithChan(request *SetMessageCallbackRequest) (<-chan *SetMessageCallbackResponse, <-chan error) {
+	responseChan := make(chan *SetMessageCallbackResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SetMessageCallback(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SetMessageCallbackWithCallback invokes the vod.SetMessageCallback API asynchronously
+// api document: https://help.aliyun.com/api/vod/setmessagecallback.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetMessageCallbackWithCallback(request *SetMessageCallbackRequest, callback func(response *SetMessageCallbackResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SetMessageCallbackResponse
+		var err error
+		defer close(result)
+		response, err = client.SetMessageCallback(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SetMessageCallbackRequest is the request struct for api SetMessageCallback
+type SetMessageCallbackRequest struct {
+	*requests.RpcRequest
+	AuthKey              string           `position:"Query" name:"AuthKey"`
+	ResourceOwnerId      string           `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	EventTypeList        string           `position:"Query" name:"EventTypeList"`
+	MnsQueueName         string           `position:"Query" name:"MnsQueueName"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              string           `position:"Query" name:"OwnerId"`
+	CallbackType         string           `position:"Query" name:"CallbackType"`
+	CallbackSwitch       string           `position:"Query" name:"CallbackSwitch"`
+	MnsEndpoint          string           `position:"Query" name:"MnsEndpoint"`
+	AppId                string           `position:"Query" name:"AppId"`
+	AuthSwitch           string           `position:"Query" name:"AuthSwitch"`
+	CallbackURL          string           `position:"Query" name:"CallbackURL"`
+}
+
+// SetMessageCallbackResponse is the response struct for api SetMessageCallback
+type SetMessageCallbackResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateSetMessageCallbackRequest creates a request to invoke SetMessageCallback API
+func CreateSetMessageCallbackRequest() (request *SetMessageCallbackRequest) {
+	request = &SetMessageCallbackRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "SetMessageCallback", "vod", "openAPI")
+	return
+}
+
+// CreateSetMessageCallbackResponse creates a response to parse from SetMessageCallback response
+func CreateSetMessageCallbackResponse() (response *SetMessageCallbackResponse) {
+	response = &SetMessageCallbackResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 27 - 0
services/vod/struct_app_info.go

@@ -0,0 +1,27 @@
+package vod
+
+//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.
+
+// AppInfo is a nested struct in vod response
+type AppInfo struct {
+	AppId            string `json:"AppId" xml:"AppId"`
+	ModificationTime string `json:"ModificationTime" xml:"ModificationTime"`
+	CreationTime     string `json:"CreationTime" xml:"CreationTime"`
+	Status           string `json:"Status" xml:"Status"`
+	AppName          string `json:"AppName" xml:"AppName"`
+	Description      string `json:"Description" xml:"Description"`
+	Type             string `json:"Type" xml:"Type"`
+}

+ 21 - 0
services/vod/struct_app_info_list_in_get_app_infos.go

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

+ 21 - 0
services/vod/struct_app_info_list_in_list_app_info.go

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

+ 27 - 0
services/vod/struct_app_policy.go

@@ -0,0 +1,27 @@
+package vod
+
+//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.
+
+// AppPolicy is a nested struct in vod response
+type AppPolicy struct {
+	AppId            string `json:"AppId" xml:"AppId"`
+	CreationTime     string `json:"CreationTime" xml:"CreationTime"`
+	PolicyName       string `json:"PolicyName" xml:"PolicyName"`
+	PolicyType       string `json:"PolicyType" xml:"PolicyType"`
+	PolicyValue      string `json:"PolicyValue" xml:"PolicyValue"`
+	Description      string `json:"Description" xml:"Description"`
+	ModificationTime string `json:"ModificationTime" xml:"ModificationTime"`
+}

+ 21 - 0
services/vod/struct_app_policy_list.go

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

+ 34 - 0
services/vod/struct_attached_media.go

@@ -0,0 +1,34 @@
+package vod
+
+//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.
+
+// AttachedMedia is a nested struct in vod response
+type AttachedMedia struct {
+	Tags             string     `json:"Tags" xml:"Tags"`
+	Title            string     `json:"Title" xml:"Title"`
+	ModificationTime string     `json:"ModificationTime" xml:"ModificationTime"`
+	CreationTime     string     `json:"CreationTime" xml:"CreationTime"`
+	URL              string     `json:"URL" xml:"URL"`
+	AppId            string     `json:"AppId" xml:"AppId"`
+	FileSize         int        `json:"FileSize" xml:"FileSize"`
+	StorageLocation  int        `json:"StorageLocation" xml:"StorageLocation"`
+	Status           string     `json:"Status" xml:"Status"`
+	MediaId          string     `json:"MediaId" xml:"MediaId"`
+	Description      string     `json:"Description" xml:"Description"`
+	OnlineStatus     string     `json:"OnlineStatus" xml:"OnlineStatus"`
+	Type             string     `json:"Type" xml:"Type"`
+	Categories       []Category `json:"Categories" xml:"Categories"`
+}

+ 34 - 0
services/vod/struct_attached_media_in_search_media.go

@@ -0,0 +1,34 @@
+package vod
+
+//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.
+
+// AttachedMediaInSearchMedia is a nested struct in vod response
+type AttachedMediaInSearchMedia struct {
+	Title            string     `json:"Title" xml:"Title"`
+	MediaId          string     `json:"MediaId" xml:"MediaId"`
+	Ext              string     `json:"Ext" xml:"Ext"`
+	CreationTime     string     `json:"CreationTime" xml:"CreationTime"`
+	ModificationTime string     `json:"ModificationTime" xml:"ModificationTime"`
+	Tags             string     `json:"Tags" xml:"Tags"`
+	BusinessType     string     `json:"BusinessType" xml:"BusinessType"`
+	URL              string     `json:"URL" xml:"URL"`
+	Status           string     `json:"Status" xml:"Status"`
+	Description      string     `json:"Description" xml:"Description"`
+	StorageLocation  string     `json:"StorageLocation" xml:"StorageLocation"`
+	RegionId         string     `json:"RegionId" xml:"RegionId"`
+	AppId            string     `json:"AppId" xml:"AppId"`
+	Categories       []Category `json:"Categories" xml:"Categories"`
+}

+ 21 - 0
services/vod/struct_attached_media_list.go

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

+ 1 - 0
services/vod/struct_audio.go

@@ -41,6 +41,7 @@ type Audio struct {
 	AuditAIResult     string     `json:"AuditAIResult" xml:"AuditAIResult"`
 	AuditTemplateId   string     `json:"AuditTemplateId" xml:"AuditTemplateId"`
 	CustomMediaInfo   string     `json:"CustomMediaInfo" xml:"CustomMediaInfo"`
+	AppId             string     `json:"AppId" xml:"AppId"`
 	Snapshots         []string   `json:"Snapshots" xml:"Snapshots"`
 	SpriteSnapshots   []string   `json:"SpriteSnapshots" xml:"SpriteSnapshots"`
 	PlayInfoList      []PlayInfo `json:"PlayInfoList" xml:"PlayInfoList"`

+ 21 - 0
services/vod/struct_categories_in_get_attached_media_info.go

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

+ 21 - 0
services/vod/struct_categories_in_search_media.go

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

+ 2 - 0
services/vod/struct_category.go

@@ -19,6 +19,8 @@ package vod
 type Category struct {
 	CateName string `json:"CateName" xml:"CateName"`
 	Level    int    `json:"Level" xml:"Level"`
+	SubTotal int    `json:"SubTotal" xml:"SubTotal"`
 	ParentId int    `json:"ParentId" xml:"ParentId"`
 	CateId   int    `json:"CateId" xml:"CateId"`
+	Type     string `json:"Type" xml:"Type"`
 }

+ 21 - 0
services/vod/struct_failed_policy_names_in_attach_app_policy_to_identity.go

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

+ 21 - 0
services/vod/struct_failed_policy_names_in_detach_app_policy_from_identity.go

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

+ 21 - 0
services/vod/struct_failed_resource_ids.go

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

+ 21 - 0
services/vod/struct_forbidden_video_ids_in_delete_video.go

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

+ 21 - 0
services/vod/struct_forbidden_video_ids_in_update_video_infos.go

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

+ 1 - 0
services/vod/struct_image.go

@@ -31,4 +31,5 @@ type Image struct {
 	Description      string `json:"Description" xml:"Description"`
 	StorageLocation  string `json:"StorageLocation" xml:"StorageLocation"`
 	RegionId         string `json:"RegionId" xml:"RegionId"`
+	AppId            string `json:"AppId" xml:"AppId"`
 }

+ 1 - 0
services/vod/struct_image_info.go

@@ -28,5 +28,6 @@ type ImageInfo struct {
 	Description     string    `json:"Description" xml:"Description"`
 	StorageLocation string    `json:"StorageLocation" xml:"StorageLocation"`
 	Status          string    `json:"Status" xml:"Status"`
+	AppId           string    `json:"AppId" xml:"AppId"`
 	Mezzanine       Mezzanine `json:"Mezzanine" xml:"Mezzanine"`
 }

+ 7 - 6
services/vod/struct_media.go

@@ -17,10 +17,11 @@ package vod
 
 // Media is a nested struct in vod response
 type Media struct {
-	MediaType    string `json:"MediaType" xml:"MediaType"`
-	CreationTime string `json:"CreationTime" xml:"CreationTime"`
-	MediaId      string `json:"MediaId" xml:"MediaId"`
-	Video        Video  `json:"Video" xml:"Video"`
-	Audio        Audio  `json:"Audio" xml:"Audio"`
-	Image        Image  `json:"Image" xml:"Image"`
+	MediaType     string                     `json:"MediaType" xml:"MediaType"`
+	CreationTime  string                     `json:"CreationTime" xml:"CreationTime"`
+	MediaId       string                     `json:"MediaId" xml:"MediaId"`
+	Video         Video                      `json:"Video" xml:"Video"`
+	Audio         Audio                      `json:"Audio" xml:"Audio"`
+	Image         Image                      `json:"Image" xml:"Image"`
+	AttachedMedia AttachedMediaInSearchMedia `json:"AttachedMedia" xml:"AttachedMedia"`
 }

+ 28 - 0
services/vod/struct_message_callback.go

@@ -0,0 +1,28 @@
+package vod
+
+//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.
+
+// MessageCallback is a nested struct in vod response
+type MessageCallback struct {
+	CallbackType  string `json:"CallbackType" xml:"CallbackType"`
+	CallbackURL   string `json:"CallbackURL" xml:"CallbackURL"`
+	EventTypeList string `json:"EventTypeList" xml:"EventTypeList"`
+	AuthSwitch    string `json:"AuthSwitch" xml:"AuthSwitch"`
+	AuthKey       string `json:"AuthKey" xml:"AuthKey"`
+	MnsEndpoint   string `json:"MnsEndpoint" xml:"MnsEndpoint"`
+	MnsQueueName  string `json:"MnsQueueName" xml:"MnsQueueName"`
+	AppId         string `json:"AppId" xml:"AppId"`
+}

+ 21 - 0
services/vod/struct_non_exist_app_ids.go

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

+ 21 - 0
services/vod/struct_non_exist_media_ids_in_delete_attached_media.go

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

+ 21 - 0
services/vod/struct_non_exist_media_ids_in_get_attached_media_info.go

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

+ 21 - 0
services/vod/struct_non_exist_media_ids_in_update_attached_media_infos.go

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

+ 21 - 0
services/vod/struct_non_exist_policy_names_in_attach_app_policy_to_identity.go

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

+ 21 - 0
services/vod/struct_non_exist_policy_names_in_detach_app_policy_from_identity.go

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

+ 21 - 0
services/vod/struct_non_exist_resource_ids.go

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

+ 21 - 0
services/vod/struct_non_exist_video_ids_in_delete_video.go

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

+ 11 - 8
services/vod/struct_project.go

@@ -17,12 +17,15 @@ package vod
 
 // Project is a nested struct in vod response
 type Project struct {
-	ModifiedTime string `json:"ModifiedTime" xml:"ModifiedTime"`
-	Title        string `json:"Title" xml:"Title"`
-	ProjectId    string `json:"ProjectId" xml:"ProjectId"`
-	CreationTime string `json:"CreationTime" xml:"CreationTime"`
-	Status       string `json:"Status" xml:"Status"`
-	Description  string `json:"Description" xml:"Description"`
-	Timeline     string `json:"Timeline" xml:"Timeline"`
-	CoverURL     string `json:"CoverURL" xml:"CoverURL"`
+	ModifiedTime    string  `json:"ModifiedTime" xml:"ModifiedTime"`
+	RegionId        string  `json:"RegionId" xml:"RegionId"`
+	Title           string  `json:"Title" xml:"Title"`
+	Duration        float64 `json:"Duration" xml:"Duration"`
+	ProjectId       string  `json:"ProjectId" xml:"ProjectId"`
+	StorageLocation string  `json:"StorageLocation" xml:"StorageLocation"`
+	CreationTime    string  `json:"CreationTime" xml:"CreationTime"`
+	Status          string  `json:"Status" xml:"Status"`
+	Description     string  `json:"Description" xml:"Description"`
+	Timeline        string  `json:"Timeline" xml:"Timeline"`
+	CoverURL        string  `json:"CoverURL" xml:"CoverURL"`
 }

+ 17 - 14
services/vod/struct_transcode_template.go

@@ -17,18 +17,21 @@ package vod
 
 // TranscodeTemplate is a nested struct in vod response
 type TranscodeTemplate struct {
-	TranscodeTemplateId string   `json:"TranscodeTemplateId" xml:"TranscodeTemplateId"`
-	Video               string   `json:"Video" xml:"Video"`
-	Audio               string   `json:"Audio" xml:"Audio"`
-	Container           string   `json:"Container" xml:"Container"`
-	MuxConfig           string   `json:"MuxConfig" xml:"MuxConfig"`
-	TransConfig         string   `json:"TransConfig" xml:"TransConfig"`
-	Definition          string   `json:"Definition" xml:"Definition"`
-	EncryptSetting      string   `json:"EncryptSetting" xml:"EncryptSetting"`
-	PackageSetting      string   `json:"PackageSetting" xml:"PackageSetting"`
-	SubtitleList        string   `json:"SubtitleList" xml:"SubtitleList"`
-	OpeningList         string   `json:"OpeningList" xml:"OpeningList"`
-	TailSlateList       string   `json:"TailSlateList" xml:"TailSlateList"`
-	TemplateName        string   `json:"TemplateName" xml:"TemplateName"`
-	WatermarkIds        []string `json:"WatermarkIds" xml:"WatermarkIds"`
+	TranscodeTemplateId  string   `json:"TranscodeTemplateId" xml:"TranscodeTemplateId"`
+	Video                string   `json:"Video" xml:"Video"`
+	Audio                string   `json:"Audio" xml:"Audio"`
+	Container            string   `json:"Container" xml:"Container"`
+	MuxConfig            string   `json:"MuxConfig" xml:"MuxConfig"`
+	TransConfig          string   `json:"TransConfig" xml:"TransConfig"`
+	Definition           string   `json:"Definition" xml:"Definition"`
+	EncryptSetting       string   `json:"EncryptSetting" xml:"EncryptSetting"`
+	PackageSetting       string   `json:"PackageSetting" xml:"PackageSetting"`
+	SubtitleList         string   `json:"SubtitleList" xml:"SubtitleList"`
+	OpeningList          string   `json:"OpeningList" xml:"OpeningList"`
+	TailSlateList        string   `json:"TailSlateList" xml:"TailSlateList"`
+	TemplateName         string   `json:"TemplateName" xml:"TemplateName"`
+	TranscodeFileRegular string   `json:"TranscodeFileRegular" xml:"TranscodeFileRegular"`
+	Clip                 string   `json:"Clip" xml:"Clip"`
+	Rotate               string   `json:"Rotate" xml:"Rotate"`
+	WatermarkIds         []string `json:"WatermarkIds" xml:"WatermarkIds"`
 }

+ 1 - 0
services/vod/struct_video.go

@@ -40,6 +40,7 @@ type Video struct {
 	CreationTime      string      `json:"CreationTime" xml:"CreationTime"`
 	AuditAIResult     string      `json:"AuditAIResult" xml:"AuditAIResult"`
 	CoverURL          string      `json:"CoverURL" xml:"CoverURL"`
+	AppId             string      `json:"AppId" xml:"AppId"`
 	AuditTemplateId   string      `json:"AuditTemplateId" xml:"AuditTemplateId"`
 	Status            string      `json:"Status" xml:"Status"`
 	AuditStatus       string      `json:"AuditStatus" xml:"AuditStatus"`

+ 2 - 0
services/vod/struct_video_in_get_video_info.go

@@ -37,6 +37,8 @@ type VideoInGetVideoInfo struct {
 	StorageLocation  string                      `json:"StorageLocation" xml:"StorageLocation"`
 	RegionId         string                      `json:"RegionId" xml:"RegionId"`
 	CustomMediaInfo  string                      `json:"CustomMediaInfo" xml:"CustomMediaInfo"`
+	AuditStatus      string                      `json:"AuditStatus" xml:"AuditStatus"`
+	AppId            string                      `json:"AppId" xml:"AppId"`
 	Snapshots        SnapshotsInGetVideoInfo     `json:"Snapshots" xml:"Snapshots"`
 	ThumbnailList    ThumbnailListInGetVideoInfo `json:"ThumbnailList" xml:"ThumbnailList"`
 }

+ 1 - 0
services/vod/struct_video_in_get_video_list.go

@@ -32,5 +32,6 @@ type VideoInGetVideoList struct {
 	CateId           int                     `json:"CateId" xml:"CateId"`
 	CateName         string                  `json:"CateName" xml:"CateName"`
 	StorageLocation  string                  `json:"StorageLocation" xml:"StorageLocation"`
+	AppId            string                  `json:"AppId" xml:"AppId"`
 	Snapshots        SnapshotsInGetVideoList `json:"Snapshots" xml:"Snapshots"`
 }

+ 110 - 0
services/vod/update_app_info.go

@@ -0,0 +1,110 @@
+package vod
+
+//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"
+)
+
+// UpdateAppInfo invokes the vod.UpdateAppInfo API synchronously
+// api document: https://help.aliyun.com/api/vod/updateappinfo.html
+func (client *Client) UpdateAppInfo(request *UpdateAppInfoRequest) (response *UpdateAppInfoResponse, err error) {
+	response = CreateUpdateAppInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UpdateAppInfoWithChan invokes the vod.UpdateAppInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/updateappinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateAppInfoWithChan(request *UpdateAppInfoRequest) (<-chan *UpdateAppInfoResponse, <-chan error) {
+	responseChan := make(chan *UpdateAppInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UpdateAppInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UpdateAppInfoWithCallback invokes the vod.UpdateAppInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/updateappinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateAppInfoWithCallback(request *UpdateAppInfoRequest, callback func(response *UpdateAppInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UpdateAppInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.UpdateAppInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UpdateAppInfoRequest is the request struct for api UpdateAppInfo
+type UpdateAppInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AppName              string           `position:"Query" name:"AppName"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	AppId                string           `position:"Query" name:"AppId"`
+	Description          string           `position:"Query" name:"Description"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Status               string           `position:"Query" name:"Status"`
+}
+
+// UpdateAppInfoResponse is the response struct for api UpdateAppInfo
+type UpdateAppInfoResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateUpdateAppInfoRequest creates a request to invoke UpdateAppInfo API
+func CreateUpdateAppInfoRequest() (request *UpdateAppInfoRequest) {
+	request = &UpdateAppInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "UpdateAppInfo", "vod", "openAPI")
+	return
+}
+
+// CreateUpdateAppInfoResponse creates a response to parse from UpdateAppInfo response
+func CreateUpdateAppInfoResponse() (response *UpdateAppInfoResponse) {
+	response = &UpdateAppInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vod/update_attached_media_infos.go

@@ -0,0 +1,108 @@
+package vod
+
+//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"
+)
+
+// UpdateAttachedMediaInfos invokes the vod.UpdateAttachedMediaInfos API synchronously
+// api document: https://help.aliyun.com/api/vod/updateattachedmediainfos.html
+func (client *Client) UpdateAttachedMediaInfos(request *UpdateAttachedMediaInfosRequest) (response *UpdateAttachedMediaInfosResponse, err error) {
+	response = CreateUpdateAttachedMediaInfosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UpdateAttachedMediaInfosWithChan invokes the vod.UpdateAttachedMediaInfos API asynchronously
+// api document: https://help.aliyun.com/api/vod/updateattachedmediainfos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateAttachedMediaInfosWithChan(request *UpdateAttachedMediaInfosRequest) (<-chan *UpdateAttachedMediaInfosResponse, <-chan error) {
+	responseChan := make(chan *UpdateAttachedMediaInfosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UpdateAttachedMediaInfos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UpdateAttachedMediaInfosWithCallback invokes the vod.UpdateAttachedMediaInfos API asynchronously
+// api document: https://help.aliyun.com/api/vod/updateattachedmediainfos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateAttachedMediaInfosWithCallback(request *UpdateAttachedMediaInfosRequest, callback func(response *UpdateAttachedMediaInfosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UpdateAttachedMediaInfosResponse
+		var err error
+		defer close(result)
+		response, err = client.UpdateAttachedMediaInfos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UpdateAttachedMediaInfosRequest is the request struct for api UpdateAttachedMediaInfos
+type UpdateAttachedMediaInfosRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	UpdateContent        string           `position:"Query" name:"UpdateContent"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceRealOwnerId  requests.Integer `position:"Query" name:"ResourceRealOwnerId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// UpdateAttachedMediaInfosResponse is the response struct for api UpdateAttachedMediaInfos
+type UpdateAttachedMediaInfosResponse struct {
+	*responses.BaseResponse
+	RequestId        string   `json:"RequestId" xml:"RequestId"`
+	NonExistMediaIds []string `json:"NonExistMediaIds" xml:"NonExistMediaIds"`
+}
+
+// CreateUpdateAttachedMediaInfosRequest creates a request to invoke UpdateAttachedMediaInfos API
+func CreateUpdateAttachedMediaInfosRequest() (request *UpdateAttachedMediaInfosRequest) {
+	request = &UpdateAttachedMediaInfosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "UpdateAttachedMediaInfos", "vod", "openAPI")
+	return
+}
+
+// CreateUpdateAttachedMediaInfosResponse creates a response to parse from UpdateAttachedMediaInfos response
+func CreateUpdateAttachedMediaInfosResponse() (response *UpdateAttachedMediaInfosResponse) {
+	response = &UpdateAttachedMediaInfosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 3 - 2
services/vod/update_video_infos.go

@@ -85,8 +85,9 @@ type UpdateVideoInfosRequest struct {
 // UpdateVideoInfosResponse is the response struct for api UpdateVideoInfos
 type UpdateVideoInfosResponse struct {
 	*responses.BaseResponse
-	RequestId        string   `json:"RequestId" xml:"RequestId"`
-	NonExistVideoIds []string `json:"NonExistVideoIds" xml:"NonExistVideoIds"`
+	RequestId         string   `json:"RequestId" xml:"RequestId"`
+	NonExistVideoIds  []string `json:"NonExistVideoIds" xml:"NonExistVideoIds"`
+	ForbiddenVideoIds []string `json:"ForbiddenVideoIds" xml:"ForbiddenVideoIds"`
 }
 
 // CreateUpdateVideoInfosRequest creates a request to invoke UpdateVideoInfos API