Browse Source

VOD SDK Auto Released By guzhaoyuan,Version:1.24.2

Signed-off-by: yixiong.jxy <yixiong.jxy@alibaba-inc.com>
yixiong.jxy 7 years ago
parent
commit
aa5702adf3
100 changed files with 7306 additions and 0 deletions
  1. 8 0
      ChangeLog.txt
  2. 108 0
      services/vod/add_category.go
  3. 111 0
      services/vod/add_editing_project.go
  4. 81 0
      services/vod/client.go
  5. 103 0
      services/vod/create_audit.go
  6. 115 0
      services/vod/create_upload_image.go
  7. 120 0
      services/vod/create_upload_video.go
  8. 106 0
      services/vod/delete_category.go
  9. 107 0
      services/vod/delete_editing_project.go
  10. 107 0
      services/vod/delete_stream.go
  11. 106 0
      services/vod/delete_video.go
  12. 116 0
      services/vod/describe_cdn_domain_logs.go
  13. 119 0
      services/vod/describe_domain_bps_data.go
  14. 118 0
      services/vod/describe_domain_flow_data.go
  15. 110 0
      services/vod/describe_play_top_videos.go
  16. 106 0
      services/vod/describe_play_user_avg.go
  17. 106 0
      services/vod/describe_play_user_total.go
  18. 107 0
      services/vod/describe_play_video_statis.go
  19. 107 0
      services/vod/describe_refresh_quota.go
  20. 119 0
      services/vod/describe_refresh_tasks.go
  21. 109 0
      services/vod/get_audit_history.go
  22. 104 0
      services/vod/get_audit_result.go
  23. 112 0
      services/vod/get_categories.go
  24. 112 0
      services/vod/get_cdn_statis_sum.go
  25. 108 0
      services/vod/get_editing_project.go
  26. 109 0
      services/vod/get_editing_project_materials.go
  27. 108 0
      services/vod/get_image_info.go
  28. 107 0
      services/vod/get_message_callback.go
  29. 109 0
      services/vod/get_mezzanine_info.go
  30. 111 0
      services/vod/get_oss_statis.go
  31. 119 0
      services/vod/get_play_info.go
  32. 108 0
      services/vod/get_video_config.go
  33. 109 0
      services/vod/get_video_info.go
  34. 108 0
      services/vod/get_video_infos.go
  35. 114 0
      services/vod/get_video_list.go
  36. 110 0
      services/vod/get_video_play_auth.go
  37. 113 0
      services/vod/get_video_play_info.go
  38. 109 0
      services/vod/list_ai_job.go
  39. 109 0
      services/vod/list_ai_video_category_job.go
  40. 109 0
      services/vod/list_ai_video_censor_job.go
  41. 109 0
      services/vod/list_ai_video_cover_job.go
  42. 109 0
      services/vod/list_ai_video_porn_recog_job.go
  43. 109 0
      services/vod/list_ai_video_summary_job.go
  44. 109 0
      services/vod/list_ai_video_terrorism_recog_job.go
  45. 109 0
      services/vod/list_aiasr_job.go
  46. 104 0
      services/vod/list_audit_security_ip.go
  47. 116 0
      services/vod/list_live_record_video.go
  48. 111 0
      services/vod/list_snapshots.go
  49. 109 0
      services/vod/open_vod_service.go
  50. 115 0
      services/vod/produce_editing_project_video.go
  51. 108 0
      services/vod/push_object_cache.go
  52. 109 0
      services/vod/refresh_object_caches.go
  53. 109 0
      services/vod/refresh_upload_video.go
  54. 115 0
      services/vod/search_editing_project.go
  55. 115 0
      services/vod/search_media.go
  56. 105 0
      services/vod/set_audit_security_ip.go
  57. 108 0
      services/vod/set_editing_project_materials.go
  58. 112 0
      services/vod/set_message_callback.go
  59. 23 0
      services/vod/struct_ai_audit_result.go
  60. 29 0
      services/vod/struct_ai_job.go
  61. 21 0
      services/vod/struct_ai_job_list_in_list_ai_job.go
  62. 21 0
      services/vod/struct_ai_job_list_in_submit_ai_job.go
  63. 27 0
      services/vod/struct_ai_video_category_job.go
  64. 21 0
      services/vod/struct_ai_video_category_job_list.go
  65. 27 0
      services/vod/struct_ai_video_censor_job.go
  66. 21 0
      services/vod/struct_ai_video_censor_job_list.go
  67. 27 0
      services/vod/struct_ai_video_cover_job.go
  68. 21 0
      services/vod/struct_ai_video_cover_job_list.go
  69. 27 0
      services/vod/struct_ai_video_porn_recog_job.go
  70. 21 0
      services/vod/struct_ai_video_porn_recog_job_list.go
  71. 27 0
      services/vod/struct_ai_video_summary_job.go
  72. 21 0
      services/vod/struct_ai_video_summary_job_list.go
  73. 27 0
      services/vod/struct_ai_video_terrorism_recog_job.go
  74. 21 0
      services/vod/struct_ai_video_terrorism_recog_job_list.go
  75. 27 0
      services/vod/struct_aiasr_job.go
  76. 21 0
      services/vod/struct_aiasr_job_list.go
  77. 40 0
      services/vod/struct_audio.go
  78. 36 0
      services/vod/struct_audio_stream.go
  79. 21 0
      services/vod/struct_audio_stream_list.go
  80. 21 0
      services/vod/struct_bps_data_per_interval.go
  81. 24 0
      services/vod/struct_category.go
  82. 27 0
      services/vod/struct_cdn_metric.go
  83. 21 0
      services/vod/struct_cdn_statis_list.go
  84. 30 0
      services/vod/struct_data_module.go
  85. 33 0
      services/vod/struct_data_module_in_describe_domain_bps_data.go
  86. 25 0
      services/vod/struct_domain_log_detail.go
  87. 21 0
      services/vod/struct_domain_log_details.go
  88. 22 0
      services/vod/struct_domain_log_model.go
  89. 21 0
      services/vod/struct_flow_data_per_interval.go
  90. 21 0
      services/vod/struct_histories.go
  91. 25 0
      services/vod/struct_history.go
  92. 27 0
      services/vod/struct_image_info.go
  93. 28 0
      services/vod/struct_live_record_video.go
  94. 21 0
      services/vod/struct_live_record_video_list.go
  95. 36 0
      services/vod/struct_material.go
  96. 21 0
      services/vod/struct_material_list.go
  97. 25 0
      services/vod/struct_media.go
  98. 21 0
      services/vod/struct_media_list.go
  99. 25 0
      services/vod/struct_media_snapshot.go
  100. 26 0
      services/vod/struct_message_callback.go

+ 8 - 0
ChangeLog.txt

@@ -1,3 +1,11 @@
+2018-08-04 Version: 1.24.2
+1, Add a new api called SetAuditSecurityIp to set audit security ip.
+2, Add a new api called ListAuditSecurityIp to query audit security ip list.
+3, Add a new api called UploadMediaByURL to bulk upload media based on urls.
+4, Add the field called StorageLocation and TemplateGroupId to GetVideoInfo api response.
+5, Add the field called StorageLocation and TemplateGroupId to GetVideoInfos api response.
+6, Add the field called OutputType and Status to GetPlayInfo api response.
+
 2018-08-04 Version: 1.24.1
 1, CreateOfficeConversionTask add TgtFilePages field to specify the final uploaded page
 

+ 108 - 0
services/vod/add_category.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"
+)
+
+// AddCategory invokes the vod.AddCategory API synchronously
+// api document: https://help.aliyun.com/api/vod/addcategory.html
+func (client *Client) AddCategory(request *AddCategoryRequest) (response *AddCategoryResponse, err error) {
+	response = CreateAddCategoryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddCategoryWithChan invokes the vod.AddCategory API asynchronously
+// api document: https://help.aliyun.com/api/vod/addcategory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCategoryWithChan(request *AddCategoryRequest) (<-chan *AddCategoryResponse, <-chan error) {
+	responseChan := make(chan *AddCategoryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddCategory(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddCategoryWithCallback invokes the vod.AddCategory API asynchronously
+// api document: https://help.aliyun.com/api/vod/addcategory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCategoryWithCallback(request *AddCategoryRequest, callback func(response *AddCategoryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddCategoryResponse
+		var err error
+		defer close(result)
+		response, err = client.AddCategory(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddCategoryRequest is the request struct for api AddCategory
+type AddCategoryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string           `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              string           `position:"Query" name:"OwnerId"`
+	ParentId             requests.Integer `position:"Query" name:"ParentId"`
+	CateName             string           `position:"Query" name:"CateName"`
+}
+
+// AddCategoryResponse is the response struct for api AddCategory
+type AddCategoryResponse struct {
+	*responses.BaseResponse
+	RequestId string   `json:"RequestId" xml:"RequestId"`
+	Category  Category `json:"Category" xml:"Category"`
+}
+
+// CreateAddCategoryRequest creates a request to invoke AddCategory API
+func CreateAddCategoryRequest() (request *AddCategoryRequest) {
+	request = &AddCategoryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "AddCategory", "vod", "openAPI")
+	return
+}
+
+// CreateAddCategoryResponse creates a response to parse from AddCategory response
+func CreateAddCategoryResponse() (response *AddCategoryResponse) {
+	response = &AddCategoryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/vod/add_editing_project.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"
+)
+
+// AddEditingProject invokes the vod.AddEditingProject API synchronously
+// api document: https://help.aliyun.com/api/vod/addeditingproject.html
+func (client *Client) AddEditingProject(request *AddEditingProjectRequest) (response *AddEditingProjectResponse, err error) {
+	response = CreateAddEditingProjectResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddEditingProjectWithChan invokes the vod.AddEditingProject API asynchronously
+// api document: https://help.aliyun.com/api/vod/addeditingproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddEditingProjectWithChan(request *AddEditingProjectRequest) (<-chan *AddEditingProjectResponse, <-chan error) {
+	responseChan := make(chan *AddEditingProjectResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddEditingProject(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddEditingProjectWithCallback invokes the vod.AddEditingProject API asynchronously
+// api document: https://help.aliyun.com/api/vod/addeditingproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddEditingProjectWithCallback(request *AddEditingProjectRequest, callback func(response *AddEditingProjectResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddEditingProjectResponse
+		var err error
+		defer close(result)
+		response, err = client.AddEditingProject(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddEditingProjectRequest is the request struct for api AddEditingProject
+type AddEditingProjectRequest struct {
+	*requests.RpcRequest
+	CoverURL             string `position:"Query" name:"CoverURL"`
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	Description          string `position:"Query" name:"Description"`
+	Timeline             string `position:"Query" name:"Timeline"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+	Title                string `position:"Query" name:"Title"`
+}
+
+// AddEditingProjectResponse is the response struct for api AddEditingProject
+type AddEditingProjectResponse struct {
+	*responses.BaseResponse
+	RequestId string  `json:"RequestId" xml:"RequestId"`
+	Project   Project `json:"Project" xml:"Project"`
+}
+
+// CreateAddEditingProjectRequest creates a request to invoke AddEditingProject API
+func CreateAddEditingProjectRequest() (request *AddEditingProjectRequest) {
+	request = &AddEditingProjectRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "AddEditingProject", "vod", "openAPI")
+	return
+}
+
+// CreateAddEditingProjectResponse creates a response to parse from AddEditingProject response
+func CreateAddEditingProjectResponse() (response *AddEditingProjectResponse) {
+	response = &AddEditingProjectResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 81 - 0
services/vod/client.go

@@ -0,0 +1,81 @@
+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"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
+)
+
+// Client is the sdk client struct, each func corresponds to an OpenAPI
+type Client struct {
+	sdk.Client
+}
+
+// NewClient creates a sdk client with environment variables
+func NewClient() (client *Client, err error) {
+	client = &Client{}
+	err = client.Init()
+	return
+}
+
+// NewClientWithOptions creates a sdk client with regionId/sdkConfig/credential
+// this is the common api to create a sdk client
+func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithOptions(regionId, config, credential)
+	return
+}
+
+// NewClientWithAccessKey is a shortcut to create sdk client with accesskey
+// usage: https://help.aliyun.com/document_detail/66217.html
+func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	return
+}
+
+// NewClientWithStsToken is a shortcut to create sdk client with sts token
+// usage: https://help.aliyun.com/document_detail/66222.html
+func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn
+// usage: https://help.aliyun.com/document_detail/66222.html
+func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName)
+	return
+}
+
+// NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role
+// usage: https://help.aliyun.com/document_detail/66223.html
+func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithEcsRamRole(regionId, roleName)
+	return
+}
+
+// NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair
+// attention: rsa key pair auth is only Japan regions available
+func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration)
+	return
+}

+ 103 - 0
services/vod/create_audit.go

@@ -0,0 +1,103 @@
+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"
+)
+
+// CreateAudit invokes the vod.CreateAudit API synchronously
+// api document: https://help.aliyun.com/api/vod/createaudit.html
+func (client *Client) CreateAudit(request *CreateAuditRequest) (response *CreateAuditResponse, err error) {
+	response = CreateCreateAuditResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateAuditWithChan invokes the vod.CreateAudit API asynchronously
+// api document: https://help.aliyun.com/api/vod/createaudit.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAuditWithChan(request *CreateAuditRequest) (<-chan *CreateAuditResponse, <-chan error) {
+	responseChan := make(chan *CreateAuditResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateAudit(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateAuditWithCallback invokes the vod.CreateAudit API asynchronously
+// api document: https://help.aliyun.com/api/vod/createaudit.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAuditWithCallback(request *CreateAuditRequest, callback func(response *CreateAuditResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateAuditResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateAudit(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateAuditRequest is the request struct for api CreateAudit
+type CreateAuditRequest struct {
+	*requests.RpcRequest
+	AuditContent string `position:"Query" name:"AuditContent"`
+}
+
+// CreateAuditResponse is the response struct for api CreateAudit
+type CreateAuditResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCreateAuditRequest creates a request to invoke CreateAudit API
+func CreateCreateAuditRequest() (request *CreateAuditRequest) {
+	request = &CreateAuditRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "CreateAudit", "vod", "openAPI")
+	return
+}
+
+// CreateCreateAuditResponse creates a response to parse from CreateAudit response
+func CreateCreateAuditResponse() (response *CreateAuditResponse) {
+	response = &CreateAuditResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/vod/create_upload_image.go

@@ -0,0 +1,115 @@
+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"
+)
+
+// CreateUploadImage invokes the vod.CreateUploadImage API synchronously
+// api document: https://help.aliyun.com/api/vod/createuploadimage.html
+func (client *Client) CreateUploadImage(request *CreateUploadImageRequest) (response *CreateUploadImageResponse, err error) {
+	response = CreateCreateUploadImageResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateUploadImageWithChan invokes the vod.CreateUploadImage API asynchronously
+// api document: https://help.aliyun.com/api/vod/createuploadimage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUploadImageWithChan(request *CreateUploadImageRequest) (<-chan *CreateUploadImageResponse, <-chan error) {
+	responseChan := make(chan *CreateUploadImageResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateUploadImage(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateUploadImageWithCallback invokes the vod.CreateUploadImage API asynchronously
+// api document: https://help.aliyun.com/api/vod/createuploadimage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUploadImageWithCallback(request *CreateUploadImageRequest, callback func(response *CreateUploadImageResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateUploadImageResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateUploadImage(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateUploadImageRequest is the request struct for api CreateUploadImage
+type CreateUploadImageRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ImageType            string           `position:"Query" name:"ImageType"`
+	OriginalFileName     string           `position:"Query" name:"OriginalFileName"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ImageExt             string           `position:"Query" name:"ImageExt"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Title                string           `position:"Query" name:"Title"`
+	Tags                 string           `position:"Query" name:"Tags"`
+	StorageLocation      string           `position:"Query" name:"StorageLocation"`
+}
+
+// CreateUploadImageResponse is the response struct for api CreateUploadImage
+type CreateUploadImageResponse struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	ImageId       string `json:"ImageId" xml:"ImageId"`
+	ImageURL      string `json:"ImageURL" xml:"ImageURL"`
+	UploadAddress string `json:"UploadAddress" xml:"UploadAddress"`
+	UploadAuth    string `json:"UploadAuth" xml:"UploadAuth"`
+}
+
+// CreateCreateUploadImageRequest creates a request to invoke CreateUploadImage API
+func CreateCreateUploadImageRequest() (request *CreateUploadImageRequest) {
+	request = &CreateUploadImageRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "CreateUploadImage", "vod", "openAPI")
+	return
+}
+
+// CreateCreateUploadImageResponse creates a response to parse from CreateUploadImage response
+func CreateCreateUploadImageResponse() (response *CreateUploadImageResponse) {
+	response = &CreateUploadImageResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 120 - 0
services/vod/create_upload_video.go

@@ -0,0 +1,120 @@
+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"
+)
+
+// CreateUploadVideo invokes the vod.CreateUploadVideo API synchronously
+// api document: https://help.aliyun.com/api/vod/createuploadvideo.html
+func (client *Client) CreateUploadVideo(request *CreateUploadVideoRequest) (response *CreateUploadVideoResponse, err error) {
+	response = CreateCreateUploadVideoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateUploadVideoWithChan invokes the vod.CreateUploadVideo API asynchronously
+// api document: https://help.aliyun.com/api/vod/createuploadvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUploadVideoWithChan(request *CreateUploadVideoRequest) (<-chan *CreateUploadVideoResponse, <-chan error) {
+	responseChan := make(chan *CreateUploadVideoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateUploadVideo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateUploadVideoWithCallback invokes the vod.CreateUploadVideo API asynchronously
+// api document: https://help.aliyun.com/api/vod/createuploadvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUploadVideoWithCallback(request *CreateUploadVideoRequest, callback func(response *CreateUploadVideoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateUploadVideoResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateUploadVideo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateUploadVideoRequest is the request struct for api CreateUploadVideo
+type CreateUploadVideoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	TranscodeMode        string           `position:"Query" name:"TranscodeMode"`
+	IP                   string           `position:"Query" name:"IP"`
+	Description          string           `position:"Query" name:"Description"`
+	FileSize             requests.Integer `position:"Query" name:"FileSize"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Title                string           `position:"Query" name:"Title"`
+	Tags                 string           `position:"Query" name:"Tags"`
+	StorageLocation      string           `position:"Query" name:"StorageLocation"`
+	CoverURL             string           `position:"Query" name:"CoverURL"`
+	UserData             string           `position:"Query" name:"UserData"`
+	FileName             string           `position:"Query" name:"FileName"`
+	TemplateGroupId      string           `position:"Query" name:"TemplateGroupId"`
+	CateId               requests.Integer `position:"Query" name:"CateId"`
+}
+
+// CreateUploadVideoResponse is the response struct for api CreateUploadVideo
+type CreateUploadVideoResponse struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	VideoId       string `json:"VideoId" xml:"VideoId"`
+	UploadAddress string `json:"UploadAddress" xml:"UploadAddress"`
+	UploadAuth    string `json:"UploadAuth" xml:"UploadAuth"`
+}
+
+// CreateCreateUploadVideoRequest creates a request to invoke CreateUploadVideo API
+func CreateCreateUploadVideoRequest() (request *CreateUploadVideoRequest) {
+	request = &CreateUploadVideoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "CreateUploadVideo", "vod", "openAPI")
+	return
+}
+
+// CreateCreateUploadVideoResponse creates a response to parse from CreateUploadVideo response
+func CreateCreateUploadVideoResponse() (response *CreateUploadVideoResponse) {
+	response = &CreateUploadVideoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/vod/delete_category.go

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

+ 107 - 0
services/vod/delete_editing_project.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"
+)
+
+// DeleteEditingProject invokes the vod.DeleteEditingProject API synchronously
+// api document: https://help.aliyun.com/api/vod/deleteeditingproject.html
+func (client *Client) DeleteEditingProject(request *DeleteEditingProjectRequest) (response *DeleteEditingProjectResponse, err error) {
+	response = CreateDeleteEditingProjectResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteEditingProjectWithChan invokes the vod.DeleteEditingProject API asynchronously
+// api document: https://help.aliyun.com/api/vod/deleteeditingproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteEditingProjectWithChan(request *DeleteEditingProjectRequest) (<-chan *DeleteEditingProjectResponse, <-chan error) {
+	responseChan := make(chan *DeleteEditingProjectResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteEditingProject(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteEditingProjectWithCallback invokes the vod.DeleteEditingProject API asynchronously
+// api document: https://help.aliyun.com/api/vod/deleteeditingproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteEditingProjectWithCallback(request *DeleteEditingProjectRequest, callback func(response *DeleteEditingProjectResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteEditingProjectResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteEditingProject(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteEditingProjectRequest is the request struct for api DeleteEditingProject
+type DeleteEditingProjectRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	ProjectIds           string `position:"Query" name:"ProjectIds"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+}
+
+// DeleteEditingProjectResponse is the response struct for api DeleteEditingProject
+type DeleteEditingProjectResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteEditingProjectRequest creates a request to invoke DeleteEditingProject API
+func CreateDeleteEditingProjectRequest() (request *DeleteEditingProjectRequest) {
+	request = &DeleteEditingProjectRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DeleteEditingProject", "vod", "openAPI")
+	return
+}
+
+// CreateDeleteEditingProjectResponse creates a response to parse from DeleteEditingProject response
+func CreateDeleteEditingProjectResponse() (response *DeleteEditingProjectResponse) {
+	response = &DeleteEditingProjectResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/vod/delete_stream.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"
+)
+
+// DeleteStream invokes the vod.DeleteStream API synchronously
+// api document: https://help.aliyun.com/api/vod/deletestream.html
+func (client *Client) DeleteStream(request *DeleteStreamRequest) (response *DeleteStreamResponse, err error) {
+	response = CreateDeleteStreamResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteStreamWithChan invokes the vod.DeleteStream API asynchronously
+// api document: https://help.aliyun.com/api/vod/deletestream.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteStreamWithChan(request *DeleteStreamRequest) (<-chan *DeleteStreamResponse, <-chan error) {
+	responseChan := make(chan *DeleteStreamResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteStream(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteStreamWithCallback invokes the vod.DeleteStream API asynchronously
+// api document: https://help.aliyun.com/api/vod/deletestream.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteStreamWithCallback(request *DeleteStreamRequest, callback func(response *DeleteStreamResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteStreamResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteStream(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteStreamRequest is the request struct for api DeleteStream
+type DeleteStreamRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	JobIds               string           `position:"Query" name:"JobIds"`
+	VideoId              string           `position:"Query" name:"VideoId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteStreamResponse is the response struct for api DeleteStream
+type DeleteStreamResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteStreamRequest creates a request to invoke DeleteStream API
+func CreateDeleteStreamRequest() (request *DeleteStreamRequest) {
+	request = &DeleteStreamRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DeleteStream", "vod", "openAPI")
+	return
+}
+
+// CreateDeleteStreamResponse creates a response to parse from DeleteStream response
+func CreateDeleteStreamResponse() (response *DeleteStreamResponse) {
+	response = &DeleteStreamResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/vod/delete_video.go

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

+ 116 - 0
services/vod/describe_cdn_domain_logs.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"
+)
+
+// DescribeCdnDomainLogs invokes the vod.DescribeCdnDomainLogs API synchronously
+// api document: https://help.aliyun.com/api/vod/describecdndomainlogs.html
+func (client *Client) DescribeCdnDomainLogs(request *DescribeCdnDomainLogsRequest) (response *DescribeCdnDomainLogsResponse, err error) {
+	response = CreateDescribeCdnDomainLogsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCdnDomainLogsWithChan invokes the vod.DescribeCdnDomainLogs API asynchronously
+// api document: https://help.aliyun.com/api/vod/describecdndomainlogs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCdnDomainLogsWithChan(request *DescribeCdnDomainLogsRequest) (<-chan *DescribeCdnDomainLogsResponse, <-chan error) {
+	responseChan := make(chan *DescribeCdnDomainLogsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCdnDomainLogs(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCdnDomainLogsWithCallback invokes the vod.DescribeCdnDomainLogs API asynchronously
+// api document: https://help.aliyun.com/api/vod/describecdndomainlogs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCdnDomainLogsWithCallback(request *DescribeCdnDomainLogsRequest, callback func(response *DescribeCdnDomainLogsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCdnDomainLogsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCdnDomainLogs(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCdnDomainLogsRequest is the request struct for api DescribeCdnDomainLogs
+type DescribeCdnDomainLogsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string           `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	PageNo               requests.Integer `position:"Query" name:"PageNo"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	DomainName           string           `position:"Query" name:"DomainName"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	EndTime              string           `position:"Query" name:"EndTime"`
+	StartTime            string           `position:"Query" name:"StartTime"`
+	OwnerId              string           `position:"Query" name:"OwnerId"`
+	LogDay               string           `position:"Query" name:"LogDay"`
+}
+
+// DescribeCdnDomainLogsResponse is the response struct for api DescribeCdnDomainLogs
+type DescribeCdnDomainLogsResponse struct {
+	*responses.BaseResponse
+	RequestId      string         `json:"RequestId" xml:"RequestId"`
+	PageNo         int            `json:"PageNo" xml:"PageNo"`
+	PageSize       int            `json:"PageSize" xml:"PageSize"`
+	Total          int            `json:"Total" xml:"Total"`
+	DomainLogModel DomainLogModel `json:"DomainLogModel" xml:"DomainLogModel"`
+}
+
+// CreateDescribeCdnDomainLogsRequest creates a request to invoke DescribeCdnDomainLogs API
+func CreateDescribeCdnDomainLogsRequest() (request *DescribeCdnDomainLogsRequest) {
+	request = &DescribeCdnDomainLogsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DescribeCdnDomainLogs", "vod", "openAPI")
+	return
+}
+
+// CreateDescribeCdnDomainLogsResponse creates a response to parse from DescribeCdnDomainLogs response
+func CreateDescribeCdnDomainLogsResponse() (response *DescribeCdnDomainLogsResponse) {
+	response = &DescribeCdnDomainLogsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 119 - 0
services/vod/describe_domain_bps_data.go

@@ -0,0 +1,119 @@
+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"
+)
+
+// DescribeDomainBpsData invokes the vod.DescribeDomainBpsData API synchronously
+// api document: https://help.aliyun.com/api/vod/describedomainbpsdata.html
+func (client *Client) DescribeDomainBpsData(request *DescribeDomainBpsDataRequest) (response *DescribeDomainBpsDataResponse, err error) {
+	response = CreateDescribeDomainBpsDataResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDomainBpsDataWithChan invokes the vod.DescribeDomainBpsData API asynchronously
+// api document: https://help.aliyun.com/api/vod/describedomainbpsdata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDomainBpsDataWithChan(request *DescribeDomainBpsDataRequest) (<-chan *DescribeDomainBpsDataResponse, <-chan error) {
+	responseChan := make(chan *DescribeDomainBpsDataResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDomainBpsData(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDomainBpsDataWithCallback invokes the vod.DescribeDomainBpsData API asynchronously
+// api document: https://help.aliyun.com/api/vod/describedomainbpsdata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDomainBpsDataWithCallback(request *DescribeDomainBpsDataRequest, callback func(response *DescribeDomainBpsDataResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDomainBpsDataResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDomainBpsData(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDomainBpsDataRequest is the request struct for api DescribeDomainBpsData
+type DescribeDomainBpsDataRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	TimeMerge            string `position:"Query" name:"TimeMerge"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	DomainName           string `position:"Query" name:"DomainName"`
+	EndTime              string `position:"Query" name:"EndTime"`
+	LocationNameEn       string `position:"Query" name:"LocationNameEn"`
+	StartTime            string `position:"Query" name:"StartTime"`
+	IspNameEn            string `position:"Query" name:"IspNameEn"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+	Interval             string `position:"Query" name:"Interval"`
+}
+
+// DescribeDomainBpsDataResponse is the response struct for api DescribeDomainBpsData
+type DescribeDomainBpsDataResponse struct {
+	*responses.BaseResponse
+	RequestId          string             `json:"RequestId" xml:"RequestId"`
+	DomainName         string             `json:"DomainName" xml:"DomainName"`
+	DataInterval       string             `json:"DataInterval" xml:"DataInterval"`
+	StartTime          string             `json:"StartTime" xml:"StartTime"`
+	EndTime            string             `json:"EndTime" xml:"EndTime"`
+	BpsDataPerInterval BpsDataPerInterval `json:"BpsDataPerInterval" xml:"BpsDataPerInterval"`
+	SupplyBpsDatas     SupplyBpsDatas     `json:"SupplyBpsDatas" xml:"SupplyBpsDatas"`
+}
+
+// CreateDescribeDomainBpsDataRequest creates a request to invoke DescribeDomainBpsData API
+func CreateDescribeDomainBpsDataRequest() (request *DescribeDomainBpsDataRequest) {
+	request = &DescribeDomainBpsDataRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DescribeDomainBpsData", "vod", "openAPI")
+	return
+}
+
+// CreateDescribeDomainBpsDataResponse creates a response to parse from DescribeDomainBpsData response
+func CreateDescribeDomainBpsDataResponse() (response *DescribeDomainBpsDataResponse) {
+	response = &DescribeDomainBpsDataResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/vod/describe_domain_flow_data.go

@@ -0,0 +1,118 @@
+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"
+)
+
+// DescribeDomainFlowData invokes the vod.DescribeDomainFlowData API synchronously
+// api document: https://help.aliyun.com/api/vod/describedomainflowdata.html
+func (client *Client) DescribeDomainFlowData(request *DescribeDomainFlowDataRequest) (response *DescribeDomainFlowDataResponse, err error) {
+	response = CreateDescribeDomainFlowDataResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDomainFlowDataWithChan invokes the vod.DescribeDomainFlowData API asynchronously
+// api document: https://help.aliyun.com/api/vod/describedomainflowdata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDomainFlowDataWithChan(request *DescribeDomainFlowDataRequest) (<-chan *DescribeDomainFlowDataResponse, <-chan error) {
+	responseChan := make(chan *DescribeDomainFlowDataResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDomainFlowData(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDomainFlowDataWithCallback invokes the vod.DescribeDomainFlowData API asynchronously
+// api document: https://help.aliyun.com/api/vod/describedomainflowdata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDomainFlowDataWithCallback(request *DescribeDomainFlowDataRequest, callback func(response *DescribeDomainFlowDataResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDomainFlowDataResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDomainFlowData(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDomainFlowDataRequest is the request struct for api DescribeDomainFlowData
+type DescribeDomainFlowDataRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	TimeMerge            string `position:"Query" name:"TimeMerge"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	DomainName           string `position:"Query" name:"DomainName"`
+	EndTime              string `position:"Query" name:"EndTime"`
+	LocationNameEn       string `position:"Query" name:"LocationNameEn"`
+	StartTime            string `position:"Query" name:"StartTime"`
+	IspNameEn            string `position:"Query" name:"IspNameEn"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+	Interval             string `position:"Query" name:"Interval"`
+}
+
+// DescribeDomainFlowDataResponse is the response struct for api DescribeDomainFlowData
+type DescribeDomainFlowDataResponse struct {
+	*responses.BaseResponse
+	RequestId           string              `json:"RequestId" xml:"RequestId"`
+	DomainName          string              `json:"DomainName" xml:"DomainName"`
+	DataInterval        string              `json:"DataInterval" xml:"DataInterval"`
+	StartTime           string              `json:"StartTime" xml:"StartTime"`
+	EndTime             string              `json:"EndTime" xml:"EndTime"`
+	FlowDataPerInterval FlowDataPerInterval `json:"FlowDataPerInterval" xml:"FlowDataPerInterval"`
+}
+
+// CreateDescribeDomainFlowDataRequest creates a request to invoke DescribeDomainFlowData API
+func CreateDescribeDomainFlowDataRequest() (request *DescribeDomainFlowDataRequest) {
+	request = &DescribeDomainFlowDataRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DescribeDomainFlowData", "vod", "openAPI")
+	return
+}
+
+// CreateDescribeDomainFlowDataResponse creates a response to parse from DescribeDomainFlowData response
+func CreateDescribeDomainFlowDataResponse() (response *DescribeDomainFlowDataResponse) {
+	response = &DescribeDomainFlowDataResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/vod/describe_play_top_videos.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"
+)
+
+// DescribePlayTopVideos invokes the vod.DescribePlayTopVideos API synchronously
+// api document: https://help.aliyun.com/api/vod/describeplaytopvideos.html
+func (client *Client) DescribePlayTopVideos(request *DescribePlayTopVideosRequest) (response *DescribePlayTopVideosResponse, err error) {
+	response = CreateDescribePlayTopVideosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribePlayTopVideosWithChan invokes the vod.DescribePlayTopVideos API asynchronously
+// api document: https://help.aliyun.com/api/vod/describeplaytopvideos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePlayTopVideosWithChan(request *DescribePlayTopVideosRequest) (<-chan *DescribePlayTopVideosResponse, <-chan error) {
+	responseChan := make(chan *DescribePlayTopVideosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribePlayTopVideos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribePlayTopVideosWithCallback invokes the vod.DescribePlayTopVideos API asynchronously
+// api document: https://help.aliyun.com/api/vod/describeplaytopvideos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePlayTopVideosWithCallback(request *DescribePlayTopVideosRequest, callback func(response *DescribePlayTopVideosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribePlayTopVideosResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribePlayTopVideos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribePlayTopVideosRequest is the request struct for api DescribePlayTopVideos
+type DescribePlayTopVideosRequest struct {
+	*requests.RpcRequest
+	BizDate  string           `position:"Query" name:"BizDate"`
+	PageNo   requests.Integer `position:"Query" name:"PageNo"`
+	PageSize requests.Integer `position:"Query" name:"PageSize"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribePlayTopVideosResponse is the response struct for api DescribePlayTopVideos
+type DescribePlayTopVideosResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	PageNo        int           `json:"PageNo" xml:"PageNo"`
+	PageSize      int           `json:"PageSize" xml:"PageSize"`
+	TotalNum      int           `json:"TotalNum" xml:"TotalNum"`
+	TopPlayVideos TopPlayVideos `json:"TopPlayVideos" xml:"TopPlayVideos"`
+}
+
+// CreateDescribePlayTopVideosRequest creates a request to invoke DescribePlayTopVideos API
+func CreateDescribePlayTopVideosRequest() (request *DescribePlayTopVideosRequest) {
+	request = &DescribePlayTopVideosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DescribePlayTopVideos", "vod", "openAPI")
+	return
+}
+
+// CreateDescribePlayTopVideosResponse creates a response to parse from DescribePlayTopVideos response
+func CreateDescribePlayTopVideosResponse() (response *DescribePlayTopVideosResponse) {
+	response = &DescribePlayTopVideosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/vod/describe_play_user_avg.go

@@ -0,0 +1,106 @@
+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"
+)
+
+// DescribePlayUserAvg invokes the vod.DescribePlayUserAvg API synchronously
+// api document: https://help.aliyun.com/api/vod/describeplayuseravg.html
+func (client *Client) DescribePlayUserAvg(request *DescribePlayUserAvgRequest) (response *DescribePlayUserAvgResponse, err error) {
+	response = CreateDescribePlayUserAvgResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribePlayUserAvgWithChan invokes the vod.DescribePlayUserAvg API asynchronously
+// api document: https://help.aliyun.com/api/vod/describeplayuseravg.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePlayUserAvgWithChan(request *DescribePlayUserAvgRequest) (<-chan *DescribePlayUserAvgResponse, <-chan error) {
+	responseChan := make(chan *DescribePlayUserAvgResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribePlayUserAvg(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribePlayUserAvgWithCallback invokes the vod.DescribePlayUserAvg API asynchronously
+// api document: https://help.aliyun.com/api/vod/describeplayuseravg.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePlayUserAvgWithCallback(request *DescribePlayUserAvgRequest, callback func(response *DescribePlayUserAvgResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribePlayUserAvgResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribePlayUserAvg(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribePlayUserAvgRequest is the request struct for api DescribePlayUserAvg
+type DescribePlayUserAvgRequest struct {
+	*requests.RpcRequest
+	EndTime   string           `position:"Query" name:"EndTime"`
+	StartTime string           `position:"Query" name:"StartTime"`
+	OwnerId   requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribePlayUserAvgResponse is the response struct for api DescribePlayUserAvg
+type DescribePlayUserAvgResponse struct {
+	*responses.BaseResponse
+	RequestId          string             `json:"RequestId" xml:"RequestId"`
+	UserPlayStatisAvgs UserPlayStatisAvgs `json:"UserPlayStatisAvgs" xml:"UserPlayStatisAvgs"`
+}
+
+// CreateDescribePlayUserAvgRequest creates a request to invoke DescribePlayUserAvg API
+func CreateDescribePlayUserAvgRequest() (request *DescribePlayUserAvgRequest) {
+	request = &DescribePlayUserAvgRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DescribePlayUserAvg", "vod", "openAPI")
+	return
+}
+
+// CreateDescribePlayUserAvgResponse creates a response to parse from DescribePlayUserAvg response
+func CreateDescribePlayUserAvgResponse() (response *DescribePlayUserAvgResponse) {
+	response = &DescribePlayUserAvgResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/vod/describe_play_user_total.go

@@ -0,0 +1,106 @@
+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"
+)
+
+// DescribePlayUserTotal invokes the vod.DescribePlayUserTotal API synchronously
+// api document: https://help.aliyun.com/api/vod/describeplayusertotal.html
+func (client *Client) DescribePlayUserTotal(request *DescribePlayUserTotalRequest) (response *DescribePlayUserTotalResponse, err error) {
+	response = CreateDescribePlayUserTotalResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribePlayUserTotalWithChan invokes the vod.DescribePlayUserTotal API asynchronously
+// api document: https://help.aliyun.com/api/vod/describeplayusertotal.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePlayUserTotalWithChan(request *DescribePlayUserTotalRequest) (<-chan *DescribePlayUserTotalResponse, <-chan error) {
+	responseChan := make(chan *DescribePlayUserTotalResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribePlayUserTotal(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribePlayUserTotalWithCallback invokes the vod.DescribePlayUserTotal API asynchronously
+// api document: https://help.aliyun.com/api/vod/describeplayusertotal.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePlayUserTotalWithCallback(request *DescribePlayUserTotalRequest, callback func(response *DescribePlayUserTotalResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribePlayUserTotalResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribePlayUserTotal(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribePlayUserTotalRequest is the request struct for api DescribePlayUserTotal
+type DescribePlayUserTotalRequest struct {
+	*requests.RpcRequest
+	EndTime   string           `position:"Query" name:"EndTime"`
+	StartTime string           `position:"Query" name:"StartTime"`
+	OwnerId   requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribePlayUserTotalResponse is the response struct for api DescribePlayUserTotal
+type DescribePlayUserTotalResponse struct {
+	*responses.BaseResponse
+	RequestId            string               `json:"RequestId" xml:"RequestId"`
+	UserPlayStatisTotals UserPlayStatisTotals `json:"UserPlayStatisTotals" xml:"UserPlayStatisTotals"`
+}
+
+// CreateDescribePlayUserTotalRequest creates a request to invoke DescribePlayUserTotal API
+func CreateDescribePlayUserTotalRequest() (request *DescribePlayUserTotalRequest) {
+	request = &DescribePlayUserTotalRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DescribePlayUserTotal", "vod", "openAPI")
+	return
+}
+
+// CreateDescribePlayUserTotalResponse creates a response to parse from DescribePlayUserTotal response
+func CreateDescribePlayUserTotalResponse() (response *DescribePlayUserTotalResponse) {
+	response = &DescribePlayUserTotalResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/vod/describe_play_video_statis.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"
+)
+
+// DescribePlayVideoStatis invokes the vod.DescribePlayVideoStatis API synchronously
+// api document: https://help.aliyun.com/api/vod/describeplayvideostatis.html
+func (client *Client) DescribePlayVideoStatis(request *DescribePlayVideoStatisRequest) (response *DescribePlayVideoStatisResponse, err error) {
+	response = CreateDescribePlayVideoStatisResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribePlayVideoStatisWithChan invokes the vod.DescribePlayVideoStatis API asynchronously
+// api document: https://help.aliyun.com/api/vod/describeplayvideostatis.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePlayVideoStatisWithChan(request *DescribePlayVideoStatisRequest) (<-chan *DescribePlayVideoStatisResponse, <-chan error) {
+	responseChan := make(chan *DescribePlayVideoStatisResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribePlayVideoStatis(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribePlayVideoStatisWithCallback invokes the vod.DescribePlayVideoStatis API asynchronously
+// api document: https://help.aliyun.com/api/vod/describeplayvideostatis.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePlayVideoStatisWithCallback(request *DescribePlayVideoStatisRequest, callback func(response *DescribePlayVideoStatisResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribePlayVideoStatisResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribePlayVideoStatis(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribePlayVideoStatisRequest is the request struct for api DescribePlayVideoStatis
+type DescribePlayVideoStatisRequest struct {
+	*requests.RpcRequest
+	EndTime   string           `position:"Query" name:"EndTime"`
+	VideoId   string           `position:"Query" name:"VideoId"`
+	StartTime string           `position:"Query" name:"StartTime"`
+	OwnerId   requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribePlayVideoStatisResponse is the response struct for api DescribePlayVideoStatis
+type DescribePlayVideoStatisResponse struct {
+	*responses.BaseResponse
+	RequestId              string                 `json:"RequestId" xml:"RequestId"`
+	VideoPlayStatisDetails VideoPlayStatisDetails `json:"VideoPlayStatisDetails" xml:"VideoPlayStatisDetails"`
+}
+
+// CreateDescribePlayVideoStatisRequest creates a request to invoke DescribePlayVideoStatis API
+func CreateDescribePlayVideoStatisRequest() (request *DescribePlayVideoStatisRequest) {
+	request = &DescribePlayVideoStatisRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DescribePlayVideoStatis", "vod", "openAPI")
+	return
+}
+
+// CreateDescribePlayVideoStatisResponse creates a response to parse from DescribePlayVideoStatis response
+func CreateDescribePlayVideoStatisResponse() (response *DescribePlayVideoStatisResponse) {
+	response = &DescribePlayVideoStatisResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/vod/describe_refresh_quota.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"
+)
+
+// DescribeRefreshQuota invokes the vod.DescribeRefreshQuota API synchronously
+// api document: https://help.aliyun.com/api/vod/describerefreshquota.html
+func (client *Client) DescribeRefreshQuota(request *DescribeRefreshQuotaRequest) (response *DescribeRefreshQuotaResponse, err error) {
+	response = CreateDescribeRefreshQuotaResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeRefreshQuotaWithChan invokes the vod.DescribeRefreshQuota API asynchronously
+// api document: https://help.aliyun.com/api/vod/describerefreshquota.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeRefreshQuotaWithChan(request *DescribeRefreshQuotaRequest) (<-chan *DescribeRefreshQuotaResponse, <-chan error) {
+	responseChan := make(chan *DescribeRefreshQuotaResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeRefreshQuota(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeRefreshQuotaWithCallback invokes the vod.DescribeRefreshQuota API asynchronously
+// api document: https://help.aliyun.com/api/vod/describerefreshquota.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeRefreshQuotaWithCallback(request *DescribeRefreshQuotaRequest, callback func(response *DescribeRefreshQuotaResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeRefreshQuotaResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeRefreshQuota(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeRefreshQuotaRequest is the request struct for api DescribeRefreshQuota
+type DescribeRefreshQuotaRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+}
+
+// DescribeRefreshQuotaResponse is the response struct for api DescribeRefreshQuota
+type DescribeRefreshQuotaResponse struct {
+	*responses.BaseResponse
+	RequestId         string            `json:"RequestId" xml:"RequestId"`
+	RefreshCacheQuota RefreshCacheQuota `json:"RefreshCacheQuota" xml:"RefreshCacheQuota"`
+}
+
+// CreateDescribeRefreshQuotaRequest creates a request to invoke DescribeRefreshQuota API
+func CreateDescribeRefreshQuotaRequest() (request *DescribeRefreshQuotaRequest) {
+	request = &DescribeRefreshQuotaRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DescribeRefreshQuota", "vod", "openAPI")
+	return
+}
+
+// CreateDescribeRefreshQuotaResponse creates a response to parse from DescribeRefreshQuota response
+func CreateDescribeRefreshQuotaResponse() (response *DescribeRefreshQuotaResponse) {
+	response = &DescribeRefreshQuotaResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 119 - 0
services/vod/describe_refresh_tasks.go

@@ -0,0 +1,119 @@
+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"
+)
+
+// DescribeRefreshTasks invokes the vod.DescribeRefreshTasks API synchronously
+// api document: https://help.aliyun.com/api/vod/describerefreshtasks.html
+func (client *Client) DescribeRefreshTasks(request *DescribeRefreshTasksRequest) (response *DescribeRefreshTasksResponse, err error) {
+	response = CreateDescribeRefreshTasksResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeRefreshTasksWithChan invokes the vod.DescribeRefreshTasks API asynchronously
+// api document: https://help.aliyun.com/api/vod/describerefreshtasks.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeRefreshTasksWithChan(request *DescribeRefreshTasksRequest) (<-chan *DescribeRefreshTasksResponse, <-chan error) {
+	responseChan := make(chan *DescribeRefreshTasksResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeRefreshTasks(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeRefreshTasksWithCallback invokes the vod.DescribeRefreshTasks API asynchronously
+// api document: https://help.aliyun.com/api/vod/describerefreshtasks.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeRefreshTasksWithCallback(request *DescribeRefreshTasksRequest, callback func(response *DescribeRefreshTasksResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeRefreshTasksResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeRefreshTasks(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeRefreshTasksRequest is the request struct for api DescribeRefreshTasks
+type DescribeRefreshTasksRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string           `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	ObjectPath           string           `position:"Query" name:"ObjectPath"`
+	DomainName           string           `position:"Query" name:"DomainName"`
+	EndTime              string           `position:"Query" name:"EndTime"`
+	StartTime            string           `position:"Query" name:"StartTime"`
+	OwnerId              string           `position:"Query" name:"OwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ObjectType           string           `position:"Query" name:"ObjectType"`
+	TaskId               string           `position:"Query" name:"TaskId"`
+	Status               string           `position:"Query" name:"Status"`
+}
+
+// DescribeRefreshTasksResponse is the response struct for api DescribeRefreshTasks
+type DescribeRefreshTasksResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	PageSize   int    `json:"PageSize" xml:"PageSize"`
+	PageNumber int    `json:"PageNumber" xml:"PageNumber"`
+	TotalCount int    `json:"TotalCount" xml:"TotalCount"`
+	Tasks      Tasks  `json:"Tasks" xml:"Tasks"`
+}
+
+// CreateDescribeRefreshTasksRequest creates a request to invoke DescribeRefreshTasks API
+func CreateDescribeRefreshTasksRequest() (request *DescribeRefreshTasksRequest) {
+	request = &DescribeRefreshTasksRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "DescribeRefreshTasks", "vod", "openAPI")
+	return
+}
+
+// CreateDescribeRefreshTasksResponse creates a response to parse from DescribeRefreshTasks response
+func CreateDescribeRefreshTasksResponse() (response *DescribeRefreshTasksResponse) {
+	response = &DescribeRefreshTasksResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/get_audit_history.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"
+)
+
+// GetAuditHistory invokes the vod.GetAuditHistory API synchronously
+// api document: https://help.aliyun.com/api/vod/getaudithistory.html
+func (client *Client) GetAuditHistory(request *GetAuditHistoryRequest) (response *GetAuditHistoryResponse, err error) {
+	response = CreateGetAuditHistoryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetAuditHistoryWithChan invokes the vod.GetAuditHistory API asynchronously
+// api document: https://help.aliyun.com/api/vod/getaudithistory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetAuditHistoryWithChan(request *GetAuditHistoryRequest) (<-chan *GetAuditHistoryResponse, <-chan error) {
+	responseChan := make(chan *GetAuditHistoryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetAuditHistory(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetAuditHistoryWithCallback invokes the vod.GetAuditHistory API asynchronously
+// api document: https://help.aliyun.com/api/vod/getaudithistory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetAuditHistoryWithCallback(request *GetAuditHistoryRequest, callback func(response *GetAuditHistoryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetAuditHistoryResponse
+		var err error
+		defer close(result)
+		response, err = client.GetAuditHistory(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetAuditHistoryRequest is the request struct for api GetAuditHistory
+type GetAuditHistoryRequest struct {
+	*requests.RpcRequest
+	PageNo   requests.Integer `position:"Query" name:"PageNo"`
+	PageSize requests.Integer `position:"Query" name:"PageSize"`
+	VideoId  string           `position:"Query" name:"VideoId"`
+	SortBy   string           `position:"Query" name:"SortBy"`
+}
+
+// GetAuditHistoryResponse is the response struct for api GetAuditHistory
+type GetAuditHistoryResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Status    string    `json:"Status" xml:"Status"`
+	Total     int       `json:"Total" xml:"Total"`
+	Histories []History `json:"Histories" xml:"Histories"`
+}
+
+// CreateGetAuditHistoryRequest creates a request to invoke GetAuditHistory API
+func CreateGetAuditHistoryRequest() (request *GetAuditHistoryRequest) {
+	request = &GetAuditHistoryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetAuditHistory", "vod", "openAPI")
+	return
+}
+
+// CreateGetAuditHistoryResponse creates a response to parse from GetAuditHistory response
+func CreateGetAuditHistoryResponse() (response *GetAuditHistoryResponse) {
+	response = &GetAuditHistoryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/vod/get_audit_result.go

@@ -0,0 +1,104 @@
+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"
+)
+
+// GetAuditResult invokes the vod.GetAuditResult API synchronously
+// api document: https://help.aliyun.com/api/vod/getauditresult.html
+func (client *Client) GetAuditResult(request *GetAuditResultRequest) (response *GetAuditResultResponse, err error) {
+	response = CreateGetAuditResultResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetAuditResultWithChan invokes the vod.GetAuditResult API asynchronously
+// api document: https://help.aliyun.com/api/vod/getauditresult.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetAuditResultWithChan(request *GetAuditResultRequest) (<-chan *GetAuditResultResponse, <-chan error) {
+	responseChan := make(chan *GetAuditResultResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetAuditResult(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetAuditResultWithCallback invokes the vod.GetAuditResult API asynchronously
+// api document: https://help.aliyun.com/api/vod/getauditresult.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetAuditResultWithCallback(request *GetAuditResultRequest, callback func(response *GetAuditResultResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetAuditResultResponse
+		var err error
+		defer close(result)
+		response, err = client.GetAuditResult(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetAuditResultRequest is the request struct for api GetAuditResult
+type GetAuditResultRequest struct {
+	*requests.RpcRequest
+	VideoId string `position:"Query" name:"VideoId"`
+}
+
+// GetAuditResultResponse is the response struct for api GetAuditResult
+type GetAuditResultResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	AIAuditResult AIAuditResult `json:"AIAuditResult" xml:"AIAuditResult"`
+}
+
+// CreateGetAuditResultRequest creates a request to invoke GetAuditResult API
+func CreateGetAuditResultRequest() (request *GetAuditResultRequest) {
+	request = &GetAuditResultRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetAuditResult", "vod", "openAPI")
+	return
+}
+
+// CreateGetAuditResultResponse creates a response to parse from GetAuditResult response
+func CreateGetAuditResultResponse() (response *GetAuditResultResponse) {
+	response = &GetAuditResultResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/vod/get_categories.go

@@ -0,0 +1,112 @@
+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"
+)
+
+// GetCategories invokes the vod.GetCategories API synchronously
+// api document: https://help.aliyun.com/api/vod/getcategories.html
+func (client *Client) GetCategories(request *GetCategoriesRequest) (response *GetCategoriesResponse, err error) {
+	response = CreateGetCategoriesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetCategoriesWithChan invokes the vod.GetCategories API asynchronously
+// api document: https://help.aliyun.com/api/vod/getcategories.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetCategoriesWithChan(request *GetCategoriesRequest) (<-chan *GetCategoriesResponse, <-chan error) {
+	responseChan := make(chan *GetCategoriesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetCategories(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetCategoriesWithCallback invokes the vod.GetCategories API asynchronously
+// api document: https://help.aliyun.com/api/vod/getcategories.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetCategoriesWithCallback(request *GetCategoriesRequest, callback func(response *GetCategoriesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetCategoriesResponse
+		var err error
+		defer close(result)
+		response, err = client.GetCategories(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetCategoriesRequest is the request struct for api GetCategories
+type GetCategoriesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string           `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	CateId               requests.Integer `position:"Query" name:"CateId"`
+	PageNo               requests.Integer `position:"Query" name:"PageNo"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	SortBy               string           `position:"Query" name:"SortBy"`
+	OwnerId              string           `position:"Query" name:"OwnerId"`
+}
+
+// GetCategoriesResponse is the response struct for api GetCategories
+type GetCategoriesResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	SubTotal      int           `json:"SubTotal" xml:"SubTotal"`
+	Category      Category      `json:"Category" xml:"Category"`
+	SubCategories SubCategories `json:"SubCategories" xml:"SubCategories"`
+}
+
+// CreateGetCategoriesRequest creates a request to invoke GetCategories API
+func CreateGetCategoriesRequest() (request *GetCategoriesRequest) {
+	request = &GetCategoriesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetCategories", "vod", "openAPI")
+	return
+}
+
+// CreateGetCategoriesResponse creates a response to parse from GetCategories response
+func CreateGetCategoriesResponse() (response *GetCategoriesResponse) {
+	response = &GetCategoriesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/vod/get_cdn_statis_sum.go

@@ -0,0 +1,112 @@
+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"
+)
+
+// GetCDNStatisSum invokes the vod.GetCDNStatisSum API synchronously
+// api document: https://help.aliyun.com/api/vod/getcdnstatissum.html
+func (client *Client) GetCDNStatisSum(request *GetCDNStatisSumRequest) (response *GetCDNStatisSumResponse, err error) {
+	response = CreateGetCDNStatisSumResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetCDNStatisSumWithChan invokes the vod.GetCDNStatisSum API asynchronously
+// api document: https://help.aliyun.com/api/vod/getcdnstatissum.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetCDNStatisSumWithChan(request *GetCDNStatisSumRequest) (<-chan *GetCDNStatisSumResponse, <-chan error) {
+	responseChan := make(chan *GetCDNStatisSumResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetCDNStatisSum(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetCDNStatisSumWithCallback invokes the vod.GetCDNStatisSum API asynchronously
+// api document: https://help.aliyun.com/api/vod/getcdnstatissum.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetCDNStatisSumWithCallback(request *GetCDNStatisSumRequest, callback func(response *GetCDNStatisSumResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetCDNStatisSumResponse
+		var err error
+		defer close(result)
+		response, err = client.GetCDNStatisSum(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetCDNStatisSumRequest is the request struct for api GetCDNStatisSum
+type GetCDNStatisSumRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	StartStatisTime      string `position:"Query" name:"StartStatisTime"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	Level                string `position:"Query" name:"Level"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+	EndStatisTime        string `position:"Query" name:"EndStatisTime"`
+}
+
+// GetCDNStatisSumResponse is the response struct for api GetCDNStatisSum
+type GetCDNStatisSumResponse struct {
+	*responses.BaseResponse
+	RequestId        string        `json:"RequestId" xml:"RequestId"`
+	SumFlowDataValue int           `json:"SumFlowDataValue" xml:"SumFlowDataValue"`
+	MaxBpsDataValue  int           `json:"MaxBpsDataValue" xml:"MaxBpsDataValue"`
+	CDNStatisList    CDNStatisList `json:"CDNStatisList" xml:"CDNStatisList"`
+}
+
+// CreateGetCDNStatisSumRequest creates a request to invoke GetCDNStatisSum API
+func CreateGetCDNStatisSumRequest() (request *GetCDNStatisSumRequest) {
+	request = &GetCDNStatisSumRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetCDNStatisSum", "vod", "openAPI")
+	return
+}
+
+// CreateGetCDNStatisSumResponse creates a response to parse from GetCDNStatisSum response
+func CreateGetCDNStatisSumResponse() (response *GetCDNStatisSumResponse) {
+	response = &GetCDNStatisSumResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vod/get_editing_project.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"
+)
+
+// GetEditingProject invokes the vod.GetEditingProject API synchronously
+// api document: https://help.aliyun.com/api/vod/geteditingproject.html
+func (client *Client) GetEditingProject(request *GetEditingProjectRequest) (response *GetEditingProjectResponse, err error) {
+	response = CreateGetEditingProjectResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetEditingProjectWithChan invokes the vod.GetEditingProject API asynchronously
+// api document: https://help.aliyun.com/api/vod/geteditingproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetEditingProjectWithChan(request *GetEditingProjectRequest) (<-chan *GetEditingProjectResponse, <-chan error) {
+	responseChan := make(chan *GetEditingProjectResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetEditingProject(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetEditingProjectWithCallback invokes the vod.GetEditingProject API asynchronously
+// api document: https://help.aliyun.com/api/vod/geteditingproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetEditingProjectWithCallback(request *GetEditingProjectRequest, callback func(response *GetEditingProjectResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetEditingProjectResponse
+		var err error
+		defer close(result)
+		response, err = client.GetEditingProject(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetEditingProjectRequest is the request struct for api GetEditingProject
+type GetEditingProjectRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+	ProjectId            string `position:"Query" name:"ProjectId"`
+}
+
+// GetEditingProjectResponse is the response struct for api GetEditingProject
+type GetEditingProjectResponse struct {
+	*responses.BaseResponse
+	RequestId string  `json:"RequestId" xml:"RequestId"`
+	Project   Project `json:"Project" xml:"Project"`
+}
+
+// CreateGetEditingProjectRequest creates a request to invoke GetEditingProject API
+func CreateGetEditingProjectRequest() (request *GetEditingProjectRequest) {
+	request = &GetEditingProjectRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetEditingProject", "vod", "openAPI")
+	return
+}
+
+// CreateGetEditingProjectResponse creates a response to parse from GetEditingProject response
+func CreateGetEditingProjectResponse() (response *GetEditingProjectResponse) {
+	response = &GetEditingProjectResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/get_editing_project_materials.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"
+)
+
+// GetEditingProjectMaterials invokes the vod.GetEditingProjectMaterials API synchronously
+// api document: https://help.aliyun.com/api/vod/geteditingprojectmaterials.html
+func (client *Client) GetEditingProjectMaterials(request *GetEditingProjectMaterialsRequest) (response *GetEditingProjectMaterialsResponse, err error) {
+	response = CreateGetEditingProjectMaterialsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetEditingProjectMaterialsWithChan invokes the vod.GetEditingProjectMaterials API asynchronously
+// api document: https://help.aliyun.com/api/vod/geteditingprojectmaterials.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetEditingProjectMaterialsWithChan(request *GetEditingProjectMaterialsRequest) (<-chan *GetEditingProjectMaterialsResponse, <-chan error) {
+	responseChan := make(chan *GetEditingProjectMaterialsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetEditingProjectMaterials(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetEditingProjectMaterialsWithCallback invokes the vod.GetEditingProjectMaterials API asynchronously
+// api document: https://help.aliyun.com/api/vod/geteditingprojectmaterials.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetEditingProjectMaterialsWithCallback(request *GetEditingProjectMaterialsRequest, callback func(response *GetEditingProjectMaterialsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetEditingProjectMaterialsResponse
+		var err error
+		defer close(result)
+		response, err = client.GetEditingProjectMaterials(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetEditingProjectMaterialsRequest is the request struct for api GetEditingProjectMaterials
+type GetEditingProjectMaterialsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+	Type                 string `position:"Query" name:"Type"`
+	ProjectId            string `position:"Query" name:"ProjectId"`
+}
+
+// GetEditingProjectMaterialsResponse is the response struct for api GetEditingProjectMaterials
+type GetEditingProjectMaterialsResponse struct {
+	*responses.BaseResponse
+	RequestId    string       `json:"RequestId" xml:"RequestId"`
+	MaterialList MaterialList `json:"MaterialList" xml:"MaterialList"`
+}
+
+// CreateGetEditingProjectMaterialsRequest creates a request to invoke GetEditingProjectMaterials API
+func CreateGetEditingProjectMaterialsRequest() (request *GetEditingProjectMaterialsRequest) {
+	request = &GetEditingProjectMaterialsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetEditingProjectMaterials", "vod", "openAPI")
+	return
+}
+
+// CreateGetEditingProjectMaterialsResponse creates a response to parse from GetEditingProjectMaterials response
+func CreateGetEditingProjectMaterialsResponse() (response *GetEditingProjectMaterialsResponse) {
+	response = &GetEditingProjectMaterialsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vod/get_image_info.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"
+)
+
+// GetImageInfo invokes the vod.GetImageInfo API synchronously
+// api document: https://help.aliyun.com/api/vod/getimageinfo.html
+func (client *Client) GetImageInfo(request *GetImageInfoRequest) (response *GetImageInfoResponse, err error) {
+	response = CreateGetImageInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetImageInfoWithChan invokes the vod.GetImageInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getimageinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetImageInfoWithChan(request *GetImageInfoRequest) (<-chan *GetImageInfoResponse, <-chan error) {
+	responseChan := make(chan *GetImageInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetImageInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetImageInfoWithCallback invokes the vod.GetImageInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getimageinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetImageInfoWithCallback(request *GetImageInfoRequest, callback func(response *GetImageInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetImageInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetImageInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetImageInfoRequest is the request struct for api GetImageInfo
+type GetImageInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ImageId              string           `position:"Query" name:"ImageId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	AuthTimeout          requests.Integer `position:"Query" name:"AuthTimeout"`
+}
+
+// GetImageInfoResponse is the response struct for api GetImageInfo
+type GetImageInfoResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	ImageInfo ImageInfo `json:"ImageInfo" xml:"ImageInfo"`
+}
+
+// CreateGetImageInfoRequest creates a request to invoke GetImageInfo API
+func CreateGetImageInfoRequest() (request *GetImageInfoRequest) {
+	request = &GetImageInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetImageInfo", "vod", "openAPI")
+	return
+}
+
+// CreateGetImageInfoResponse creates a response to parse from GetImageInfo response
+func CreateGetImageInfoResponse() (response *GetImageInfoResponse) {
+	response = &GetImageInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/vod/get_message_callback.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"
+)
+
+// 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"`
+	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
+}

+ 109 - 0
services/vod/get_mezzanine_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"
+)
+
+// GetMezzanineInfo invokes the vod.GetMezzanineInfo API synchronously
+// api document: https://help.aliyun.com/api/vod/getmezzanineinfo.html
+func (client *Client) GetMezzanineInfo(request *GetMezzanineInfoRequest) (response *GetMezzanineInfoResponse, err error) {
+	response = CreateGetMezzanineInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetMezzanineInfoWithChan invokes the vod.GetMezzanineInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getmezzanineinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetMezzanineInfoWithChan(request *GetMezzanineInfoRequest) (<-chan *GetMezzanineInfoResponse, <-chan error) {
+	responseChan := make(chan *GetMezzanineInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetMezzanineInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetMezzanineInfoWithCallback invokes the vod.GetMezzanineInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getmezzanineinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetMezzanineInfoWithCallback(request *GetMezzanineInfoRequest, callback func(response *GetMezzanineInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetMezzanineInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetMezzanineInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetMezzanineInfoRequest is the request struct for api GetMezzanineInfo
+type GetMezzanineInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	VideoId              string           `position:"Query" name:"VideoId"`
+	PreviewSegment       requests.Boolean `position:"Query" name:"PreviewSegment"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	AuthTimeout          requests.Integer `position:"Query" name:"AuthTimeout"`
+}
+
+// GetMezzanineInfoResponse is the response struct for api GetMezzanineInfo
+type GetMezzanineInfoResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Mezzanine Mezzanine `json:"Mezzanine" xml:"Mezzanine"`
+}
+
+// CreateGetMezzanineInfoRequest creates a request to invoke GetMezzanineInfo API
+func CreateGetMezzanineInfoRequest() (request *GetMezzanineInfoRequest) {
+	request = &GetMezzanineInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetMezzanineInfo", "vod", "openAPI")
+	return
+}
+
+// CreateGetMezzanineInfoResponse creates a response to parse from GetMezzanineInfo response
+func CreateGetMezzanineInfoResponse() (response *GetMezzanineInfoResponse) {
+	response = &GetMezzanineInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/vod/get_oss_statis.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"
+)
+
+// GetOSSStatis invokes the vod.GetOSSStatis API synchronously
+// api document: https://help.aliyun.com/api/vod/getossstatis.html
+func (client *Client) GetOSSStatis(request *GetOSSStatisRequest) (response *GetOSSStatisResponse, err error) {
+	response = CreateGetOSSStatisResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetOSSStatisWithChan invokes the vod.GetOSSStatis API asynchronously
+// api document: https://help.aliyun.com/api/vod/getossstatis.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetOSSStatisWithChan(request *GetOSSStatisRequest) (<-chan *GetOSSStatisResponse, <-chan error) {
+	responseChan := make(chan *GetOSSStatisResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetOSSStatis(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetOSSStatisWithCallback invokes the vod.GetOSSStatis API asynchronously
+// api document: https://help.aliyun.com/api/vod/getossstatis.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetOSSStatisWithCallback(request *GetOSSStatisRequest, callback func(response *GetOSSStatisResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetOSSStatisResponse
+		var err error
+		defer close(result)
+		response, err = client.GetOSSStatis(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetOSSStatisRequest is the request struct for api GetOSSStatis
+type GetOSSStatisRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	StartStatisTime      string `position:"Query" name:"StartStatisTime"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	Level                string `position:"Query" name:"Level"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+	EndStatisTime        string `position:"Query" name:"EndStatisTime"`
+}
+
+// GetOSSStatisResponse is the response struct for api GetOSSStatis
+type GetOSSStatisResponse struct {
+	*responses.BaseResponse
+	RequestId             string        `json:"RequestId" xml:"RequestId"`
+	MaxStorageUtilization int           `json:"MaxStorageUtilization" xml:"MaxStorageUtilization"`
+	OssStatisList         OssStatisList `json:"OssStatisList" xml:"OssStatisList"`
+}
+
+// CreateGetOSSStatisRequest creates a request to invoke GetOSSStatis API
+func CreateGetOSSStatisRequest() (request *GetOSSStatisRequest) {
+	request = &GetOSSStatisRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetOSSStatis", "vod", "openAPI")
+	return
+}
+
+// CreateGetOSSStatisResponse creates a response to parse from GetOSSStatis response
+func CreateGetOSSStatisResponse() (response *GetOSSStatisResponse) {
+	response = &GetOSSStatisResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 119 - 0
services/vod/get_play_info.go

@@ -0,0 +1,119 @@
+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"
+)
+
+// GetPlayInfo invokes the vod.GetPlayInfo API synchronously
+// api document: https://help.aliyun.com/api/vod/getplayinfo.html
+func (client *Client) GetPlayInfo(request *GetPlayInfoRequest) (response *GetPlayInfoResponse, err error) {
+	response = CreateGetPlayInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetPlayInfoWithChan invokes the vod.GetPlayInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getplayinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetPlayInfoWithChan(request *GetPlayInfoRequest) (<-chan *GetPlayInfoResponse, <-chan error) {
+	responseChan := make(chan *GetPlayInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetPlayInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetPlayInfoWithCallback invokes the vod.GetPlayInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getplayinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetPlayInfoWithCallback(request *GetPlayInfoRequest, callback func(response *GetPlayInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetPlayInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetPlayInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetPlayInfoRequest is the request struct for api GetPlayInfo
+type GetPlayInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	StreamType           string           `position:"Query" name:"StreamType"`
+	Formats              string           `position:"Query" name:"Formats"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	Channel              string           `position:"Query" name:"Channel"`
+	VideoId              string           `position:"Query" name:"VideoId"`
+	PlayerVersion        string           `position:"Query" name:"PlayerVersion"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResultType           string           `position:"Query" name:"ResultType"`
+	Rand                 string           `position:"Query" name:"Rand"`
+	ReAuthInfo           string           `position:"Query" name:"ReAuthInfo"`
+	OutputType           string           `position:"Query" name:"OutputType"`
+	Definition           string           `position:"Query" name:"Definition"`
+	AuthTimeout          requests.Integer `position:"Query" name:"AuthTimeout"`
+	AuthInfo             string           `position:"Query" name:"AuthInfo"`
+}
+
+// GetPlayInfoResponse is the response struct for api GetPlayInfo
+type GetPlayInfoResponse struct {
+	*responses.BaseResponse
+	RequestId    string                    `json:"RequestId" xml:"RequestId"`
+	VideoBase    VideoBase                 `json:"VideoBase" xml:"VideoBase"`
+	PlayInfoList PlayInfoListInGetPlayInfo `json:"PlayInfoList" xml:"PlayInfoList"`
+}
+
+// CreateGetPlayInfoRequest creates a request to invoke GetPlayInfo API
+func CreateGetPlayInfoRequest() (request *GetPlayInfoRequest) {
+	request = &GetPlayInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetPlayInfo", "vod", "openAPI")
+	return
+}
+
+// CreateGetPlayInfoResponse creates a response to parse from GetPlayInfo response
+func CreateGetPlayInfoResponse() (response *GetPlayInfoResponse) {
+	response = &GetPlayInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vod/get_video_config.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"
+)
+
+// GetVideoConfig invokes the vod.GetVideoConfig API synchronously
+// api document: https://help.aliyun.com/api/vod/getvideoconfig.html
+func (client *Client) GetVideoConfig(request *GetVideoConfigRequest) (response *GetVideoConfigResponse, err error) {
+	response = CreateGetVideoConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetVideoConfigWithChan invokes the vod.GetVideoConfig API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideoconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoConfigWithChan(request *GetVideoConfigRequest) (<-chan *GetVideoConfigResponse, <-chan error) {
+	responseChan := make(chan *GetVideoConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetVideoConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetVideoConfigWithCallback invokes the vod.GetVideoConfig API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideoconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoConfigWithCallback(request *GetVideoConfigRequest, callback func(response *GetVideoConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetVideoConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.GetVideoConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetVideoConfigRequest is the request struct for api GetVideoConfig
+type GetVideoConfigRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	VideoId              string           `position:"Query" name:"VideoId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	AuthInfo             string           `position:"Query" name:"AuthInfo"`
+}
+
+// GetVideoConfigResponse is the response struct for api GetVideoConfig
+type GetVideoConfigResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId" xml:"RequestId"`
+	DownloadSwitch string `json:"DownloadSwitch" xml:"DownloadSwitch"`
+}
+
+// CreateGetVideoConfigRequest creates a request to invoke GetVideoConfig API
+func CreateGetVideoConfigRequest() (request *GetVideoConfigRequest) {
+	request = &GetVideoConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetVideoConfig", "vod", "openAPI")
+	return
+}
+
+// CreateGetVideoConfigResponse creates a response to parse from GetVideoConfig response
+func CreateGetVideoConfigResponse() (response *GetVideoConfigResponse) {
+	response = &GetVideoConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/get_video_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"
+)
+
+// GetVideoInfo invokes the vod.GetVideoInfo API synchronously
+// api document: https://help.aliyun.com/api/vod/getvideoinfo.html
+func (client *Client) GetVideoInfo(request *GetVideoInfoRequest) (response *GetVideoInfoResponse, err error) {
+	response = CreateGetVideoInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetVideoInfoWithChan invokes the vod.GetVideoInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideoinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoInfoWithChan(request *GetVideoInfoRequest) (<-chan *GetVideoInfoResponse, <-chan error) {
+	responseChan := make(chan *GetVideoInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetVideoInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetVideoInfoWithCallback invokes the vod.GetVideoInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideoinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoInfoWithCallback(request *GetVideoInfoRequest, callback func(response *GetVideoInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetVideoInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetVideoInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetVideoInfoRequest is the request struct for api GetVideoInfo
+type GetVideoInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	VideoId              string           `position:"Query" name:"VideoId"`
+	ResultTypes          string           `position:"Query" name:"ResultTypes"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// GetVideoInfoResponse is the response struct for api GetVideoInfo
+type GetVideoInfoResponse struct {
+	*responses.BaseResponse
+	RequestId string              `json:"RequestId" xml:"RequestId"`
+	AI        string              `json:"AI" xml:"AI"`
+	Video     VideoInGetVideoInfo `json:"Video" xml:"Video"`
+}
+
+// CreateGetVideoInfoRequest creates a request to invoke GetVideoInfo API
+func CreateGetVideoInfoRequest() (request *GetVideoInfoRequest) {
+	request = &GetVideoInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetVideoInfo", "vod", "openAPI")
+	return
+}
+
+// CreateGetVideoInfoResponse creates a response to parse from GetVideoInfo response
+func CreateGetVideoInfoResponse() (response *GetVideoInfoResponse) {
+	response = &GetVideoInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vod/get_video_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"
+)
+
+// GetVideoInfos invokes the vod.GetVideoInfos API synchronously
+// api document: https://help.aliyun.com/api/vod/getvideoinfos.html
+func (client *Client) GetVideoInfos(request *GetVideoInfosRequest) (response *GetVideoInfosResponse, err error) {
+	response = CreateGetVideoInfosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetVideoInfosWithChan invokes the vod.GetVideoInfos API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideoinfos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoInfosWithChan(request *GetVideoInfosRequest) (<-chan *GetVideoInfosResponse, <-chan error) {
+	responseChan := make(chan *GetVideoInfosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetVideoInfos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetVideoInfosWithCallback invokes the vod.GetVideoInfos API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideoinfos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoInfosWithCallback(request *GetVideoInfosRequest, callback func(response *GetVideoInfosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetVideoInfosResponse
+		var err error
+		defer close(result)
+		response, err = client.GetVideoInfos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetVideoInfosRequest is the request struct for api GetVideoInfos
+type GetVideoInfosRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	VideoIds             string           `position:"Query" name:"VideoIds"`
+}
+
+// GetVideoInfosResponse is the response struct for api GetVideoInfos
+type GetVideoInfosResponse struct {
+	*responses.BaseResponse
+	RequestId        string   `json:"RequestId" xml:"RequestId"`
+	NonExistVideoIds []string `json:"NonExistVideoIds" xml:"NonExistVideoIds"`
+	VideoList        []Video  `json:"VideoList" xml:"VideoList"`
+}
+
+// CreateGetVideoInfosRequest creates a request to invoke GetVideoInfos API
+func CreateGetVideoInfosRequest() (request *GetVideoInfosRequest) {
+	request = &GetVideoInfosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetVideoInfos", "vod", "openAPI")
+	return
+}
+
+// CreateGetVideoInfosResponse creates a response to parse from GetVideoInfos response
+func CreateGetVideoInfosResponse() (response *GetVideoInfosResponse) {
+	response = &GetVideoInfosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/vod/get_video_list.go

@@ -0,0 +1,114 @@
+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"
+)
+
+// GetVideoList invokes the vod.GetVideoList API synchronously
+// api document: https://help.aliyun.com/api/vod/getvideolist.html
+func (client *Client) GetVideoList(request *GetVideoListRequest) (response *GetVideoListResponse, err error) {
+	response = CreateGetVideoListResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetVideoListWithChan invokes the vod.GetVideoList API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideolist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoListWithChan(request *GetVideoListRequest) (<-chan *GetVideoListResponse, <-chan error) {
+	responseChan := make(chan *GetVideoListResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetVideoList(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetVideoListWithCallback invokes the vod.GetVideoList API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideolist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoListWithCallback(request *GetVideoListRequest, callback func(response *GetVideoListResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetVideoListResponse
+		var err error
+		defer close(result)
+		response, err = client.GetVideoList(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetVideoListRequest is the request struct for api GetVideoList
+type GetVideoListRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	CateId               requests.Integer `position:"Query" name:"CateId"`
+	PageNo               requests.Integer `position:"Query" name:"PageNo"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	EndTime              string           `position:"Query" name:"EndTime"`
+	SortBy               string           `position:"Query" name:"SortBy"`
+	StartTime            string           `position:"Query" name:"StartTime"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Status               string           `position:"Query" name:"Status"`
+}
+
+// GetVideoListResponse is the response struct for api GetVideoList
+type GetVideoListResponse struct {
+	*responses.BaseResponse
+	RequestId string                  `json:"RequestId" xml:"RequestId"`
+	Total     int                     `json:"Total" xml:"Total"`
+	VideoList VideoListInGetVideoList `json:"VideoList" xml:"VideoList"`
+}
+
+// CreateGetVideoListRequest creates a request to invoke GetVideoList API
+func CreateGetVideoListRequest() (request *GetVideoListRequest) {
+	request = &GetVideoListRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetVideoList", "vod", "openAPI")
+	return
+}
+
+// CreateGetVideoListResponse creates a response to parse from GetVideoList response
+func CreateGetVideoListResponse() (response *GetVideoListResponse) {
+	response = &GetVideoListResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/vod/get_video_play_auth.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"
+)
+
+// GetVideoPlayAuth invokes the vod.GetVideoPlayAuth API synchronously
+// api document: https://help.aliyun.com/api/vod/getvideoplayauth.html
+func (client *Client) GetVideoPlayAuth(request *GetVideoPlayAuthRequest) (response *GetVideoPlayAuthResponse, err error) {
+	response = CreateGetVideoPlayAuthResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetVideoPlayAuthWithChan invokes the vod.GetVideoPlayAuth API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideoplayauth.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoPlayAuthWithChan(request *GetVideoPlayAuthRequest) (<-chan *GetVideoPlayAuthResponse, <-chan error) {
+	responseChan := make(chan *GetVideoPlayAuthResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetVideoPlayAuth(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetVideoPlayAuthWithCallback invokes the vod.GetVideoPlayAuth API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideoplayauth.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoPlayAuthWithCallback(request *GetVideoPlayAuthRequest, callback func(response *GetVideoPlayAuthResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetVideoPlayAuthResponse
+		var err error
+		defer close(result)
+		response, err = client.GetVideoPlayAuth(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetVideoPlayAuthRequest is the request struct for api GetVideoPlayAuth
+type GetVideoPlayAuthRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ReAuthInfo           string           `position:"Query" name:"ReAuthInfo"`
+	AuthInfoTimeout      requests.Integer `position:"Query" name:"AuthInfoTimeout"`
+	VideoId              string           `position:"Query" name:"VideoId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// GetVideoPlayAuthResponse is the response struct for api GetVideoPlayAuth
+type GetVideoPlayAuthResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	PlayAuth  string    `json:"PlayAuth" xml:"PlayAuth"`
+	VideoMeta VideoMeta `json:"VideoMeta" xml:"VideoMeta"`
+}
+
+// CreateGetVideoPlayAuthRequest creates a request to invoke GetVideoPlayAuth API
+func CreateGetVideoPlayAuthRequest() (request *GetVideoPlayAuthRequest) {
+	request = &GetVideoPlayAuthRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetVideoPlayAuth", "vod", "openAPI")
+	return
+}
+
+// CreateGetVideoPlayAuthResponse creates a response to parse from GetVideoPlayAuth response
+func CreateGetVideoPlayAuthResponse() (response *GetVideoPlayAuthResponse) {
+	response = &GetVideoPlayAuthResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/vod/get_video_play_info.go

@@ -0,0 +1,113 @@
+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"
+)
+
+// GetVideoPlayInfo invokes the vod.GetVideoPlayInfo API synchronously
+// api document: https://help.aliyun.com/api/vod/getvideoplayinfo.html
+func (client *Client) GetVideoPlayInfo(request *GetVideoPlayInfoRequest) (response *GetVideoPlayInfoResponse, err error) {
+	response = CreateGetVideoPlayInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetVideoPlayInfoWithChan invokes the vod.GetVideoPlayInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideoplayinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoPlayInfoWithChan(request *GetVideoPlayInfoRequest) (<-chan *GetVideoPlayInfoResponse, <-chan error) {
+	responseChan := make(chan *GetVideoPlayInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetVideoPlayInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetVideoPlayInfoWithCallback invokes the vod.GetVideoPlayInfo API asynchronously
+// api document: https://help.aliyun.com/api/vod/getvideoplayinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoPlayInfoWithCallback(request *GetVideoPlayInfoRequest, callback func(response *GetVideoPlayInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetVideoPlayInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetVideoPlayInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetVideoPlayInfoRequest is the request struct for api GetVideoPlayInfo
+type GetVideoPlayInfoRequest struct {
+	*requests.RpcRequest
+	SignVersion          string           `position:"Query" name:"SignVersion"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClientVersion        string           `position:"Query" name:"ClientVersion"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	Channel              string           `position:"Query" name:"Channel"`
+	PlaySign             string           `position:"Query" name:"PlaySign"`
+	VideoId              string           `position:"Query" name:"VideoId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ClientTS             requests.Integer `position:"Query" name:"ClientTS"`
+}
+
+// GetVideoPlayInfoResponse is the response struct for api GetVideoPlayInfo
+type GetVideoPlayInfoResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	PlayInfo  PlayInfo  `json:"PlayInfo" xml:"PlayInfo"`
+	VideoInfo VideoInfo `json:"VideoInfo" xml:"VideoInfo"`
+}
+
+// CreateGetVideoPlayInfoRequest creates a request to invoke GetVideoPlayInfo API
+func CreateGetVideoPlayInfoRequest() (request *GetVideoPlayInfoRequest) {
+	request = &GetVideoPlayInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "GetVideoPlayInfo", "vod", "openAPI")
+	return
+}
+
+// CreateGetVideoPlayInfoResponse creates a response to parse from GetVideoPlayInfo response
+func CreateGetVideoPlayInfoResponse() (response *GetVideoPlayInfoResponse) {
+	response = &GetVideoPlayInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/list_ai_job.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"
+)
+
+// ListAIJob invokes the vod.ListAIJob API synchronously
+// api document: https://help.aliyun.com/api/vod/listaijob.html
+func (client *Client) ListAIJob(request *ListAIJobRequest) (response *ListAIJobResponse, err error) {
+	response = CreateListAIJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAIJobWithChan invokes the vod.ListAIJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaijob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIJobWithChan(request *ListAIJobRequest) (<-chan *ListAIJobResponse, <-chan error) {
+	responseChan := make(chan *ListAIJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAIJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAIJobWithCallback invokes the vod.ListAIJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaijob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIJobWithCallback(request *ListAIJobRequest, callback func(response *ListAIJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAIJobResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAIJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAIJobRequest is the request struct for api ListAIJob
+type ListAIJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	JobIds               string `position:"Query" name:"JobIds"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+}
+
+// ListAIJobResponse is the response struct for api ListAIJob
+type ListAIJobResponse struct {
+	*responses.BaseResponse
+	RequestId        string               `json:"RequestId" xml:"RequestId"`
+	NonExistAIJobIds NonExistAIJobIds     `json:"NonExistAIJobIds" xml:"NonExistAIJobIds"`
+	AIJobList        AIJobListInListAIJob `json:"AIJobList" xml:"AIJobList"`
+}
+
+// CreateListAIJobRequest creates a request to invoke ListAIJob API
+func CreateListAIJobRequest() (request *ListAIJobRequest) {
+	request = &ListAIJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAIJob", "vod", "openAPI")
+	return
+}
+
+// CreateListAIJobResponse creates a response to parse from ListAIJob response
+func CreateListAIJobResponse() (response *ListAIJobResponse) {
+	response = &ListAIJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/list_ai_video_category_job.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"
+)
+
+// ListAIVideoCategoryJob invokes the vod.ListAIVideoCategoryJob API synchronously
+// api document: https://help.aliyun.com/api/vod/listaivideocategoryjob.html
+func (client *Client) ListAIVideoCategoryJob(request *ListAIVideoCategoryJobRequest) (response *ListAIVideoCategoryJobResponse, err error) {
+	response = CreateListAIVideoCategoryJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAIVideoCategoryJobWithChan invokes the vod.ListAIVideoCategoryJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideocategoryjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoCategoryJobWithChan(request *ListAIVideoCategoryJobRequest) (<-chan *ListAIVideoCategoryJobResponse, <-chan error) {
+	responseChan := make(chan *ListAIVideoCategoryJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAIVideoCategoryJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAIVideoCategoryJobWithCallback invokes the vod.ListAIVideoCategoryJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideocategoryjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoCategoryJobWithCallback(request *ListAIVideoCategoryJobRequest, callback func(response *ListAIVideoCategoryJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAIVideoCategoryJobResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAIVideoCategoryJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAIVideoCategoryJobRequest is the request struct for api ListAIVideoCategoryJob
+type ListAIVideoCategoryJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId       string `position:"Query" name:"ResourceOwnerId"`
+	AIVideoCategoryJobIds string `position:"Query" name:"AIVideoCategoryJobIds"`
+	ResourceOwnerAccount  string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount          string `position:"Query" name:"OwnerAccount"`
+	OwnerId               string `position:"Query" name:"OwnerId"`
+}
+
+// ListAIVideoCategoryJobResponse is the response struct for api ListAIVideoCategoryJob
+type ListAIVideoCategoryJobResponse struct {
+	*responses.BaseResponse
+	RequestId                     string                        `json:"RequestId" xml:"RequestId"`
+	NonExistAIVideoCategoryJobIds NonExistAIVideoCategoryJobIds `json:"NonExistAIVideoCategoryJobIds" xml:"NonExistAIVideoCategoryJobIds"`
+	AIVideoCategoryJobList        AIVideoCategoryJobList        `json:"AIVideoCategoryJobList" xml:"AIVideoCategoryJobList"`
+}
+
+// CreateListAIVideoCategoryJobRequest creates a request to invoke ListAIVideoCategoryJob API
+func CreateListAIVideoCategoryJobRequest() (request *ListAIVideoCategoryJobRequest) {
+	request = &ListAIVideoCategoryJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAIVideoCategoryJob", "vod", "openAPI")
+	return
+}
+
+// CreateListAIVideoCategoryJobResponse creates a response to parse from ListAIVideoCategoryJob response
+func CreateListAIVideoCategoryJobResponse() (response *ListAIVideoCategoryJobResponse) {
+	response = &ListAIVideoCategoryJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/list_ai_video_censor_job.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"
+)
+
+// ListAIVideoCensorJob invokes the vod.ListAIVideoCensorJob API synchronously
+// api document: https://help.aliyun.com/api/vod/listaivideocensorjob.html
+func (client *Client) ListAIVideoCensorJob(request *ListAIVideoCensorJobRequest) (response *ListAIVideoCensorJobResponse, err error) {
+	response = CreateListAIVideoCensorJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAIVideoCensorJobWithChan invokes the vod.ListAIVideoCensorJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideocensorjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoCensorJobWithChan(request *ListAIVideoCensorJobRequest) (<-chan *ListAIVideoCensorJobResponse, <-chan error) {
+	responseChan := make(chan *ListAIVideoCensorJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAIVideoCensorJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAIVideoCensorJobWithCallback invokes the vod.ListAIVideoCensorJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideocensorjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoCensorJobWithCallback(request *ListAIVideoCensorJobRequest, callback func(response *ListAIVideoCensorJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAIVideoCensorJobResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAIVideoCensorJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAIVideoCensorJobRequest is the request struct for api ListAIVideoCensorJob
+type ListAIVideoCensorJobRequest struct {
+	*requests.RpcRequest
+	AIVideoCensorJobIds  string `position:"Query" name:"AIVideoCensorJobIds"`
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+}
+
+// ListAIVideoCensorJobResponse is the response struct for api ListAIVideoCensorJob
+type ListAIVideoCensorJobResponse struct {
+	*responses.BaseResponse
+	RequestId                   string                      `json:"RequestId" xml:"RequestId"`
+	NonExistAIVideoCensorJobIds NonExistAIVideoCensorJobIds `json:"NonExistAIVideoCensorJobIds" xml:"NonExistAIVideoCensorJobIds"`
+	AIVideoCensorJobList        AIVideoCensorJobList        `json:"AIVideoCensorJobList" xml:"AIVideoCensorJobList"`
+}
+
+// CreateListAIVideoCensorJobRequest creates a request to invoke ListAIVideoCensorJob API
+func CreateListAIVideoCensorJobRequest() (request *ListAIVideoCensorJobRequest) {
+	request = &ListAIVideoCensorJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAIVideoCensorJob", "vod", "openAPI")
+	return
+}
+
+// CreateListAIVideoCensorJobResponse creates a response to parse from ListAIVideoCensorJob response
+func CreateListAIVideoCensorJobResponse() (response *ListAIVideoCensorJobResponse) {
+	response = &ListAIVideoCensorJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/list_ai_video_cover_job.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"
+)
+
+// ListAIVideoCoverJob invokes the vod.ListAIVideoCoverJob API synchronously
+// api document: https://help.aliyun.com/api/vod/listaivideocoverjob.html
+func (client *Client) ListAIVideoCoverJob(request *ListAIVideoCoverJobRequest) (response *ListAIVideoCoverJobResponse, err error) {
+	response = CreateListAIVideoCoverJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAIVideoCoverJobWithChan invokes the vod.ListAIVideoCoverJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideocoverjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoCoverJobWithChan(request *ListAIVideoCoverJobRequest) (<-chan *ListAIVideoCoverJobResponse, <-chan error) {
+	responseChan := make(chan *ListAIVideoCoverJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAIVideoCoverJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAIVideoCoverJobWithCallback invokes the vod.ListAIVideoCoverJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideocoverjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoCoverJobWithCallback(request *ListAIVideoCoverJobRequest, callback func(response *ListAIVideoCoverJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAIVideoCoverJobResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAIVideoCoverJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAIVideoCoverJobRequest is the request struct for api ListAIVideoCoverJob
+type ListAIVideoCoverJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	AIVideoCoverJobIds   string `position:"Query" name:"AIVideoCoverJobIds"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+}
+
+// ListAIVideoCoverJobResponse is the response struct for api ListAIVideoCoverJob
+type ListAIVideoCoverJobResponse struct {
+	*responses.BaseResponse
+	RequestId                  string                     `json:"RequestId" xml:"RequestId"`
+	NonExistAIVideoCoverJobIds NonExistAIVideoCoverJobIds `json:"NonExistAIVideoCoverJobIds" xml:"NonExistAIVideoCoverJobIds"`
+	AIVideoCoverJobList        AIVideoCoverJobList        `json:"AIVideoCoverJobList" xml:"AIVideoCoverJobList"`
+}
+
+// CreateListAIVideoCoverJobRequest creates a request to invoke ListAIVideoCoverJob API
+func CreateListAIVideoCoverJobRequest() (request *ListAIVideoCoverJobRequest) {
+	request = &ListAIVideoCoverJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAIVideoCoverJob", "vod", "openAPI")
+	return
+}
+
+// CreateListAIVideoCoverJobResponse creates a response to parse from ListAIVideoCoverJob response
+func CreateListAIVideoCoverJobResponse() (response *ListAIVideoCoverJobResponse) {
+	response = &ListAIVideoCoverJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/list_ai_video_porn_recog_job.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"
+)
+
+// ListAIVideoPornRecogJob invokes the vod.ListAIVideoPornRecogJob API synchronously
+// api document: https://help.aliyun.com/api/vod/listaivideopornrecogjob.html
+func (client *Client) ListAIVideoPornRecogJob(request *ListAIVideoPornRecogJobRequest) (response *ListAIVideoPornRecogJobResponse, err error) {
+	response = CreateListAIVideoPornRecogJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAIVideoPornRecogJobWithChan invokes the vod.ListAIVideoPornRecogJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideopornrecogjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoPornRecogJobWithChan(request *ListAIVideoPornRecogJobRequest) (<-chan *ListAIVideoPornRecogJobResponse, <-chan error) {
+	responseChan := make(chan *ListAIVideoPornRecogJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAIVideoPornRecogJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAIVideoPornRecogJobWithCallback invokes the vod.ListAIVideoPornRecogJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideopornrecogjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoPornRecogJobWithCallback(request *ListAIVideoPornRecogJobRequest, callback func(response *ListAIVideoPornRecogJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAIVideoPornRecogJobResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAIVideoPornRecogJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAIVideoPornRecogJobRequest is the request struct for api ListAIVideoPornRecogJob
+type ListAIVideoPornRecogJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId        string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount   string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount           string `position:"Query" name:"OwnerAccount"`
+	AIVideoPornRecogJobIds string `position:"Query" name:"AIVideoPornRecogJobIds"`
+	OwnerId                string `position:"Query" name:"OwnerId"`
+}
+
+// ListAIVideoPornRecogJobResponse is the response struct for api ListAIVideoPornRecogJob
+type ListAIVideoPornRecogJobResponse struct {
+	*responses.BaseResponse
+	RequestId               string                  `json:"RequestId" xml:"RequestId"`
+	NonExistPornRecogJobIds NonExistPornRecogJobIds `json:"NonExistPornRecogJobIds" xml:"NonExistPornRecogJobIds"`
+	AIVideoPornRecogJobList AIVideoPornRecogJobList `json:"AIVideoPornRecogJobList" xml:"AIVideoPornRecogJobList"`
+}
+
+// CreateListAIVideoPornRecogJobRequest creates a request to invoke ListAIVideoPornRecogJob API
+func CreateListAIVideoPornRecogJobRequest() (request *ListAIVideoPornRecogJobRequest) {
+	request = &ListAIVideoPornRecogJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAIVideoPornRecogJob", "vod", "openAPI")
+	return
+}
+
+// CreateListAIVideoPornRecogJobResponse creates a response to parse from ListAIVideoPornRecogJob response
+func CreateListAIVideoPornRecogJobResponse() (response *ListAIVideoPornRecogJobResponse) {
+	response = &ListAIVideoPornRecogJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/list_ai_video_summary_job.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"
+)
+
+// ListAIVideoSummaryJob invokes the vod.ListAIVideoSummaryJob API synchronously
+// api document: https://help.aliyun.com/api/vod/listaivideosummaryjob.html
+func (client *Client) ListAIVideoSummaryJob(request *ListAIVideoSummaryJobRequest) (response *ListAIVideoSummaryJobResponse, err error) {
+	response = CreateListAIVideoSummaryJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAIVideoSummaryJobWithChan invokes the vod.ListAIVideoSummaryJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideosummaryjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoSummaryJobWithChan(request *ListAIVideoSummaryJobRequest) (<-chan *ListAIVideoSummaryJobResponse, <-chan error) {
+	responseChan := make(chan *ListAIVideoSummaryJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAIVideoSummaryJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAIVideoSummaryJobWithCallback invokes the vod.ListAIVideoSummaryJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideosummaryjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoSummaryJobWithCallback(request *ListAIVideoSummaryJobRequest, callback func(response *ListAIVideoSummaryJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAIVideoSummaryJobResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAIVideoSummaryJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAIVideoSummaryJobRequest is the request struct for api ListAIVideoSummaryJob
+type ListAIVideoSummaryJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	AIVideoSummaryJobIds string `position:"Query" name:"AIVideoSummaryJobIds"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+}
+
+// ListAIVideoSummaryJobResponse is the response struct for api ListAIVideoSummaryJob
+type ListAIVideoSummaryJobResponse struct {
+	*responses.BaseResponse
+	RequestId                    string                       `json:"RequestId" xml:"RequestId"`
+	NonExistAIVideoSummaryJobIds NonExistAIVideoSummaryJobIds `json:"NonExistAIVideoSummaryJobIds" xml:"NonExistAIVideoSummaryJobIds"`
+	AIVideoSummaryJobList        AIVideoSummaryJobList        `json:"AIVideoSummaryJobList" xml:"AIVideoSummaryJobList"`
+}
+
+// CreateListAIVideoSummaryJobRequest creates a request to invoke ListAIVideoSummaryJob API
+func CreateListAIVideoSummaryJobRequest() (request *ListAIVideoSummaryJobRequest) {
+	request = &ListAIVideoSummaryJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAIVideoSummaryJob", "vod", "openAPI")
+	return
+}
+
+// CreateListAIVideoSummaryJobResponse creates a response to parse from ListAIVideoSummaryJob response
+func CreateListAIVideoSummaryJobResponse() (response *ListAIVideoSummaryJobResponse) {
+	response = &ListAIVideoSummaryJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/list_ai_video_terrorism_recog_job.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"
+)
+
+// ListAIVideoTerrorismRecogJob invokes the vod.ListAIVideoTerrorismRecogJob API synchronously
+// api document: https://help.aliyun.com/api/vod/listaivideoterrorismrecogjob.html
+func (client *Client) ListAIVideoTerrorismRecogJob(request *ListAIVideoTerrorismRecogJobRequest) (response *ListAIVideoTerrorismRecogJobResponse, err error) {
+	response = CreateListAIVideoTerrorismRecogJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAIVideoTerrorismRecogJobWithChan invokes the vod.ListAIVideoTerrorismRecogJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideoterrorismrecogjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoTerrorismRecogJobWithChan(request *ListAIVideoTerrorismRecogJobRequest) (<-chan *ListAIVideoTerrorismRecogJobResponse, <-chan error) {
+	responseChan := make(chan *ListAIVideoTerrorismRecogJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAIVideoTerrorismRecogJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAIVideoTerrorismRecogJobWithCallback invokes the vod.ListAIVideoTerrorismRecogJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaivideoterrorismrecogjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIVideoTerrorismRecogJobWithCallback(request *ListAIVideoTerrorismRecogJobRequest, callback func(response *ListAIVideoTerrorismRecogJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAIVideoTerrorismRecogJobResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAIVideoTerrorismRecogJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAIVideoTerrorismRecogJobRequest is the request struct for api ListAIVideoTerrorismRecogJob
+type ListAIVideoTerrorismRecogJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId             string `position:"Query" name:"ResourceOwnerId"`
+	AIVideoTerrorismRecogJobIds string `position:"Query" name:"AIVideoTerrorismRecogJobIds"`
+	ResourceOwnerAccount        string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount                string `position:"Query" name:"OwnerAccount"`
+	OwnerId                     string `position:"Query" name:"OwnerId"`
+}
+
+// ListAIVideoTerrorismRecogJobResponse is the response struct for api ListAIVideoTerrorismRecogJob
+type ListAIVideoTerrorismRecogJobResponse struct {
+	*responses.BaseResponse
+	RequestId                    string                       `json:"RequestId" xml:"RequestId"`
+	NonExistTerrorismRecogJobIds NonExistTerrorismRecogJobIds `json:"NonExistTerrorismRecogJobIds" xml:"NonExistTerrorismRecogJobIds"`
+	AIVideoTerrorismRecogJobList AIVideoTerrorismRecogJobList `json:"AIVideoTerrorismRecogJobList" xml:"AIVideoTerrorismRecogJobList"`
+}
+
+// CreateListAIVideoTerrorismRecogJobRequest creates a request to invoke ListAIVideoTerrorismRecogJob API
+func CreateListAIVideoTerrorismRecogJobRequest() (request *ListAIVideoTerrorismRecogJobRequest) {
+	request = &ListAIVideoTerrorismRecogJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAIVideoTerrorismRecogJob", "vod", "openAPI")
+	return
+}
+
+// CreateListAIVideoTerrorismRecogJobResponse creates a response to parse from ListAIVideoTerrorismRecogJob response
+func CreateListAIVideoTerrorismRecogJobResponse() (response *ListAIVideoTerrorismRecogJobResponse) {
+	response = &ListAIVideoTerrorismRecogJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/list_aiasr_job.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"
+)
+
+// ListAIASRJob invokes the vod.ListAIASRJob API synchronously
+// api document: https://help.aliyun.com/api/vod/listaiasrjob.html
+func (client *Client) ListAIASRJob(request *ListAIASRJobRequest) (response *ListAIASRJobResponse, err error) {
+	response = CreateListAIASRJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAIASRJobWithChan invokes the vod.ListAIASRJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaiasrjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIASRJobWithChan(request *ListAIASRJobRequest) (<-chan *ListAIASRJobResponse, <-chan error) {
+	responseChan := make(chan *ListAIASRJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAIASRJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAIASRJobWithCallback invokes the vod.ListAIASRJob API asynchronously
+// api document: https://help.aliyun.com/api/vod/listaiasrjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAIASRJobWithCallback(request *ListAIASRJobRequest, callback func(response *ListAIASRJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAIASRJobResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAIASRJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAIASRJobRequest is the request struct for api ListAIASRJob
+type ListAIASRJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+	AIASRJobIds          string `position:"Query" name:"AIASRJobIds"`
+}
+
+// ListAIASRJobResponse is the response struct for api ListAIASRJob
+type ListAIASRJobResponse struct {
+	*responses.BaseResponse
+	RequestId           string              `json:"RequestId" xml:"RequestId"`
+	NonExistAIASRJobIds NonExistAIASRJobIds `json:"NonExistAIASRJobIds" xml:"NonExistAIASRJobIds"`
+	AIASRJobList        AIASRJobList        `json:"AIASRJobList" xml:"AIASRJobList"`
+}
+
+// CreateListAIASRJobRequest creates a request to invoke ListAIASRJob API
+func CreateListAIASRJobRequest() (request *ListAIASRJobRequest) {
+	request = &ListAIASRJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAIASRJob", "vod", "openAPI")
+	return
+}
+
+// CreateListAIASRJobResponse creates a response to parse from ListAIASRJob response
+func CreateListAIASRJobResponse() (response *ListAIASRJobResponse) {
+	response = &ListAIASRJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/vod/list_audit_security_ip.go

@@ -0,0 +1,104 @@
+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"
+)
+
+// ListAuditSecurityIp invokes the vod.ListAuditSecurityIp API synchronously
+// api document: https://help.aliyun.com/api/vod/listauditsecurityip.html
+func (client *Client) ListAuditSecurityIp(request *ListAuditSecurityIpRequest) (response *ListAuditSecurityIpResponse, err error) {
+	response = CreateListAuditSecurityIpResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListAuditSecurityIpWithChan invokes the vod.ListAuditSecurityIp API asynchronously
+// api document: https://help.aliyun.com/api/vod/listauditsecurityip.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAuditSecurityIpWithChan(request *ListAuditSecurityIpRequest) (<-chan *ListAuditSecurityIpResponse, <-chan error) {
+	responseChan := make(chan *ListAuditSecurityIpResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListAuditSecurityIp(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListAuditSecurityIpWithCallback invokes the vod.ListAuditSecurityIp API asynchronously
+// api document: https://help.aliyun.com/api/vod/listauditsecurityip.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListAuditSecurityIpWithCallback(request *ListAuditSecurityIpRequest, callback func(response *ListAuditSecurityIpResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListAuditSecurityIpResponse
+		var err error
+		defer close(result)
+		response, err = client.ListAuditSecurityIp(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListAuditSecurityIpRequest is the request struct for api ListAuditSecurityIp
+type ListAuditSecurityIpRequest struct {
+	*requests.RpcRequest
+	SecurityGroupName string `position:"Query" name:"SecurityGroupName"`
+}
+
+// ListAuditSecurityIpResponse is the response struct for api ListAuditSecurityIp
+type ListAuditSecurityIpResponse struct {
+	*responses.BaseResponse
+	RequestId      string       `json:"RequestId" xml:"RequestId"`
+	SecurityIpList []SecurityIp `json:"SecurityIpList" xml:"SecurityIpList"`
+}
+
+// CreateListAuditSecurityIpRequest creates a request to invoke ListAuditSecurityIp API
+func CreateListAuditSecurityIpRequest() (request *ListAuditSecurityIpRequest) {
+	request = &ListAuditSecurityIpRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListAuditSecurityIp", "vod", "openAPI")
+	return
+}
+
+// CreateListAuditSecurityIpResponse creates a response to parse from ListAuditSecurityIp response
+func CreateListAuditSecurityIpResponse() (response *ListAuditSecurityIpResponse) {
+	response = &ListAuditSecurityIpResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/vod/list_live_record_video.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"
+)
+
+// ListLiveRecordVideo invokes the vod.ListLiveRecordVideo API synchronously
+// api document: https://help.aliyun.com/api/vod/listliverecordvideo.html
+func (client *Client) ListLiveRecordVideo(request *ListLiveRecordVideoRequest) (response *ListLiveRecordVideoResponse, err error) {
+	response = CreateListLiveRecordVideoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListLiveRecordVideoWithChan invokes the vod.ListLiveRecordVideo API asynchronously
+// api document: https://help.aliyun.com/api/vod/listliverecordvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListLiveRecordVideoWithChan(request *ListLiveRecordVideoRequest) (<-chan *ListLiveRecordVideoResponse, <-chan error) {
+	responseChan := make(chan *ListLiveRecordVideoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListLiveRecordVideo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListLiveRecordVideoWithCallback invokes the vod.ListLiveRecordVideo API asynchronously
+// api document: https://help.aliyun.com/api/vod/listliverecordvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListLiveRecordVideoWithCallback(request *ListLiveRecordVideoRequest, callback func(response *ListLiveRecordVideoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListLiveRecordVideoResponse
+		var err error
+		defer close(result)
+		response, err = client.ListLiveRecordVideo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListLiveRecordVideoRequest is the request struct for api ListLiveRecordVideo
+type ListLiveRecordVideoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	DomainName           string           `position:"Query" name:"DomainName"`
+	EndTime              string           `position:"Query" name:"EndTime"`
+	StartTime            string           `position:"Query" name:"StartTime"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	AppName              string           `position:"Query" name:"AppName"`
+	PageNo               requests.Integer `position:"Query" name:"PageNo"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	SortBy               string           `position:"Query" name:"SortBy"`
+	StreamName           string           `position:"Query" name:"StreamName"`
+	QueryType            string           `position:"Query" name:"QueryType"`
+}
+
+// ListLiveRecordVideoResponse is the response struct for api ListLiveRecordVideo
+type ListLiveRecordVideoResponse struct {
+	*responses.BaseResponse
+	RequestId           string              `json:"RequestId" xml:"RequestId"`
+	Total               int                 `json:"Total" xml:"Total"`
+	LiveRecordVideoList LiveRecordVideoList `json:"LiveRecordVideoList" xml:"LiveRecordVideoList"`
+}
+
+// CreateListLiveRecordVideoRequest creates a request to invoke ListLiveRecordVideo API
+func CreateListLiveRecordVideoRequest() (request *ListLiveRecordVideoRequest) {
+	request = &ListLiveRecordVideoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListLiveRecordVideo", "vod", "openAPI")
+	return
+}
+
+// CreateListLiveRecordVideoResponse creates a response to parse from ListLiveRecordVideo response
+func CreateListLiveRecordVideoResponse() (response *ListLiveRecordVideoResponse) {
+	response = &ListLiveRecordVideoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/vod/list_snapshots.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"
+)
+
+// ListSnapshots invokes the vod.ListSnapshots API synchronously
+// api document: https://help.aliyun.com/api/vod/listsnapshots.html
+func (client *Client) ListSnapshots(request *ListSnapshotsRequest) (response *ListSnapshotsResponse, err error) {
+	response = CreateListSnapshotsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListSnapshotsWithChan invokes the vod.ListSnapshots API asynchronously
+// api document: https://help.aliyun.com/api/vod/listsnapshots.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListSnapshotsWithChan(request *ListSnapshotsRequest) (<-chan *ListSnapshotsResponse, <-chan error) {
+	responseChan := make(chan *ListSnapshotsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListSnapshots(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListSnapshotsWithCallback invokes the vod.ListSnapshots API asynchronously
+// api document: https://help.aliyun.com/api/vod/listsnapshots.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListSnapshotsWithCallback(request *ListSnapshotsRequest, callback func(response *ListSnapshotsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListSnapshotsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListSnapshots(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListSnapshotsRequest is the request struct for api ListSnapshots
+type ListSnapshotsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	SnapshotType         string           `position:"Query" name:"SnapshotType"`
+	PageNo               string           `position:"Query" name:"PageNo"`
+	PageSize             string           `position:"Query" name:"PageSize"`
+	VideoId              string           `position:"Query" name:"VideoId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	AuthTimeout          string           `position:"Query" name:"AuthTimeout"`
+}
+
+// ListSnapshotsResponse is the response struct for api ListSnapshots
+type ListSnapshotsResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	MediaSnapshot MediaSnapshot `json:"MediaSnapshot" xml:"MediaSnapshot"`
+}
+
+// CreateListSnapshotsRequest creates a request to invoke ListSnapshots API
+func CreateListSnapshotsRequest() (request *ListSnapshotsRequest) {
+	request = &ListSnapshotsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ListSnapshots", "vod", "openAPI")
+	return
+}
+
+// CreateListSnapshotsResponse creates a response to parse from ListSnapshots response
+func CreateListSnapshotsResponse() (response *ListSnapshotsResponse) {
+	response = &ListSnapshotsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/open_vod_service.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"
+)
+
+// OpenVodService invokes the vod.OpenVodService API synchronously
+// api document: https://help.aliyun.com/api/vod/openvodservice.html
+func (client *Client) OpenVodService(request *OpenVodServiceRequest) (response *OpenVodServiceResponse, err error) {
+	response = CreateOpenVodServiceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// OpenVodServiceWithChan invokes the vod.OpenVodService API asynchronously
+// api document: https://help.aliyun.com/api/vod/openvodservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) OpenVodServiceWithChan(request *OpenVodServiceRequest) (<-chan *OpenVodServiceResponse, <-chan error) {
+	responseChan := make(chan *OpenVodServiceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.OpenVodService(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// OpenVodServiceWithCallback invokes the vod.OpenVodService API asynchronously
+// api document: https://help.aliyun.com/api/vod/openvodservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) OpenVodServiceWithCallback(request *OpenVodServiceRequest, callback func(response *OpenVodServiceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *OpenVodServiceResponse
+		var err error
+		defer close(result)
+		response, err = client.OpenVodService(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// OpenVodServiceRequest is the request struct for api OpenVodService
+type OpenVodServiceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+}
+
+// OpenVodServiceResponse is the response struct for api OpenVodService
+type OpenVodServiceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"requestId" xml:"requestId"`
+	Success   bool   `json:"success" xml:"success"`
+	Code      string `json:"code" xml:"code"`
+	Message   string `json:"message" xml:"message"`
+}
+
+// CreateOpenVodServiceRequest creates a request to invoke OpenVodService API
+func CreateOpenVodServiceRequest() (request *OpenVodServiceRequest) {
+	request = &OpenVodServiceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "OpenVodService", "vod", "openAPI")
+	return
+}
+
+// CreateOpenVodServiceResponse creates a response to parse from OpenVodService response
+func CreateOpenVodServiceResponse() (response *OpenVodServiceResponse) {
+	response = &OpenVodServiceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/vod/produce_editing_project_video.go

@@ -0,0 +1,115 @@
+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"
+)
+
+// ProduceEditingProjectVideo invokes the vod.ProduceEditingProjectVideo API synchronously
+// api document: https://help.aliyun.com/api/vod/produceeditingprojectvideo.html
+func (client *Client) ProduceEditingProjectVideo(request *ProduceEditingProjectVideoRequest) (response *ProduceEditingProjectVideoResponse, err error) {
+	response = CreateProduceEditingProjectVideoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ProduceEditingProjectVideoWithChan invokes the vod.ProduceEditingProjectVideo API asynchronously
+// api document: https://help.aliyun.com/api/vod/produceeditingprojectvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ProduceEditingProjectVideoWithChan(request *ProduceEditingProjectVideoRequest) (<-chan *ProduceEditingProjectVideoResponse, <-chan error) {
+	responseChan := make(chan *ProduceEditingProjectVideoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ProduceEditingProjectVideo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ProduceEditingProjectVideoWithCallback invokes the vod.ProduceEditingProjectVideo API asynchronously
+// api document: https://help.aliyun.com/api/vod/produceeditingprojectvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ProduceEditingProjectVideoWithCallback(request *ProduceEditingProjectVideoRequest, callback func(response *ProduceEditingProjectVideoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ProduceEditingProjectVideoResponse
+		var err error
+		defer close(result)
+		response, err = client.ProduceEditingProjectVideo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ProduceEditingProjectVideoRequest is the request struct for api ProduceEditingProjectVideo
+type ProduceEditingProjectVideoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	MediaMetadata        string           `position:"Query" name:"MediaMetadata"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	Description          string           `position:"Query" name:"Description"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Title                string           `position:"Query" name:"Title"`
+	CoverURL             string           `position:"Query" name:"CoverURL"`
+	UserData             string           `position:"Query" name:"UserData"`
+	Timeline             string           `position:"Query" name:"Timeline"`
+	ProduceConfig        string           `position:"Query" name:"ProduceConfig"`
+	ProjectId            string           `position:"Query" name:"ProjectId"`
+}
+
+// ProduceEditingProjectVideoResponse is the response struct for api ProduceEditingProjectVideo
+type ProduceEditingProjectVideoResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	MediaId   string `json:"MediaId" xml:"MediaId"`
+	ProjectId string `json:"ProjectId" xml:"ProjectId"`
+}
+
+// CreateProduceEditingProjectVideoRequest creates a request to invoke ProduceEditingProjectVideo API
+func CreateProduceEditingProjectVideoRequest() (request *ProduceEditingProjectVideoRequest) {
+	request = &ProduceEditingProjectVideoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "ProduceEditingProjectVideo", "vod", "openAPI")
+	return
+}
+
+// CreateProduceEditingProjectVideoResponse creates a response to parse from ProduceEditingProjectVideo response
+func CreateProduceEditingProjectVideoResponse() (response *ProduceEditingProjectVideoResponse) {
+	response = &ProduceEditingProjectVideoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vod/push_object_cache.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"
+)
+
+// PushObjectCache invokes the vod.PushObjectCache API synchronously
+// api document: https://help.aliyun.com/api/vod/pushobjectcache.html
+func (client *Client) PushObjectCache(request *PushObjectCacheRequest) (response *PushObjectCacheResponse, err error) {
+	response = CreatePushObjectCacheResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// PushObjectCacheWithChan invokes the vod.PushObjectCache API asynchronously
+// api document: https://help.aliyun.com/api/vod/pushobjectcache.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) PushObjectCacheWithChan(request *PushObjectCacheRequest) (<-chan *PushObjectCacheResponse, <-chan error) {
+	responseChan := make(chan *PushObjectCacheResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.PushObjectCache(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// PushObjectCacheWithCallback invokes the vod.PushObjectCache API asynchronously
+// api document: https://help.aliyun.com/api/vod/pushobjectcache.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) PushObjectCacheWithCallback(request *PushObjectCacheRequest, callback func(response *PushObjectCacheResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *PushObjectCacheResponse
+		var err error
+		defer close(result)
+		response, err = client.PushObjectCache(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// PushObjectCacheRequest is the request struct for api PushObjectCache
+type PushObjectCacheRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	ObjectPath           string `position:"Query" name:"ObjectPath"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+}
+
+// PushObjectCacheResponse is the response struct for api PushObjectCache
+type PushObjectCacheResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	PushTaskId string `json:"PushTaskId" xml:"PushTaskId"`
+}
+
+// CreatePushObjectCacheRequest creates a request to invoke PushObjectCache API
+func CreatePushObjectCacheRequest() (request *PushObjectCacheRequest) {
+	request = &PushObjectCacheRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "PushObjectCache", "vod", "openAPI")
+	return
+}
+
+// CreatePushObjectCacheResponse creates a response to parse from PushObjectCache response
+func CreatePushObjectCacheResponse() (response *PushObjectCacheResponse) {
+	response = &PushObjectCacheResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/refresh_object_caches.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"
+)
+
+// RefreshObjectCaches invokes the vod.RefreshObjectCaches API synchronously
+// api document: https://help.aliyun.com/api/vod/refreshobjectcaches.html
+func (client *Client) RefreshObjectCaches(request *RefreshObjectCachesRequest) (response *RefreshObjectCachesResponse, err error) {
+	response = CreateRefreshObjectCachesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// RefreshObjectCachesWithChan invokes the vod.RefreshObjectCaches API asynchronously
+// api document: https://help.aliyun.com/api/vod/refreshobjectcaches.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RefreshObjectCachesWithChan(request *RefreshObjectCachesRequest) (<-chan *RefreshObjectCachesResponse, <-chan error) {
+	responseChan := make(chan *RefreshObjectCachesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RefreshObjectCaches(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// RefreshObjectCachesWithCallback invokes the vod.RefreshObjectCaches API asynchronously
+// api document: https://help.aliyun.com/api/vod/refreshobjectcaches.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RefreshObjectCachesWithCallback(request *RefreshObjectCachesRequest, callback func(response *RefreshObjectCachesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RefreshObjectCachesResponse
+		var err error
+		defer close(result)
+		response, err = client.RefreshObjectCaches(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// RefreshObjectCachesRequest is the request struct for api RefreshObjectCaches
+type RefreshObjectCachesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	ObjectPath           string `position:"Query" name:"ObjectPath"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+	ObjectType           string `position:"Query" name:"ObjectType"`
+}
+
+// RefreshObjectCachesResponse is the response struct for api RefreshObjectCaches
+type RefreshObjectCachesResponse struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	RefreshTaskId string `json:"RefreshTaskId" xml:"RefreshTaskId"`
+}
+
+// CreateRefreshObjectCachesRequest creates a request to invoke RefreshObjectCaches API
+func CreateRefreshObjectCachesRequest() (request *RefreshObjectCachesRequest) {
+	request = &RefreshObjectCachesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "RefreshObjectCaches", "vod", "openAPI")
+	return
+}
+
+// CreateRefreshObjectCachesResponse creates a response to parse from RefreshObjectCaches response
+func CreateRefreshObjectCachesResponse() (response *RefreshObjectCachesResponse) {
+	response = &RefreshObjectCachesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vod/refresh_upload_video.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"
+)
+
+// RefreshUploadVideo invokes the vod.RefreshUploadVideo API synchronously
+// api document: https://help.aliyun.com/api/vod/refreshuploadvideo.html
+func (client *Client) RefreshUploadVideo(request *RefreshUploadVideoRequest) (response *RefreshUploadVideoResponse, err error) {
+	response = CreateRefreshUploadVideoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// RefreshUploadVideoWithChan invokes the vod.RefreshUploadVideo API asynchronously
+// api document: https://help.aliyun.com/api/vod/refreshuploadvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RefreshUploadVideoWithChan(request *RefreshUploadVideoRequest) (<-chan *RefreshUploadVideoResponse, <-chan error) {
+	responseChan := make(chan *RefreshUploadVideoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RefreshUploadVideo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// RefreshUploadVideoWithCallback invokes the vod.RefreshUploadVideo API asynchronously
+// api document: https://help.aliyun.com/api/vod/refreshuploadvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RefreshUploadVideoWithCallback(request *RefreshUploadVideoRequest, callback func(response *RefreshUploadVideoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RefreshUploadVideoResponse
+		var err error
+		defer close(result)
+		response, err = client.RefreshUploadVideo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// RefreshUploadVideoRequest is the request struct for api RefreshUploadVideo
+type RefreshUploadVideoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	VideoId              string           `position:"Query" name:"VideoId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// RefreshUploadVideoResponse is the response struct for api RefreshUploadVideo
+type RefreshUploadVideoResponse struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	UploadAuth    string `json:"UploadAuth" xml:"UploadAuth"`
+	UploadAddress string `json:"UploadAddress" xml:"UploadAddress"`
+	VideoId       string `json:"VideoId" xml:"VideoId"`
+}
+
+// CreateRefreshUploadVideoRequest creates a request to invoke RefreshUploadVideo API
+func CreateRefreshUploadVideoRequest() (request *RefreshUploadVideoRequest) {
+	request = &RefreshUploadVideoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "RefreshUploadVideo", "vod", "openAPI")
+	return
+}
+
+// CreateRefreshUploadVideoResponse creates a response to parse from RefreshUploadVideo response
+func CreateRefreshUploadVideoResponse() (response *RefreshUploadVideoResponse) {
+	response = &RefreshUploadVideoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/vod/search_editing_project.go

@@ -0,0 +1,115 @@
+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"
+)
+
+// SearchEditingProject invokes the vod.SearchEditingProject API synchronously
+// api document: https://help.aliyun.com/api/vod/searcheditingproject.html
+func (client *Client) SearchEditingProject(request *SearchEditingProjectRequest) (response *SearchEditingProjectResponse, err error) {
+	response = CreateSearchEditingProjectResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SearchEditingProjectWithChan invokes the vod.SearchEditingProject API asynchronously
+// api document: https://help.aliyun.com/api/vod/searcheditingproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SearchEditingProjectWithChan(request *SearchEditingProjectRequest) (<-chan *SearchEditingProjectResponse, <-chan error) {
+	responseChan := make(chan *SearchEditingProjectResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SearchEditingProject(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SearchEditingProjectWithCallback invokes the vod.SearchEditingProject API asynchronously
+// api document: https://help.aliyun.com/api/vod/searcheditingproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SearchEditingProjectWithCallback(request *SearchEditingProjectRequest, callback func(response *SearchEditingProjectResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SearchEditingProjectResponse
+		var err error
+		defer close(result)
+		response, err = client.SearchEditingProject(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SearchEditingProjectRequest is the request struct for api SearchEditingProject
+type SearchEditingProjectRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string           `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	EndTime              string           `position:"Query" name:"EndTime"`
+	StartTime            string           `position:"Query" name:"StartTime"`
+	OwnerId              string           `position:"Query" name:"OwnerId"`
+	Title                string           `position:"Query" name:"Title"`
+	PageNo               requests.Integer `position:"Query" name:"PageNo"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	SortBy               string           `position:"Query" name:"SortBy"`
+	Status               string           `position:"Query" name:"Status"`
+}
+
+// SearchEditingProjectResponse is the response struct for api SearchEditingProject
+type SearchEditingProjectResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	Total       int         `json:"Total" xml:"Total"`
+	ProjectList ProjectList `json:"ProjectList" xml:"ProjectList"`
+}
+
+// CreateSearchEditingProjectRequest creates a request to invoke SearchEditingProject API
+func CreateSearchEditingProjectRequest() (request *SearchEditingProjectRequest) {
+	request = &SearchEditingProjectRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "SearchEditingProject", "vod", "openAPI")
+	return
+}
+
+// CreateSearchEditingProjectResponse creates a response to parse from SearchEditingProject response
+func CreateSearchEditingProjectResponse() (response *SearchEditingProjectResponse) {
+	response = &SearchEditingProjectResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/vod/search_media.go

@@ -0,0 +1,115 @@
+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"
+)
+
+// SearchMedia invokes the vod.SearchMedia API synchronously
+// api document: https://help.aliyun.com/api/vod/searchmedia.html
+func (client *Client) SearchMedia(request *SearchMediaRequest) (response *SearchMediaResponse, err error) {
+	response = CreateSearchMediaResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SearchMediaWithChan invokes the vod.SearchMedia API asynchronously
+// api document: https://help.aliyun.com/api/vod/searchmedia.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SearchMediaWithChan(request *SearchMediaRequest) (<-chan *SearchMediaResponse, <-chan error) {
+	responseChan := make(chan *SearchMediaResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SearchMedia(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SearchMediaWithCallback invokes the vod.SearchMedia API asynchronously
+// api document: https://help.aliyun.com/api/vod/searchmedia.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SearchMediaWithCallback(request *SearchMediaRequest, callback func(response *SearchMediaResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SearchMediaResponse
+		var err error
+		defer close(result)
+		response, err = client.SearchMedia(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SearchMediaRequest is the request struct for api SearchMedia
+type SearchMediaRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	PageNo               requests.Integer `position:"Query" name:"PageNo"`
+	SearchType           string           `position:"Query" name:"SearchType"`
+	Match                string           `position:"Query" name:"Match"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	SortBy               string           `position:"Query" name:"SortBy"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Fields               string           `position:"Query" name:"Fields"`
+	ScrollToken          string           `position:"Query" name:"ScrollToken"`
+}
+
+// SearchMediaResponse is the response struct for api SearchMedia
+type SearchMediaResponse struct {
+	*responses.BaseResponse
+	RequestId   string  `json:"RequestId" xml:"RequestId"`
+	ScrollToken string  `json:"ScrollToken" xml:"ScrollToken"`
+	Total       int     `json:"Total" xml:"Total"`
+	MediaList   []Media `json:"MediaList" xml:"MediaList"`
+}
+
+// CreateSearchMediaRequest creates a request to invoke SearchMedia API
+func CreateSearchMediaRequest() (request *SearchMediaRequest) {
+	request = &SearchMediaRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "SearchMedia", "vod", "openAPI")
+	return
+}
+
+// CreateSearchMediaResponse creates a response to parse from SearchMedia response
+func CreateSearchMediaResponse() (response *SearchMediaResponse) {
+	response = &SearchMediaResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/vod/set_audit_security_ip.go

@@ -0,0 +1,105 @@
+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"
+)
+
+// SetAuditSecurityIp invokes the vod.SetAuditSecurityIp API synchronously
+// api document: https://help.aliyun.com/api/vod/setauditsecurityip.html
+func (client *Client) SetAuditSecurityIp(request *SetAuditSecurityIpRequest) (response *SetAuditSecurityIpResponse, err error) {
+	response = CreateSetAuditSecurityIpResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SetAuditSecurityIpWithChan invokes the vod.SetAuditSecurityIp API asynchronously
+// api document: https://help.aliyun.com/api/vod/setauditsecurityip.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetAuditSecurityIpWithChan(request *SetAuditSecurityIpRequest) (<-chan *SetAuditSecurityIpResponse, <-chan error) {
+	responseChan := make(chan *SetAuditSecurityIpResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SetAuditSecurityIp(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SetAuditSecurityIpWithCallback invokes the vod.SetAuditSecurityIp API asynchronously
+// api document: https://help.aliyun.com/api/vod/setauditsecurityip.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetAuditSecurityIpWithCallback(request *SetAuditSecurityIpRequest, callback func(response *SetAuditSecurityIpResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SetAuditSecurityIpResponse
+		var err error
+		defer close(result)
+		response, err = client.SetAuditSecurityIp(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SetAuditSecurityIpRequest is the request struct for api SetAuditSecurityIp
+type SetAuditSecurityIpRequest struct {
+	*requests.RpcRequest
+	OperateMode       string `position:"Query" name:"OperateMode"`
+	SecurityGroupName string `position:"Query" name:"SecurityGroupName"`
+	Ips               string `position:"Query" name:"Ips"`
+}
+
+// SetAuditSecurityIpResponse is the response struct for api SetAuditSecurityIp
+type SetAuditSecurityIpResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateSetAuditSecurityIpRequest creates a request to invoke SetAuditSecurityIp API
+func CreateSetAuditSecurityIpRequest() (request *SetAuditSecurityIpRequest) {
+	request = &SetAuditSecurityIpRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "SetAuditSecurityIp", "vod", "openAPI")
+	return
+}
+
+// CreateSetAuditSecurityIpResponse creates a response to parse from SetAuditSecurityIp response
+func CreateSetAuditSecurityIpResponse() (response *SetAuditSecurityIpResponse) {
+	response = &SetAuditSecurityIpResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vod/set_editing_project_materials.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"
+)
+
+// SetEditingProjectMaterials invokes the vod.SetEditingProjectMaterials API synchronously
+// api document: https://help.aliyun.com/api/vod/seteditingprojectmaterials.html
+func (client *Client) SetEditingProjectMaterials(request *SetEditingProjectMaterialsRequest) (response *SetEditingProjectMaterialsResponse, err error) {
+	response = CreateSetEditingProjectMaterialsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SetEditingProjectMaterialsWithChan invokes the vod.SetEditingProjectMaterials API asynchronously
+// api document: https://help.aliyun.com/api/vod/seteditingprojectmaterials.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetEditingProjectMaterialsWithChan(request *SetEditingProjectMaterialsRequest) (<-chan *SetEditingProjectMaterialsResponse, <-chan error) {
+	responseChan := make(chan *SetEditingProjectMaterialsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SetEditingProjectMaterials(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SetEditingProjectMaterialsWithCallback invokes the vod.SetEditingProjectMaterials API asynchronously
+// api document: https://help.aliyun.com/api/vod/seteditingprojectmaterials.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetEditingProjectMaterialsWithCallback(request *SetEditingProjectMaterialsRequest, callback func(response *SetEditingProjectMaterialsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SetEditingProjectMaterialsResponse
+		var err error
+		defer close(result)
+		response, err = client.SetEditingProjectMaterials(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SetEditingProjectMaterialsRequest is the request struct for api SetEditingProjectMaterials
+type SetEditingProjectMaterialsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	MaterialIds          string `position:"Query" name:"MaterialIds"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+	ProjectId            string `position:"Query" name:"ProjectId"`
+}
+
+// SetEditingProjectMaterialsResponse is the response struct for api SetEditingProjectMaterials
+type SetEditingProjectMaterialsResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateSetEditingProjectMaterialsRequest creates a request to invoke SetEditingProjectMaterials API
+func CreateSetEditingProjectMaterialsRequest() (request *SetEditingProjectMaterialsRequest) {
+	request = &SetEditingProjectMaterialsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("vod", "2017-03-21", "SetEditingProjectMaterials", "vod", "openAPI")
+	return
+}
+
+// CreateSetEditingProjectMaterialsResponse creates a response to parse from SetEditingProjectMaterials response
+func CreateSetEditingProjectMaterialsResponse() (response *SetEditingProjectMaterialsResponse) {
+	response = &SetEditingProjectMaterialsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/vod/set_message_callback.go

@@ -0,0 +1,112 @@
+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
+	CallbackType         string `position:"Query" name:"CallbackType"`
+	AuthKey              string `position:"Query" name:"AuthKey"`
+	ResourceOwnerId      string `position:"Query" name:"ResourceOwnerId"`
+	CallbackSwitch       string `position:"Query" name:"CallbackSwitch"`
+	ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string `position:"Query" name:"OwnerAccount"`
+	EventTypeList        string `position:"Query" name:"EventTypeList"`
+	AuthSwitch           string `position:"Query" name:"AuthSwitch"`
+	CallbackURL          string `position:"Query" name:"CallbackURL"`
+	OwnerId              string `position:"Query" name:"OwnerId"`
+}
+
+// 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
+}

+ 23 - 0
services/vod/struct_ai_audit_result.go

@@ -0,0 +1,23 @@
+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.
+
+// AIAuditResult is a nested struct in vod response
+type AIAuditResult struct {
+	Label           string `json:"Label" xml:"Label"`
+	TerrorismResult string `json:"TerrorismResult" xml:"TerrorismResult"`
+	PornResult      string `json:"PornResult" xml:"PornResult"`
+}

+ 29 - 0
services/vod/struct_ai_job.go

@@ -0,0 +1,29 @@
+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.
+
+// AIJob is a nested struct in vod response
+type AIJob struct {
+	JobId        string `json:"JobId" xml:"JobId"`
+	Message      string `json:"Message" xml:"Message"`
+	Code         string `json:"Code" xml:"Code"`
+	Data         string `json:"Data" xml:"Data"`
+	CreationTime string `json:"CreationTime" xml:"CreationTime"`
+	CompleteTime string `json:"CompleteTime" xml:"CompleteTime"`
+	Status       string `json:"Status" xml:"Status"`
+	MediaId      string `json:"MediaId" xml:"MediaId"`
+	Type         string `json:"Type" xml:"Type"`
+}

+ 21 - 0
services/vod/struct_ai_job_list_in_list_ai_job.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.
+
+// AIJobListInListAIJob is a nested struct in vod response
+type AIJobListInListAIJob struct {
+	AIJob []AIJob `json:"AIJob" xml:"AIJob"`
+}

+ 21 - 0
services/vod/struct_ai_job_list_in_submit_ai_job.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.
+
+// AIJobListInSubmitAIJob is a nested struct in vod response
+type AIJobListInSubmitAIJob struct {
+	AIJob []AIJob `json:"AIJob" xml:"AIJob"`
+}

+ 27 - 0
services/vod/struct_ai_video_category_job.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.
+
+// AIVideoCategoryJob is a nested struct in vod response
+type AIVideoCategoryJob struct {
+	JobId        string `json:"JobId" xml:"JobId"`
+	Message      string `json:"Message" xml:"Message"`
+	Code         string `json:"Code" xml:"Code"`
+	Data         string `json:"Data" xml:"Data"`
+	CreationTime string `json:"CreationTime" xml:"CreationTime"`
+	Status       string `json:"Status" xml:"Status"`
+	MediaId      string `json:"MediaId" xml:"MediaId"`
+}

+ 21 - 0
services/vod/struct_ai_video_category_job_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.
+
+// AIVideoCategoryJobList is a nested struct in vod response
+type AIVideoCategoryJobList struct {
+	AIVideoCategoryJob []AIVideoCategoryJob `json:"AIVideoCategoryJob" xml:"AIVideoCategoryJob"`
+}

+ 27 - 0
services/vod/struct_ai_video_censor_job.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.
+
+// AIVideoCensorJob is a nested struct in vod response
+type AIVideoCensorJob struct {
+	JobId        string `json:"JobId" xml:"JobId"`
+	Message      string `json:"Message" xml:"Message"`
+	Code         string `json:"Code" xml:"Code"`
+	Data         string `json:"Data" xml:"Data"`
+	CreationTime string `json:"CreationTime" xml:"CreationTime"`
+	Status       string `json:"Status" xml:"Status"`
+	MediaId      string `json:"MediaId" xml:"MediaId"`
+}

+ 21 - 0
services/vod/struct_ai_video_censor_job_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.
+
+// AIVideoCensorJobList is a nested struct in vod response
+type AIVideoCensorJobList struct {
+	AIVideoCensorJob []AIVideoCensorJob `json:"AIVideoCensorJob" xml:"AIVideoCensorJob"`
+}

+ 27 - 0
services/vod/struct_ai_video_cover_job.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.
+
+// AIVideoCoverJob is a nested struct in vod response
+type AIVideoCoverJob struct {
+	JobId        string `json:"JobId" xml:"JobId"`
+	Message      string `json:"Message" xml:"Message"`
+	Code         string `json:"Code" xml:"Code"`
+	Data         string `json:"Data" xml:"Data"`
+	CreationTime string `json:"CreationTime" xml:"CreationTime"`
+	Status       string `json:"Status" xml:"Status"`
+	MediaId      string `json:"MediaId" xml:"MediaId"`
+}

+ 21 - 0
services/vod/struct_ai_video_cover_job_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.
+
+// AIVideoCoverJobList is a nested struct in vod response
+type AIVideoCoverJobList struct {
+	AIVideoCoverJob []AIVideoCoverJob `json:"AIVideoCoverJob" xml:"AIVideoCoverJob"`
+}

+ 27 - 0
services/vod/struct_ai_video_porn_recog_job.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.
+
+// AIVideoPornRecogJob is a nested struct in vod response
+type AIVideoPornRecogJob struct {
+	JobId        string `json:"JobId" xml:"JobId"`
+	Message      string `json:"Message" xml:"Message"`
+	Code         string `json:"Code" xml:"Code"`
+	Data         string `json:"Data" xml:"Data"`
+	CreationTime string `json:"CreationTime" xml:"CreationTime"`
+	Status       string `json:"Status" xml:"Status"`
+	MediaId      string `json:"MediaId" xml:"MediaId"`
+}

+ 21 - 0
services/vod/struct_ai_video_porn_recog_job_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.
+
+// AIVideoPornRecogJobList is a nested struct in vod response
+type AIVideoPornRecogJobList struct {
+	AIVideoPornRecogJob []AIVideoPornRecogJob `json:"AIVideoPornRecogJob" xml:"AIVideoPornRecogJob"`
+}

+ 27 - 0
services/vod/struct_ai_video_summary_job.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.
+
+// AIVideoSummaryJob is a nested struct in vod response
+type AIVideoSummaryJob struct {
+	JobId        string `json:"JobId" xml:"JobId"`
+	Message      string `json:"Message" xml:"Message"`
+	Code         string `json:"Code" xml:"Code"`
+	Data         string `json:"Data" xml:"Data"`
+	CreationTime string `json:"CreationTime" xml:"CreationTime"`
+	Status       string `json:"Status" xml:"Status"`
+	MediaId      string `json:"MediaId" xml:"MediaId"`
+}

+ 21 - 0
services/vod/struct_ai_video_summary_job_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.
+
+// AIVideoSummaryJobList is a nested struct in vod response
+type AIVideoSummaryJobList struct {
+	AIVideoSummaryJob []AIVideoSummaryJob `json:"AIVideoSummaryJob" xml:"AIVideoSummaryJob"`
+}

+ 27 - 0
services/vod/struct_ai_video_terrorism_recog_job.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.
+
+// AIVideoTerrorismRecogJob is a nested struct in vod response
+type AIVideoTerrorismRecogJob struct {
+	JobId        string `json:"JobId" xml:"JobId"`
+	Message      string `json:"Message" xml:"Message"`
+	Code         string `json:"Code" xml:"Code"`
+	Data         string `json:"Data" xml:"Data"`
+	CreationTime string `json:"CreationTime" xml:"CreationTime"`
+	Status       string `json:"Status" xml:"Status"`
+	MediaId      string `json:"MediaId" xml:"MediaId"`
+}

+ 21 - 0
services/vod/struct_ai_video_terrorism_recog_job_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.
+
+// AIVideoTerrorismRecogJobList is a nested struct in vod response
+type AIVideoTerrorismRecogJobList struct {
+	AIVideoTerrorismRecogJob []AIVideoTerrorismRecogJob `json:"AIVideoTerrorismRecogJob" xml:"AIVideoTerrorismRecogJob"`
+}

+ 27 - 0
services/vod/struct_aiasr_job.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.
+
+// AIASRJob is a nested struct in vod response
+type AIASRJob struct {
+	JobId        string `json:"JobId" xml:"JobId"`
+	Message      string `json:"Message" xml:"Message"`
+	Code         string `json:"Code" xml:"Code"`
+	Data         string `json:"Data" xml:"Data"`
+	CreationTime string `json:"CreationTime" xml:"CreationTime"`
+	Status       string `json:"Status" xml:"Status"`
+	MediaId      string `json:"MediaId" xml:"MediaId"`
+}

+ 21 - 0
services/vod/struct_aiasr_job_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.
+
+// AIASRJobList is a nested struct in vod response
+type AIASRJobList struct {
+	AIASRJob []AIASRJob `json:"AIASRJob" xml:"AIASRJob"`
+}

+ 40 - 0
services/vod/struct_audio.go

@@ -0,0 +1,40 @@
+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.
+
+// Audio is a nested struct in vod response
+type Audio struct {
+	AudioId          string   `json:"AudioId" xml:"AudioId"`
+	MediaSource      string   `json:"MediaSource" xml:"MediaSource"`
+	Title            string   `json:"Title" xml:"Title"`
+	Tags             string   `json:"Tags" xml:"Tags"`
+	Status           string   `json:"Status" xml:"Status"`
+	Size             int      `json:"Size" xml:"Size"`
+	Duration         float64  `json:"Duration" xml:"Duration"`
+	Description      string   `json:"Description" xml:"Description"`
+	ModificationTime string   `json:"ModificationTime" xml:"ModificationTime"`
+	CreationTime     string   `json:"CreationTime" xml:"CreationTime"`
+	CoverURL         string   `json:"CoverURL" xml:"CoverURL"`
+	CateId           int      `json:"CateId" xml:"CateId"`
+	CateName         string   `json:"CateName" xml:"CateName"`
+	DownloadSwitch   string   `json:"DownloadSwitch" xml:"DownloadSwitch"`
+	PreprocessStatus string   `json:"PreprocessStatus" xml:"PreprocessStatus"`
+	StorageLocation  string   `json:"StorageLocation" xml:"StorageLocation"`
+	RegionId         string   `json:"RegionId" xml:"RegionId"`
+	TranscodeMode    string   `json:"TranscodeMode" xml:"TranscodeMode"`
+	Snapshots        []string `json:"Snapshots" xml:"Snapshots"`
+	SpriteSnapshots  []string `json:"SpriteSnapshots" xml:"SpriteSnapshots"`
+}

+ 36 - 0
services/vod/struct_audio_stream.go

@@ -0,0 +1,36 @@
+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.
+
+// AudioStream is a nested struct in vod response
+type AudioStream struct {
+	Index          string `json:"Index" xml:"Index"`
+	CodecName      string `json:"CodecName" xml:"CodecName"`
+	CodecLongName  string `json:"CodecLongName" xml:"CodecLongName"`
+	CodecTimeBase  string `json:"CodecTimeBase" xml:"CodecTimeBase"`
+	CodecTagString string `json:"CodecTagString" xml:"CodecTagString"`
+	CodecTag       string `json:"CodecTag" xml:"CodecTag"`
+	SampleFmt      string `json:"SampleFmt" xml:"SampleFmt"`
+	SampleRate     string `json:"SampleRate" xml:"SampleRate"`
+	Channels       string `json:"Channels" xml:"Channels"`
+	ChannelLayout  string `json:"ChannelLayout" xml:"ChannelLayout"`
+	Timebase       string `json:"Timebase" xml:"Timebase"`
+	StartTime      string `json:"StartTime" xml:"StartTime"`
+	Duration       string `json:"Duration" xml:"Duration"`
+	Bitrate        string `json:"Bitrate" xml:"Bitrate"`
+	NumFrames      string `json:"NumFrames" xml:"NumFrames"`
+	Lang           string `json:"Lang" xml:"Lang"`
+}

+ 21 - 0
services/vod/struct_audio_stream_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.
+
+// AudioStreamList is a nested struct in vod response
+type AudioStreamList struct {
+	AudioStream []AudioStream `json:"AudioStream" xml:"AudioStream"`
+}

+ 21 - 0
services/vod/struct_bps_data_per_interval.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.
+
+// BpsDataPerInterval is a nested struct in vod response
+type BpsDataPerInterval struct {
+	DataModule []DataModuleInDescribeDomainBpsData `json:"DataModule" xml:"DataModule"`
+}

+ 24 - 0
services/vod/struct_category.go

@@ -0,0 +1,24 @@
+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.
+
+// Category is a nested struct in vod response
+type Category struct {
+	CateName string `json:"CateName" xml:"CateName"`
+	Level    int    `json:"Level" xml:"Level"`
+	ParentId int    `json:"ParentId" xml:"ParentId"`
+	CateId   int    `json:"CateId" xml:"CateId"`
+}

+ 27 - 0
services/vod/struct_cdn_metric.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.
+
+// CDNMetric is a nested struct in vod response
+type CDNMetric struct {
+	StatTime              string `json:"StatTime" xml:"StatTime"`
+	FlowDataDomesticValue int    `json:"FlowDataDomesticValue" xml:"FlowDataDomesticValue"`
+	FlowDataOverseasValue int    `json:"FlowDataOverseasValue" xml:"FlowDataOverseasValue"`
+	FlowDataValue         int    `json:"FlowDataValue" xml:"FlowDataValue"`
+	BpsDataDomesticValue  int    `json:"BpsDataDomesticValue" xml:"BpsDataDomesticValue"`
+	BpsDataOverseasValue  int    `json:"BpsDataOverseasValue" xml:"BpsDataOverseasValue"`
+	BpsDataValue          int    `json:"BpsDataValue" xml:"BpsDataValue"`
+}

+ 21 - 0
services/vod/struct_cdn_statis_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.
+
+// CDNStatisList is a nested struct in vod response
+type CDNStatisList struct {
+	CDNMetric []CDNMetric `json:"CDNMetric" xml:"CDNMetric"`
+}

+ 30 - 0
services/vod/struct_data_module.go

@@ -0,0 +1,30 @@
+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.
+
+// DataModule is a nested struct in vod response
+type DataModule struct {
+	DomesticValue        string `json:"DomesticValue" xml:"DomesticValue"`
+	Value                string `json:"Value" xml:"Value"`
+	OverseasValue        string `json:"OverseasValue" xml:"OverseasValue"`
+	DynamicValue         string `json:"DynamicValue" xml:"DynamicValue"`
+	StaticValue          string `json:"StaticValue" xml:"StaticValue"`
+	TimeStamp            string `json:"TimeStamp" xml:"TimeStamp"`
+	DynamicDomesticValue string `json:"DynamicDomesticValue" xml:"DynamicDomesticValue"`
+	StaticDomesticValue  string `json:"StaticDomesticValue" xml:"StaticDomesticValue"`
+	StaticOverseasValue  string `json:"StaticOverseasValue" xml:"StaticOverseasValue"`
+	DynamicOverseasValue string `json:"DynamicOverseasValue" xml:"DynamicOverseasValue"`
+}

+ 33 - 0
services/vod/struct_data_module_in_describe_domain_bps_data.go

@@ -0,0 +1,33 @@
+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.
+
+// DataModuleInDescribeDomainBpsData is a nested struct in vod response
+type DataModuleInDescribeDomainBpsData struct {
+	TimeStamp            string `json:"TimeStamp" xml:"TimeStamp"`
+	Value                string `json:"Value" xml:"Value"`
+	DomesticValue        string `json:"DomesticValue" xml:"DomesticValue"`
+	OverseasValue        string `json:"OverseasValue" xml:"OverseasValue"`
+	L2Value              string `json:"L2Value" xml:"L2Value"`
+	DomesticL2Value      string `json:"DomesticL2Value" xml:"DomesticL2Value"`
+	OverseasL2Value      string `json:"OverseasL2Value" xml:"OverseasL2Value"`
+	DynamicValue         int    `json:"DynamicValue" xml:"DynamicValue"`
+	DynamicDomesticValue string `json:"DynamicDomesticValue" xml:"DynamicDomesticValue"`
+	DynamicOverseasValue string `json:"DynamicOverseasValue" xml:"DynamicOverseasValue"`
+	StaticValue          string `json:"StaticValue" xml:"StaticValue"`
+	StaticDomesticValue  string `json:"StaticDomesticValue" xml:"StaticDomesticValue"`
+	StaticOverseasValue  string `json:"StaticOverseasValue" xml:"StaticOverseasValue"`
+}

+ 25 - 0
services/vod/struct_domain_log_detail.go

@@ -0,0 +1,25 @@
+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.
+
+// DomainLogDetail is a nested struct in vod response
+type DomainLogDetail struct {
+	LogPath   string `json:"LogPath" xml:"LogPath"`
+	StartTime string `json:"StartTime" xml:"StartTime"`
+	EndTime   string `json:"EndTime" xml:"EndTime"`
+	LogSize   int    `json:"LogSize" xml:"LogSize"`
+	LogName   string `json:"LogName" xml:"LogName"`
+}

+ 21 - 0
services/vod/struct_domain_log_details.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.
+
+// DomainLogDetails is a nested struct in vod response
+type DomainLogDetails struct {
+	DomainLogDetail []DomainLogDetail `json:"DomainLogDetail" xml:"DomainLogDetail"`
+}

+ 22 - 0
services/vod/struct_domain_log_model.go

@@ -0,0 +1,22 @@
+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.
+
+// DomainLogModel is a nested struct in vod response
+type DomainLogModel struct {
+	DomainName       string           `json:"DomainName" xml:"DomainName"`
+	DomainLogDetails DomainLogDetails `json:"DomainLogDetails" xml:"DomainLogDetails"`
+}

+ 21 - 0
services/vod/struct_flow_data_per_interval.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.
+
+// FlowDataPerInterval is a nested struct in vod response
+type FlowDataPerInterval struct {
+	DataModule []DataModule `json:"DataModule" xml:"DataModule"`
+}

+ 21 - 0
services/vod/struct_histories.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.
+
+// Histories is a nested struct in vod response
+type Histories struct {
+	History []History `json:"History" xml:"History"`
+}

+ 25 - 0
services/vod/struct_history.go

@@ -0,0 +1,25 @@
+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.
+
+// History is a nested struct in vod response
+type History struct {
+	CreationTime string `json:"CreationTime" xml:"CreationTime"`
+	Status       string `json:"Status" xml:"Status"`
+	Reason       string `json:"Reason" xml:"Reason"`
+	Comment      string `json:"Comment" xml:"Comment"`
+	Auditor      string `json:"Auditor" xml:"Auditor"`
+}

+ 27 - 0
services/vod/struct_image_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.
+
+// ImageInfo is a nested struct in vod response
+type ImageInfo struct {
+	ImageId      string    `json:"ImageId" xml:"ImageId"`
+	Title        string    `json:"Title" xml:"Title"`
+	CreationTime string    `json:"CreationTime" xml:"CreationTime"`
+	ImageType    string    `json:"ImageType" xml:"ImageType"`
+	Tags         string    `json:"Tags" xml:"Tags"`
+	URL          string    `json:"URL" xml:"URL"`
+	Mezzanine    Mezzanine `json:"Mezzanine" xml:"Mezzanine"`
+}

+ 28 - 0
services/vod/struct_live_record_video.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.
+
+// LiveRecordVideo is a nested struct in vod response
+type LiveRecordVideo struct {
+	StreamName      string                            `json:"StreamName" xml:"StreamName"`
+	DomainName      string                            `json:"DomainName" xml:"DomainName"`
+	AppName         string                            `json:"AppName" xml:"AppName"`
+	PlaylistId      string                            `json:"PlaylistId" xml:"PlaylistId"`
+	RecordStartTime string                            `json:"RecordStartTime" xml:"RecordStartTime"`
+	RecordEndTime   string                            `json:"RecordEndTime" xml:"RecordEndTime"`
+	Video           VideoInListLiveRecordVideo        `json:"Video" xml:"Video"`
+	PlayInfoList    PlayInfoListInListLiveRecordVideo `json:"PlayInfoList" xml:"PlayInfoList"`
+}

+ 21 - 0
services/vod/struct_live_record_video_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.
+
+// LiveRecordVideoList is a nested struct in vod response
+type LiveRecordVideoList struct {
+	LiveRecordVideo []LiveRecordVideo `json:"LiveRecordVideo" xml:"LiveRecordVideo"`
+}

+ 36 - 0
services/vod/struct_material.go

@@ -0,0 +1,36 @@
+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.
+
+// Material is a nested struct in vod response
+type Material struct {
+	MaterialId   string                                `json:"MaterialId" xml:"MaterialId"`
+	Title        string                                `json:"Title" xml:"Title"`
+	Tags         string                                `json:"Tags" xml:"Tags"`
+	Status       string                                `json:"Status" xml:"Status"`
+	Size         int                                   `json:"Size" xml:"Size"`
+	Duration     float64                               `json:"Duration" xml:"Duration"`
+	Description  string                                `json:"Description" xml:"Description"`
+	CreationTime string                                `json:"CreationTime" xml:"CreationTime"`
+	ModifiedTime string                                `json:"ModifiedTime" xml:"ModifiedTime"`
+	CoverURL     string                                `json:"CoverURL" xml:"CoverURL"`
+	CateId       int                                   `json:"CateId" xml:"CateId"`
+	CateName     string                                `json:"CateName" xml:"CateName"`
+	Source       string                                `json:"Source" xml:"Source"`
+	SpriteConfig string                                `json:"SpriteConfig" xml:"SpriteConfig"`
+	Snapshots    SnapshotsInGetEditingProjectMaterials `json:"Snapshots" xml:"Snapshots"`
+	Sprites      Sprites                               `json:"Sprites" xml:"Sprites"`
+}

+ 21 - 0
services/vod/struct_material_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.
+
+// MaterialList is a nested struct in vod response
+type MaterialList struct {
+	Material []Material `json:"Material" xml:"Material"`
+}

+ 25 - 0
services/vod/struct_media.go

@@ -0,0 +1,25 @@
+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.
+
+// 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"`
+}

+ 21 - 0
services/vod/struct_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.
+
+// MediaList is a nested struct in vod response
+type MediaList struct {
+	Media []Media `json:"Media" xml:"Media"`
+}

+ 25 - 0
services/vod/struct_media_snapshot.go

@@ -0,0 +1,25 @@
+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.
+
+// MediaSnapshot is a nested struct in vod response
+type MediaSnapshot struct {
+	Total        int                      `json:"Total" xml:"Total"`
+	Regular      string                   `json:"Regular" xml:"Regular"`
+	CreationTime string                   `json:"CreationTime" xml:"CreationTime"`
+	JobId        string                   `json:"JobId" xml:"JobId"`
+	Snapshots    SnapshotsInListSnapshots `json:"Snapshots" xml:"Snapshots"`
+}

+ 26 - 0
services/vod/struct_message_callback.go

@@ -0,0 +1,26 @@
+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"`
+	CallbackSwitch string `json:"CallbackSwitch" xml:"CallbackSwitch"`
+	CallbackURL    string `json:"CallbackURL" xml:"CallbackURL"`
+	EventTypeList  string `json:"EventTypeList" xml:"EventTypeList"`
+	AuthSwitch     string `json:"AuthSwitch" xml:"AuthSwitch"`
+	AuthKey        string `json:"AuthKey" xml:"AuthKey"`
+}

Some files were not shown because too many files changed in this diff