Browse Source

LIVE SDK Auto Released By renrang.yl,Version:1.19.4

Signed-off-by: haowei.yao <haowei.yao@alibaba-inc.com>
haowei.yao 7 years ago
parent
commit
9348345399
100 changed files with 10830 additions and 0 deletions
  1. 8 0
      ChangeLog.txt
  2. 113 0
      services/live/add_caster_component.go
  3. 112 0
      services/live/add_caster_episode.go
  4. 118 0
      services/live/add_caster_episode_group.go
  5. 107 0
      services/live/add_caster_episode_group_content.go
  6. 126 0
      services/live/add_caster_layout.go
  7. 117 0
      services/live/add_caster_program.go
  8. 113 0
      services/live/add_caster_video_resource.go
  9. 113 0
      services/live/add_custom_live_stream_transcode.go
  10. 121 0
      services/live/add_live_app_record_config.go
  11. 111 0
      services/live/add_live_app_snapshot_config.go
  12. 106 0
      services/live/add_live_detect_notify_config.go
  13. 107 0
      services/live/add_live_mix_config.go
  14. 106 0
      services/live/add_live_mix_notify_config.go
  15. 110 0
      services/live/add_live_pull_stream_info_config.go
  16. 108 0
      services/live/add_live_record_notify_config.go
  17. 110 0
      services/live/add_live_record_vod_config.go
  18. 111 0
      services/live/add_live_snapshot_detect_porn_config.go
  19. 107 0
      services/live/add_live_stream_transcode.go
  20. 110 0
      services/live/add_multiple_stream_mix_service.go
  21. 110 0
      services/live/add_trancode_sei.go
  22. 81 0
      services/live/client.go
  23. 107 0
      services/live/copy_caster.go
  24. 106 0
      services/live/copy_caster_scene_config.go
  25. 111 0
      services/live/create_caster.go
  26. 113 0
      services/live/create_live_stream_record_index_files.go
  27. 105 0
      services/live/delete_caster.go
  28. 107 0
      services/live/delete_caster_component.go
  29. 107 0
      services/live/delete_caster_episode.go
  30. 104 0
      services/live/delete_caster_episode_group.go
  31. 107 0
      services/live/delete_caster_layout.go
  32. 105 0
      services/live/delete_caster_program.go
  33. 106 0
      services/live/delete_caster_scene_config.go
  34. 105 0
      services/live/delete_caster_video_resource.go
  35. 107 0
      services/live/delete_live_app_record_config.go
  36. 106 0
      services/live/delete_live_app_snapshot_config.go
  37. 105 0
      services/live/delete_live_detect_notify_config.go
  38. 106 0
      services/live/delete_live_mix_config.go
  39. 105 0
      services/live/delete_live_mix_notify_config.go
  40. 107 0
      services/live/delete_live_pull_stream_info_config.go
  41. 105 0
      services/live/delete_live_record_notify_config.go
  42. 107 0
      services/live/delete_live_record_vod_config.go
  43. 106 0
      services/live/delete_live_snapshot_detect_porn_config.go
  44. 107 0
      services/live/delete_live_stream_transcode.go
  45. 105 0
      services/live/delete_live_streams_notify_url_config.go
  46. 107 0
      services/live/describe_caster_components.go
  47. 115 0
      services/live/describe_caster_config.go
  48. 107 0
      services/live/describe_caster_layouts.go
  49. 116 0
      services/live/describe_caster_program.go
  50. 106 0
      services/live/describe_caster_rtc_info.go
  51. 107 0
      services/live/describe_caster_scenes.go
  52. 107 0
      services/live/describe_caster_stream_url.go
  53. 106 0
      services/live/describe_caster_video_resources.go
  54. 112 0
      services/live/describe_casters.go
  55. 106 0
      services/live/describe_live_detect_notify_config.go
  56. 108 0
      services/live/describe_live_domain_record_data.go
  57. 107 0
      services/live/describe_live_domain_snapshot_data.go
  58. 107 0
      services/live/describe_live_domain_transcode_data.go
  59. 106 0
      services/live/describe_live_mix_config.go
  60. 106 0
      services/live/describe_live_mix_notify_config.go
  61. 106 0
      services/live/describe_live_pull_stream_config.go
  62. 116 0
      services/live/describe_live_record_config.go
  63. 106 0
      services/live/describe_live_record_notify_config.go
  64. 112 0
      services/live/describe_live_record_vod_configs.go
  65. 115 0
      services/live/describe_live_snapshot_config.go
  66. 115 0
      services/live/describe_live_snapshot_detect_porn_config.go
  67. 110 0
      services/live/describe_live_stream_bit_rate_data.go
  68. 110 0
      services/live/describe_live_stream_history_user_num.go
  69. 112 0
      services/live/describe_live_stream_online_user_num.go
  70. 110 0
      services/live/describe_live_stream_record_content.go
  71. 109 0
      services/live/describe_live_stream_record_index_file.go
  72. 118 0
      services/live/describe_live_stream_record_index_files.go
  73. 113 0
      services/live/describe_live_stream_snapshot_info.go
  74. 106 0
      services/live/describe_live_stream_transcode_info.go
  75. 113 0
      services/live/describe_live_streams_block_list.go
  76. 109 0
      services/live/describe_live_streams_control_history.go
  77. 110 0
      services/live/describe_live_streams_frame_rate_and_bit_rate_data.go
  78. 106 0
      services/live/describe_live_streams_notify_url_config.go
  79. 117 0
      services/live/describe_live_streams_online_list.go
  80. 118 0
      services/live/describe_live_streams_publish_list.go
  81. 105 0
      services/live/effect_caster_urgent.go
  82. 106 0
      services/live/effect_caster_video_resource.go
  83. 109 0
      services/live/forbid_live_stream.go
  84. 107 0
      services/live/image_porn_detection.go
  85. 113 0
      services/live/modify_caster_component.go
  86. 113 0
      services/live/modify_caster_episode.go
  87. 127 0
      services/live/modify_caster_layout.go
  88. 118 0
      services/live/modify_caster_program.go
  89. 114 0
      services/live/modify_caster_video_resource.go
  90. 107 0
      services/live/real_time_record_command.go
  91. 110 0
      services/live/remove_multiple_stream_mix_service.go
  92. 108 0
      services/live/resume_live_stream.go
  93. 115 0
      services/live/set_caster_config.go
  94. 107 0
      services/live/set_caster_scene_config.go
  95. 106 0
      services/live/set_live_streams_notify_url_config.go
  96. 106 0
      services/live/start_caster.go
  97. 106 0
      services/live/start_caster_scene.go
  98. 113 0
      services/live/start_mix_streams_service.go
  99. 108 0
      services/live/start_multiple_stream_mix_service.go
  100. 104 0
      services/live/stop_caster.go

+ 8 - 0
ChangeLog.txt

@@ -1,3 +1,11 @@
+2018-06-13 Version: 1.19.4
+1, Add API AddCasterEpisodeGroupContent,CreateCaster.
+2, Add Parameter fillMode for AddCasterLayout,ModifyCasterLayout.
+3, Add return value fillMode DescribeCasterLayouts.
+4, Update ErrorCode for StartCaster,StartCasterScene,DescribeCasters,CopyCaster.
+5, Update ErrorCode for ModifyCasterLayout,DeleteCasterLayout,DeleteLiveAppRecordConfig.
+6, Update ForbidLiveStream,DescribeLiveStreamsPublishList,DescribeLiveStreamsOnlineList.
+
 2018-06-13 Version: 1.19.3
 2018-06-13 Version: 1.19.3
 1, Add lifecycleHook.
 1, Add lifecycleHook.
 
 

+ 113 - 0
services/live/add_caster_component.go

@@ -0,0 +1,113 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddCasterComponent invokes the live.AddCasterComponent API synchronously
+// api document: https://help.aliyun.com/api/live/addcastercomponent.html
+func (client *Client) AddCasterComponent(request *AddCasterComponentRequest) (response *AddCasterComponentResponse, err error) {
+	response = CreateAddCasterComponentResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddCasterComponentWithChan invokes the live.AddCasterComponent API asynchronously
+// api document: https://help.aliyun.com/api/live/addcastercomponent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterComponentWithChan(request *AddCasterComponentRequest) (<-chan *AddCasterComponentResponse, <-chan error) {
+	responseChan := make(chan *AddCasterComponentResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddCasterComponent(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddCasterComponentWithCallback invokes the live.AddCasterComponent API asynchronously
+// api document: https://help.aliyun.com/api/live/addcastercomponent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterComponentWithCallback(request *AddCasterComponentRequest, callback func(response *AddCasterComponentResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddCasterComponentResponse
+		var err error
+		defer close(result)
+		response, err = client.AddCasterComponent(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddCasterComponentRequest is the request struct for api AddCasterComponent
+type AddCasterComponentRequest struct {
+	*requests.RpcRequest
+	ComponentType       string           `position:"Query" name:"ComponentType"`
+	LocationId          string           `position:"Query" name:"LocationId"`
+	ImageLayerContent   string           `position:"Query" name:"ImageLayerContent"`
+	CasterId            string           `position:"Query" name:"CasterId"`
+	Effect              string           `position:"Query" name:"Effect"`
+	ComponentLayer      string           `position:"Query" name:"ComponentLayer"`
+	CaptionLayerContent string           `position:"Query" name:"CaptionLayerContent"`
+	ComponentName       string           `position:"Query" name:"ComponentName"`
+	OwnerId             requests.Integer `position:"Query" name:"OwnerId"`
+	TextLayerContent    string           `position:"Query" name:"TextLayerContent"`
+}
+
+// AddCasterComponentResponse is the response struct for api AddCasterComponent
+type AddCasterComponentResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	ComponentId string `json:"ComponentId" xml:"ComponentId"`
+}
+
+// CreateAddCasterComponentRequest creates a request to invoke AddCasterComponent API
+func CreateAddCasterComponentRequest() (request *AddCasterComponentRequest) {
+	request = &AddCasterComponentRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddCasterComponent", "live", "openAPI")
+	return
+}
+
+// CreateAddCasterComponentResponse creates a response to parse from AddCasterComponent response
+func CreateAddCasterComponentResponse() (response *AddCasterComponentResponse) {
+	response = &AddCasterComponentResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/live/add_caster_episode.go

@@ -0,0 +1,112 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddCasterEpisode invokes the live.AddCasterEpisode API synchronously
+// api document: https://help.aliyun.com/api/live/addcasterepisode.html
+func (client *Client) AddCasterEpisode(request *AddCasterEpisodeRequest) (response *AddCasterEpisodeResponse, err error) {
+	response = CreateAddCasterEpisodeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddCasterEpisodeWithChan invokes the live.AddCasterEpisode API asynchronously
+// api document: https://help.aliyun.com/api/live/addcasterepisode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterEpisodeWithChan(request *AddCasterEpisodeRequest) (<-chan *AddCasterEpisodeResponse, <-chan error) {
+	responseChan := make(chan *AddCasterEpisodeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddCasterEpisode(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddCasterEpisodeWithCallback invokes the live.AddCasterEpisode API asynchronously
+// api document: https://help.aliyun.com/api/live/addcasterepisode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterEpisodeWithCallback(request *AddCasterEpisodeRequest, callback func(response *AddCasterEpisodeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddCasterEpisodeResponse
+		var err error
+		defer close(result)
+		response, err = client.AddCasterEpisode(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddCasterEpisodeRequest is the request struct for api AddCasterEpisode
+type AddCasterEpisodeRequest struct {
+	*requests.RpcRequest
+	ResourceId  string           `position:"Query" name:"ResourceId"`
+	ComponentId *[]string        `position:"Query" name:"ComponentId"  type:"Repeated"`
+	SwitchType  string           `position:"Query" name:"SwitchType"`
+	CasterId    string           `position:"Query" name:"CasterId"`
+	EpisodeType string           `position:"Query" name:"EpisodeType"`
+	EpisodeName string           `position:"Query" name:"EpisodeName"`
+	EndTime     string           `position:"Query" name:"EndTime"`
+	StartTime   string           `position:"Query" name:"StartTime"`
+	OwnerId     requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// AddCasterEpisodeResponse is the response struct for api AddCasterEpisode
+type AddCasterEpisodeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	EpisodeId string `json:"EpisodeId" xml:"EpisodeId"`
+}
+
+// CreateAddCasterEpisodeRequest creates a request to invoke AddCasterEpisode API
+func CreateAddCasterEpisodeRequest() (request *AddCasterEpisodeRequest) {
+	request = &AddCasterEpisodeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddCasterEpisode", "live", "openAPI")
+	return
+}
+
+// CreateAddCasterEpisodeResponse creates a response to parse from AddCasterEpisode response
+func CreateAddCasterEpisodeResponse() (response *AddCasterEpisodeResponse) {
+	response = &AddCasterEpisodeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/live/add_caster_episode_group.go

@@ -0,0 +1,118 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddCasterEpisodeGroup invokes the live.AddCasterEpisodeGroup API synchronously
+// api document: https://help.aliyun.com/api/live/addcasterepisodegroup.html
+func (client *Client) AddCasterEpisodeGroup(request *AddCasterEpisodeGroupRequest) (response *AddCasterEpisodeGroupResponse, err error) {
+	response = CreateAddCasterEpisodeGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddCasterEpisodeGroupWithChan invokes the live.AddCasterEpisodeGroup API asynchronously
+// api document: https://help.aliyun.com/api/live/addcasterepisodegroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterEpisodeGroupWithChan(request *AddCasterEpisodeGroupRequest) (<-chan *AddCasterEpisodeGroupResponse, <-chan error) {
+	responseChan := make(chan *AddCasterEpisodeGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddCasterEpisodeGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddCasterEpisodeGroupWithCallback invokes the live.AddCasterEpisodeGroup API asynchronously
+// api document: https://help.aliyun.com/api/live/addcasterepisodegroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterEpisodeGroupWithCallback(request *AddCasterEpisodeGroupRequest, callback func(response *AddCasterEpisodeGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddCasterEpisodeGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.AddCasterEpisodeGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddCasterEpisodeGroupRequest is the request struct for api AddCasterEpisodeGroup
+type AddCasterEpisodeGroupRequest struct {
+	*requests.RpcRequest
+	SideOutputUrl string                       `position:"Query" name:"SideOutputUrl"`
+	Item          *[]AddCasterEpisodeGroupItem `position:"Query" name:"Item"  type:"Repeated"`
+	ClientToken   string                       `position:"Query" name:"ClientToken"`
+	DomainName    string                       `position:"Query" name:"DomainName"`
+	StartTime     string                       `position:"Query" name:"StartTime"`
+	RepeatNum     requests.Integer             `position:"Query" name:"RepeatNum"`
+	CallbackUrl   string                       `position:"Query" name:"CallbackUrl"`
+	OwnerId       requests.Integer             `position:"Query" name:"OwnerId"`
+}
+
+// AddCasterEpisodeGroupItem is a repeated param struct in AddCasterEpisodeGroupRequest
+type AddCasterEpisodeGroupItem struct {
+	ItemName string `name:"ItemName"`
+	VodUrl   string `name:"VodUrl"`
+}
+
+// AddCasterEpisodeGroupResponse is the response struct for api AddCasterEpisodeGroup
+type AddCasterEpisodeGroupResponse struct {
+	*responses.BaseResponse
+	RequestId string                         `json:"RequestId" xml:"RequestId"`
+	ProgramId string                         `json:"ProgramId" xml:"ProgramId"`
+	ItemIds   ItemIdsInAddCasterEpisodeGroup `json:"ItemIds" xml:"ItemIds"`
+}
+
+// CreateAddCasterEpisodeGroupRequest creates a request to invoke AddCasterEpisodeGroup API
+func CreateAddCasterEpisodeGroupRequest() (request *AddCasterEpisodeGroupRequest) {
+	request = &AddCasterEpisodeGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddCasterEpisodeGroup", "live", "openAPI")
+	return
+}
+
+// CreateAddCasterEpisodeGroupResponse creates a response to parse from AddCasterEpisodeGroup response
+func CreateAddCasterEpisodeGroupResponse() (response *AddCasterEpisodeGroupResponse) {
+	response = &AddCasterEpisodeGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/add_caster_episode_group_content.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddCasterEpisodeGroupContent invokes the live.AddCasterEpisodeGroupContent API synchronously
+// api document: https://help.aliyun.com/api/live/addcasterepisodegroupcontent.html
+func (client *Client) AddCasterEpisodeGroupContent(request *AddCasterEpisodeGroupContentRequest) (response *AddCasterEpisodeGroupContentResponse, err error) {
+	response = CreateAddCasterEpisodeGroupContentResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddCasterEpisodeGroupContentWithChan invokes the live.AddCasterEpisodeGroupContent API asynchronously
+// api document: https://help.aliyun.com/api/live/addcasterepisodegroupcontent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterEpisodeGroupContentWithChan(request *AddCasterEpisodeGroupContentRequest) (<-chan *AddCasterEpisodeGroupContentResponse, <-chan error) {
+	responseChan := make(chan *AddCasterEpisodeGroupContentResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddCasterEpisodeGroupContent(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddCasterEpisodeGroupContentWithCallback invokes the live.AddCasterEpisodeGroupContent API asynchronously
+// api document: https://help.aliyun.com/api/live/addcasterepisodegroupcontent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterEpisodeGroupContentWithCallback(request *AddCasterEpisodeGroupContentRequest, callback func(response *AddCasterEpisodeGroupContentResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddCasterEpisodeGroupContentResponse
+		var err error
+		defer close(result)
+		response, err = client.AddCasterEpisodeGroupContent(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddCasterEpisodeGroupContentRequest is the request struct for api AddCasterEpisodeGroupContent
+type AddCasterEpisodeGroupContentRequest struct {
+	*requests.RpcRequest
+	ClientToken string           `position:"Query" name:"ClientToken"`
+	OwnerId     requests.Integer `position:"Query" name:"OwnerId"`
+	Content     string           `position:"Query" name:"Content"`
+}
+
+// AddCasterEpisodeGroupContentResponse is the response struct for api AddCasterEpisodeGroupContent
+type AddCasterEpisodeGroupContentResponse struct {
+	*responses.BaseResponse
+	RequestId string                                `json:"RequestId" xml:"RequestId"`
+	ProgramId string                                `json:"ProgramId" xml:"ProgramId"`
+	ItemIds   ItemIdsInAddCasterEpisodeGroupContent `json:"ItemIds" xml:"ItemIds"`
+}
+
+// CreateAddCasterEpisodeGroupContentRequest creates a request to invoke AddCasterEpisodeGroupContent API
+func CreateAddCasterEpisodeGroupContentRequest() (request *AddCasterEpisodeGroupContentRequest) {
+	request = &AddCasterEpisodeGroupContentRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddCasterEpisodeGroupContent", "live", "openAPI")
+	return
+}
+
+// CreateAddCasterEpisodeGroupContentResponse creates a response to parse from AddCasterEpisodeGroupContent response
+func CreateAddCasterEpisodeGroupContentResponse() (response *AddCasterEpisodeGroupContentResponse) {
+	response = &AddCasterEpisodeGroupContentResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 126 - 0
services/live/add_caster_layout.go

@@ -0,0 +1,126 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddCasterLayout invokes the live.AddCasterLayout API synchronously
+// api document: https://help.aliyun.com/api/live/addcasterlayout.html
+func (client *Client) AddCasterLayout(request *AddCasterLayoutRequest) (response *AddCasterLayoutResponse, err error) {
+	response = CreateAddCasterLayoutResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddCasterLayoutWithChan invokes the live.AddCasterLayout API asynchronously
+// api document: https://help.aliyun.com/api/live/addcasterlayout.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterLayoutWithChan(request *AddCasterLayoutRequest) (<-chan *AddCasterLayoutResponse, <-chan error) {
+	responseChan := make(chan *AddCasterLayoutResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddCasterLayout(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddCasterLayoutWithCallback invokes the live.AddCasterLayout API asynchronously
+// api document: https://help.aliyun.com/api/live/addcasterlayout.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterLayoutWithCallback(request *AddCasterLayoutRequest, callback func(response *AddCasterLayoutResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddCasterLayoutResponse
+		var err error
+		defer close(result)
+		response, err = client.AddCasterLayout(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddCasterLayoutRequest is the request struct for api AddCasterLayout
+type AddCasterLayoutRequest struct {
+	*requests.RpcRequest
+	BlendList  *[]string                    `position:"Query" name:"BlendList"  type:"Repeated"`
+	AudioLayer *[]AddCasterLayoutAudioLayer `position:"Query" name:"AudioLayer"  type:"Repeated"`
+	VideoLayer *[]AddCasterLayoutVideoLayer `position:"Query" name:"VideoLayer"  type:"Repeated"`
+	CasterId   string                       `position:"Query" name:"CasterId"`
+	MixList    *[]string                    `position:"Query" name:"MixList"  type:"Repeated"`
+	OwnerId    requests.Integer             `position:"Query" name:"OwnerId"`
+}
+
+// AddCasterLayoutAudioLayer is a repeated param struct in AddCasterLayoutRequest
+type AddCasterLayoutAudioLayer struct {
+	VolumeRate         string `name:"VolumeRate"`
+	ValidChannel       string `name:"ValidChannel"`
+	FixedDelayDuration string `name:"FixedDelayDuration"`
+}
+
+// AddCasterLayoutVideoLayer is a repeated param struct in AddCasterLayoutRequest
+type AddCasterLayoutVideoLayer struct {
+	FillMode           string            `name:"FillMode"`
+	HeightNormalized   string            `name:"HeightNormalized"`
+	WidthNormalized    string            `name:"WidthNormalized"`
+	PositionRefer      string            `name:"PositionRefer"`
+	PositionNormalized *[]requests.Float `name:"PositionNormalized" type:"Repeated"`
+	FixedDelayDuration string            `name:"FixedDelayDuration"`
+}
+
+// AddCasterLayoutResponse is the response struct for api AddCasterLayout
+type AddCasterLayoutResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	LayoutId  string `json:"LayoutId" xml:"LayoutId"`
+}
+
+// CreateAddCasterLayoutRequest creates a request to invoke AddCasterLayout API
+func CreateAddCasterLayoutRequest() (request *AddCasterLayoutRequest) {
+	request = &AddCasterLayoutRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddCasterLayout", "live", "openAPI")
+	return
+}
+
+// CreateAddCasterLayoutResponse creates a response to parse from AddCasterLayout response
+func CreateAddCasterLayoutResponse() (response *AddCasterLayoutResponse) {
+	response = &AddCasterLayoutResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 117 - 0
services/live/add_caster_program.go

@@ -0,0 +1,117 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddCasterProgram invokes the live.AddCasterProgram API synchronously
+// api document: https://help.aliyun.com/api/live/addcasterprogram.html
+func (client *Client) AddCasterProgram(request *AddCasterProgramRequest) (response *AddCasterProgramResponse, err error) {
+	response = CreateAddCasterProgramResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddCasterProgramWithChan invokes the live.AddCasterProgram API asynchronously
+// api document: https://help.aliyun.com/api/live/addcasterprogram.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterProgramWithChan(request *AddCasterProgramRequest) (<-chan *AddCasterProgramResponse, <-chan error) {
+	responseChan := make(chan *AddCasterProgramResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddCasterProgram(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddCasterProgramWithCallback invokes the live.AddCasterProgram API asynchronously
+// api document: https://help.aliyun.com/api/live/addcasterprogram.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterProgramWithCallback(request *AddCasterProgramRequest, callback func(response *AddCasterProgramResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddCasterProgramResponse
+		var err error
+		defer close(result)
+		response, err = client.AddCasterProgram(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddCasterProgramRequest is the request struct for api AddCasterProgram
+type AddCasterProgramRequest struct {
+	*requests.RpcRequest
+	CasterId string                     `position:"Query" name:"CasterId"`
+	Episode  *[]AddCasterProgramEpisode `position:"Query" name:"Episode"  type:"Repeated"`
+	OwnerId  requests.Integer           `position:"Query" name:"OwnerId"`
+}
+
+// AddCasterProgramEpisode is a repeated param struct in AddCasterProgramRequest
+type AddCasterProgramEpisode struct {
+	EpisodeType string    `name:"EpisodeType"`
+	EpisodeName string    `name:"EpisodeName"`
+	ResourceId  string    `name:"ResourceId"`
+	ComponentId *[]string `name:"ComponentId" type:"Repeated"`
+	StartTime   string    `name:"StartTime"`
+	EndTime     string    `name:"EndTime"`
+	SwitchType  string    `name:"SwitchType"`
+}
+
+// AddCasterProgramResponse is the response struct for api AddCasterProgram
+type AddCasterProgramResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	EpisodeIds EpisodeIds `json:"EpisodeIds" xml:"EpisodeIds"`
+}
+
+// CreateAddCasterProgramRequest creates a request to invoke AddCasterProgram API
+func CreateAddCasterProgramRequest() (request *AddCasterProgramRequest) {
+	request = &AddCasterProgramRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddCasterProgram", "live", "openAPI")
+	return
+}
+
+// CreateAddCasterProgramResponse creates a response to parse from AddCasterProgram response
+func CreateAddCasterProgramResponse() (response *AddCasterProgramResponse) {
+	response = &AddCasterProgramResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/live/add_caster_video_resource.go

@@ -0,0 +1,113 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddCasterVideoResource invokes the live.AddCasterVideoResource API synchronously
+// api document: https://help.aliyun.com/api/live/addcastervideoresource.html
+func (client *Client) AddCasterVideoResource(request *AddCasterVideoResourceRequest) (response *AddCasterVideoResourceResponse, err error) {
+	response = CreateAddCasterVideoResourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddCasterVideoResourceWithChan invokes the live.AddCasterVideoResource API asynchronously
+// api document: https://help.aliyun.com/api/live/addcastervideoresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterVideoResourceWithChan(request *AddCasterVideoResourceRequest) (<-chan *AddCasterVideoResourceResponse, <-chan error) {
+	responseChan := make(chan *AddCasterVideoResourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddCasterVideoResource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddCasterVideoResourceWithCallback invokes the live.AddCasterVideoResource API asynchronously
+// api document: https://help.aliyun.com/api/live/addcastervideoresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCasterVideoResourceWithCallback(request *AddCasterVideoResourceRequest, callback func(response *AddCasterVideoResourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddCasterVideoResourceResponse
+		var err error
+		defer close(result)
+		response, err = client.AddCasterVideoResource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddCasterVideoResourceRequest is the request struct for api AddCasterVideoResource
+type AddCasterVideoResourceRequest struct {
+	*requests.RpcRequest
+	BeginOffset   requests.Integer `position:"Query" name:"BeginOffset"`
+	VodUrl        string           `position:"Query" name:"VodUrl"`
+	LiveStreamUrl string           `position:"Query" name:"LiveStreamUrl"`
+	LocationId    string           `position:"Query" name:"LocationId"`
+	CasterId      string           `position:"Query" name:"CasterId"`
+	EndOffset     requests.Integer `position:"Query" name:"EndOffset"`
+	ResourceName  string           `position:"Query" name:"ResourceName"`
+	RepeatNum     requests.Integer `position:"Query" name:"RepeatNum"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	MaterialId    string           `position:"Query" name:"MaterialId"`
+}
+
+// AddCasterVideoResourceResponse is the response struct for api AddCasterVideoResource
+type AddCasterVideoResourceResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	ResourceId string `json:"ResourceId" xml:"ResourceId"`
+}
+
+// CreateAddCasterVideoResourceRequest creates a request to invoke AddCasterVideoResource API
+func CreateAddCasterVideoResourceRequest() (request *AddCasterVideoResourceRequest) {
+	request = &AddCasterVideoResourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddCasterVideoResource", "live", "openAPI")
+	return
+}
+
+// CreateAddCasterVideoResourceResponse creates a response to parse from AddCasterVideoResource response
+func CreateAddCasterVideoResourceResponse() (response *AddCasterVideoResourceResponse) {
+	response = &AddCasterVideoResourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/live/add_custom_live_stream_transcode.go

@@ -0,0 +1,113 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddCustomLiveStreamTranscode invokes the live.AddCustomLiveStreamTranscode API synchronously
+// api document: https://help.aliyun.com/api/live/addcustomlivestreamtranscode.html
+func (client *Client) AddCustomLiveStreamTranscode(request *AddCustomLiveStreamTranscodeRequest) (response *AddCustomLiveStreamTranscodeResponse, err error) {
+	response = CreateAddCustomLiveStreamTranscodeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddCustomLiveStreamTranscodeWithChan invokes the live.AddCustomLiveStreamTranscode API asynchronously
+// api document: https://help.aliyun.com/api/live/addcustomlivestreamtranscode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCustomLiveStreamTranscodeWithChan(request *AddCustomLiveStreamTranscodeRequest) (<-chan *AddCustomLiveStreamTranscodeResponse, <-chan error) {
+	responseChan := make(chan *AddCustomLiveStreamTranscodeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddCustomLiveStreamTranscode(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddCustomLiveStreamTranscodeWithCallback invokes the live.AddCustomLiveStreamTranscode API asynchronously
+// api document: https://help.aliyun.com/api/live/addcustomlivestreamtranscode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddCustomLiveStreamTranscodeWithCallback(request *AddCustomLiveStreamTranscodeRequest, callback func(response *AddCustomLiveStreamTranscodeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddCustomLiveStreamTranscodeResponse
+		var err error
+		defer close(result)
+		response, err = client.AddCustomLiveStreamTranscode(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddCustomLiveStreamTranscodeRequest is the request struct for api AddCustomLiveStreamTranscode
+type AddCustomLiveStreamTranscodeRequest struct {
+	*requests.RpcRequest
+	App           string           `position:"Query" name:"App"`
+	Template      string           `position:"Query" name:"Template"`
+	FPS           requests.Integer `position:"Query" name:"FPS"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	Version       string           `position:"Query" name:"Version"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	TemplateType  string           `position:"Query" name:"TemplateType"`
+	Domain        string           `position:"Query" name:"Domain"`
+	Width         requests.Integer `position:"Query" name:"Width"`
+	VideoBitrate  requests.Integer `position:"Query" name:"VideoBitrate"`
+	Height        requests.Integer `position:"Query" name:"Height"`
+}
+
+// AddCustomLiveStreamTranscodeResponse is the response struct for api AddCustomLiveStreamTranscode
+type AddCustomLiveStreamTranscodeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddCustomLiveStreamTranscodeRequest creates a request to invoke AddCustomLiveStreamTranscode API
+func CreateAddCustomLiveStreamTranscodeRequest() (request *AddCustomLiveStreamTranscodeRequest) {
+	request = &AddCustomLiveStreamTranscodeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddCustomLiveStreamTranscode", "live", "openAPI")
+	return
+}
+
+// CreateAddCustomLiveStreamTranscodeResponse creates a response to parse from AddCustomLiveStreamTranscode response
+func CreateAddCustomLiveStreamTranscodeResponse() (response *AddCustomLiveStreamTranscodeResponse) {
+	response = &AddCustomLiveStreamTranscodeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 121 - 0
services/live/add_live_app_record_config.go

@@ -0,0 +1,121 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddLiveAppRecordConfig invokes the live.AddLiveAppRecordConfig API synchronously
+// api document: https://help.aliyun.com/api/live/addliveapprecordconfig.html
+func (client *Client) AddLiveAppRecordConfig(request *AddLiveAppRecordConfigRequest) (response *AddLiveAppRecordConfigResponse, err error) {
+	response = CreateAddLiveAppRecordConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddLiveAppRecordConfigWithChan invokes the live.AddLiveAppRecordConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addliveapprecordconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveAppRecordConfigWithChan(request *AddLiveAppRecordConfigRequest) (<-chan *AddLiveAppRecordConfigResponse, <-chan error) {
+	responseChan := make(chan *AddLiveAppRecordConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddLiveAppRecordConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddLiveAppRecordConfigWithCallback invokes the live.AddLiveAppRecordConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addliveapprecordconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveAppRecordConfigWithCallback(request *AddLiveAppRecordConfigRequest, callback func(response *AddLiveAppRecordConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddLiveAppRecordConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.AddLiveAppRecordConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddLiveAppRecordConfigRequest is the request struct for api AddLiveAppRecordConfig
+type AddLiveAppRecordConfigRequest struct {
+	*requests.RpcRequest
+	OssBucket     string                                `position:"Query" name:"OssBucket"`
+	DomainName    string                                `position:"Query" name:"DomainName"`
+	OssEndpoint   string                                `position:"Query" name:"OssEndpoint"`
+	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"`
+	SecurityToken string                                `position:"Query" name:"SecurityToken"`
+	RecordFormat  *[]AddLiveAppRecordConfigRecordFormat `position:"Query" name:"RecordFormat"  type:"Repeated"`
+	OnDemand      requests.Integer                      `position:"Query" name:"OnDemand"`
+	StreamName    string                                `position:"Query" name:"StreamName"`
+}
+
+// AddLiveAppRecordConfigRecordFormat is a repeated param struct in AddLiveAppRecordConfigRequest
+type AddLiveAppRecordConfigRecordFormat struct {
+	Format               string `name:"Format"`
+	OssObjectPrefix      string `name:"OssObjectPrefix"`
+	SliceOssObjectPrefix string `name:"SliceOssObjectPrefix"`
+	CycleDuration        string `name:"CycleDuration"`
+}
+
+// AddLiveAppRecordConfigResponse is the response struct for api AddLiveAppRecordConfig
+type AddLiveAppRecordConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddLiveAppRecordConfigRequest creates a request to invoke AddLiveAppRecordConfig API
+func CreateAddLiveAppRecordConfigRequest() (request *AddLiveAppRecordConfigRequest) {
+	request = &AddLiveAppRecordConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddLiveAppRecordConfig", "live", "openAPI")
+	return
+}
+
+// CreateAddLiveAppRecordConfigResponse creates a response to parse from AddLiveAppRecordConfig response
+func CreateAddLiveAppRecordConfigResponse() (response *AddLiveAppRecordConfigResponse) {
+	response = &AddLiveAppRecordConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/live/add_live_app_snapshot_config.go

@@ -0,0 +1,111 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddLiveAppSnapshotConfig invokes the live.AddLiveAppSnapshotConfig API synchronously
+// api document: https://help.aliyun.com/api/live/addliveappsnapshotconfig.html
+func (client *Client) AddLiveAppSnapshotConfig(request *AddLiveAppSnapshotConfigRequest) (response *AddLiveAppSnapshotConfigResponse, err error) {
+	response = CreateAddLiveAppSnapshotConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddLiveAppSnapshotConfigWithChan invokes the live.AddLiveAppSnapshotConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addliveappsnapshotconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveAppSnapshotConfigWithChan(request *AddLiveAppSnapshotConfigRequest) (<-chan *AddLiveAppSnapshotConfigResponse, <-chan error) {
+	responseChan := make(chan *AddLiveAppSnapshotConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddLiveAppSnapshotConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddLiveAppSnapshotConfigWithCallback invokes the live.AddLiveAppSnapshotConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addliveappsnapshotconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveAppSnapshotConfigWithCallback(request *AddLiveAppSnapshotConfigRequest, callback func(response *AddLiveAppSnapshotConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddLiveAppSnapshotConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.AddLiveAppSnapshotConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddLiveAppSnapshotConfigRequest is the request struct for api AddLiveAppSnapshotConfig
+type AddLiveAppSnapshotConfigRequest struct {
+	*requests.RpcRequest
+	TimeInterval       requests.Integer `position:"Query" name:"TimeInterval"`
+	OssBucket          string           `position:"Query" name:"OssBucket"`
+	AppName            string           `position:"Query" name:"AppName"`
+	SecurityToken      string           `position:"Query" name:"SecurityToken"`
+	DomainName         string           `position:"Query" name:"DomainName"`
+	OssEndpoint        string           `position:"Query" name:"OssEndpoint"`
+	SequenceOssObject  string           `position:"Query" name:"SequenceOssObject"`
+	OverwriteOssObject string           `position:"Query" name:"OverwriteOssObject"`
+	OwnerId            requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// AddLiveAppSnapshotConfigResponse is the response struct for api AddLiveAppSnapshotConfig
+type AddLiveAppSnapshotConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddLiveAppSnapshotConfigRequest creates a request to invoke AddLiveAppSnapshotConfig API
+func CreateAddLiveAppSnapshotConfigRequest() (request *AddLiveAppSnapshotConfigRequest) {
+	request = &AddLiveAppSnapshotConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddLiveAppSnapshotConfig", "live", "openAPI")
+	return
+}
+
+// CreateAddLiveAppSnapshotConfigResponse creates a response to parse from AddLiveAppSnapshotConfig response
+func CreateAddLiveAppSnapshotConfigResponse() (response *AddLiveAppSnapshotConfigResponse) {
+	response = &AddLiveAppSnapshotConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/add_live_detect_notify_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddLiveDetectNotifyConfig invokes the live.AddLiveDetectNotifyConfig API synchronously
+// api document: https://help.aliyun.com/api/live/addlivedetectnotifyconfig.html
+func (client *Client) AddLiveDetectNotifyConfig(request *AddLiveDetectNotifyConfigRequest) (response *AddLiveDetectNotifyConfigResponse, err error) {
+	response = CreateAddLiveDetectNotifyConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddLiveDetectNotifyConfigWithChan invokes the live.AddLiveDetectNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivedetectnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveDetectNotifyConfigWithChan(request *AddLiveDetectNotifyConfigRequest) (<-chan *AddLiveDetectNotifyConfigResponse, <-chan error) {
+	responseChan := make(chan *AddLiveDetectNotifyConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddLiveDetectNotifyConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddLiveDetectNotifyConfigWithCallback invokes the live.AddLiveDetectNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivedetectnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveDetectNotifyConfigWithCallback(request *AddLiveDetectNotifyConfigRequest, callback func(response *AddLiveDetectNotifyConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddLiveDetectNotifyConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.AddLiveDetectNotifyConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddLiveDetectNotifyConfigRequest is the request struct for api AddLiveDetectNotifyConfig
+type AddLiveDetectNotifyConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	NotifyUrl     string           `position:"Query" name:"NotifyUrl"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// AddLiveDetectNotifyConfigResponse is the response struct for api AddLiveDetectNotifyConfig
+type AddLiveDetectNotifyConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddLiveDetectNotifyConfigRequest creates a request to invoke AddLiveDetectNotifyConfig API
+func CreateAddLiveDetectNotifyConfigRequest() (request *AddLiveDetectNotifyConfigRequest) {
+	request = &AddLiveDetectNotifyConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddLiveDetectNotifyConfig", "live", "openAPI")
+	return
+}
+
+// CreateAddLiveDetectNotifyConfigResponse creates a response to parse from AddLiveDetectNotifyConfig response
+func CreateAddLiveDetectNotifyConfigResponse() (response *AddLiveDetectNotifyConfigResponse) {
+	response = &AddLiveDetectNotifyConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/add_live_mix_config.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddLiveMixConfig invokes the live.AddLiveMixConfig API synchronously
+// api document: https://help.aliyun.com/api/live/addlivemixconfig.html
+func (client *Client) AddLiveMixConfig(request *AddLiveMixConfigRequest) (response *AddLiveMixConfigResponse, err error) {
+	response = CreateAddLiveMixConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddLiveMixConfigWithChan invokes the live.AddLiveMixConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivemixconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveMixConfigWithChan(request *AddLiveMixConfigRequest) (<-chan *AddLiveMixConfigResponse, <-chan error) {
+	responseChan := make(chan *AddLiveMixConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddLiveMixConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddLiveMixConfigWithCallback invokes the live.AddLiveMixConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivemixconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveMixConfigWithCallback(request *AddLiveMixConfigRequest, callback func(response *AddLiveMixConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddLiveMixConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.AddLiveMixConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddLiveMixConfigRequest is the request struct for api AddLiveMixConfig
+type AddLiveMixConfigRequest struct {
+	*requests.RpcRequest
+	Template      string           `position:"Query" name:"Template"`
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// AddLiveMixConfigResponse is the response struct for api AddLiveMixConfig
+type AddLiveMixConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddLiveMixConfigRequest creates a request to invoke AddLiveMixConfig API
+func CreateAddLiveMixConfigRequest() (request *AddLiveMixConfigRequest) {
+	request = &AddLiveMixConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddLiveMixConfig", "live", "openAPI")
+	return
+}
+
+// CreateAddLiveMixConfigResponse creates a response to parse from AddLiveMixConfig response
+func CreateAddLiveMixConfigResponse() (response *AddLiveMixConfigResponse) {
+	response = &AddLiveMixConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/add_live_mix_notify_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddLiveMixNotifyConfig invokes the live.AddLiveMixNotifyConfig API synchronously
+// api document: https://help.aliyun.com/api/live/addlivemixnotifyconfig.html
+func (client *Client) AddLiveMixNotifyConfig(request *AddLiveMixNotifyConfigRequest) (response *AddLiveMixNotifyConfigResponse, err error) {
+	response = CreateAddLiveMixNotifyConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddLiveMixNotifyConfigWithChan invokes the live.AddLiveMixNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivemixnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveMixNotifyConfigWithChan(request *AddLiveMixNotifyConfigRequest) (<-chan *AddLiveMixNotifyConfigResponse, <-chan error) {
+	responseChan := make(chan *AddLiveMixNotifyConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddLiveMixNotifyConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddLiveMixNotifyConfigWithCallback invokes the live.AddLiveMixNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivemixnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveMixNotifyConfigWithCallback(request *AddLiveMixNotifyConfigRequest, callback func(response *AddLiveMixNotifyConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddLiveMixNotifyConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.AddLiveMixNotifyConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddLiveMixNotifyConfigRequest is the request struct for api AddLiveMixNotifyConfig
+type AddLiveMixNotifyConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	NotifyUrl     string           `position:"Query" name:"NotifyUrl"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// AddLiveMixNotifyConfigResponse is the response struct for api AddLiveMixNotifyConfig
+type AddLiveMixNotifyConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddLiveMixNotifyConfigRequest creates a request to invoke AddLiveMixNotifyConfig API
+func CreateAddLiveMixNotifyConfigRequest() (request *AddLiveMixNotifyConfigRequest) {
+	request = &AddLiveMixNotifyConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddLiveMixNotifyConfig", "live", "openAPI")
+	return
+}
+
+// CreateAddLiveMixNotifyConfigResponse creates a response to parse from AddLiveMixNotifyConfig response
+func CreateAddLiveMixNotifyConfigResponse() (response *AddLiveMixNotifyConfigResponse) {
+	response = &AddLiveMixNotifyConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/live/add_live_pull_stream_info_config.go

@@ -0,0 +1,110 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddLivePullStreamInfoConfig invokes the live.AddLivePullStreamInfoConfig API synchronously
+// api document: https://help.aliyun.com/api/live/addlivepullstreaminfoconfig.html
+func (client *Client) AddLivePullStreamInfoConfig(request *AddLivePullStreamInfoConfigRequest) (response *AddLivePullStreamInfoConfigResponse, err error) {
+	response = CreateAddLivePullStreamInfoConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddLivePullStreamInfoConfigWithChan invokes the live.AddLivePullStreamInfoConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivepullstreaminfoconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLivePullStreamInfoConfigWithChan(request *AddLivePullStreamInfoConfigRequest) (<-chan *AddLivePullStreamInfoConfigResponse, <-chan error) {
+	responseChan := make(chan *AddLivePullStreamInfoConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddLivePullStreamInfoConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddLivePullStreamInfoConfigWithCallback invokes the live.AddLivePullStreamInfoConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivepullstreaminfoconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLivePullStreamInfoConfigWithCallback(request *AddLivePullStreamInfoConfigRequest, callback func(response *AddLivePullStreamInfoConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddLivePullStreamInfoConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.AddLivePullStreamInfoConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddLivePullStreamInfoConfigRequest is the request struct for api AddLivePullStreamInfoConfig
+type AddLivePullStreamInfoConfigRequest struct {
+	*requests.RpcRequest
+	SourceUrl     string           `position:"Query" name:"SourceUrl"`
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	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"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// AddLivePullStreamInfoConfigResponse is the response struct for api AddLivePullStreamInfoConfig
+type AddLivePullStreamInfoConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddLivePullStreamInfoConfigRequest creates a request to invoke AddLivePullStreamInfoConfig API
+func CreateAddLivePullStreamInfoConfigRequest() (request *AddLivePullStreamInfoConfigRequest) {
+	request = &AddLivePullStreamInfoConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddLivePullStreamInfoConfig", "live", "openAPI")
+	return
+}
+
+// CreateAddLivePullStreamInfoConfigResponse creates a response to parse from AddLivePullStreamInfoConfig response
+func CreateAddLivePullStreamInfoConfigResponse() (response *AddLivePullStreamInfoConfigResponse) {
+	response = &AddLivePullStreamInfoConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/live/add_live_record_notify_config.go

@@ -0,0 +1,108 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddLiveRecordNotifyConfig invokes the live.AddLiveRecordNotifyConfig API synchronously
+// api document: https://help.aliyun.com/api/live/addliverecordnotifyconfig.html
+func (client *Client) AddLiveRecordNotifyConfig(request *AddLiveRecordNotifyConfigRequest) (response *AddLiveRecordNotifyConfigResponse, err error) {
+	response = CreateAddLiveRecordNotifyConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddLiveRecordNotifyConfigWithChan invokes the live.AddLiveRecordNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addliverecordnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveRecordNotifyConfigWithChan(request *AddLiveRecordNotifyConfigRequest) (<-chan *AddLiveRecordNotifyConfigResponse, <-chan error) {
+	responseChan := make(chan *AddLiveRecordNotifyConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddLiveRecordNotifyConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddLiveRecordNotifyConfigWithCallback invokes the live.AddLiveRecordNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addliverecordnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveRecordNotifyConfigWithCallback(request *AddLiveRecordNotifyConfigRequest, callback func(response *AddLiveRecordNotifyConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddLiveRecordNotifyConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.AddLiveRecordNotifyConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddLiveRecordNotifyConfigRequest is the request struct for api AddLiveRecordNotifyConfig
+type AddLiveRecordNotifyConfigRequest struct {
+	*requests.RpcRequest
+	OnDemandUrl      string           `position:"Query" name:"OnDemandUrl"`
+	SecurityToken    string           `position:"Query" name:"SecurityToken"`
+	DomainName       string           `position:"Query" name:"DomainName"`
+	NotifyUrl        string           `position:"Query" name:"NotifyUrl"`
+	OwnerId          requests.Integer `position:"Query" name:"OwnerId"`
+	NeedStatusNotify requests.Boolean `position:"Query" name:"NeedStatusNotify"`
+}
+
+// AddLiveRecordNotifyConfigResponse is the response struct for api AddLiveRecordNotifyConfig
+type AddLiveRecordNotifyConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddLiveRecordNotifyConfigRequest creates a request to invoke AddLiveRecordNotifyConfig API
+func CreateAddLiveRecordNotifyConfigRequest() (request *AddLiveRecordNotifyConfigRequest) {
+	request = &AddLiveRecordNotifyConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddLiveRecordNotifyConfig", "live", "openAPI")
+	return
+}
+
+// CreateAddLiveRecordNotifyConfigResponse creates a response to parse from AddLiveRecordNotifyConfig response
+func CreateAddLiveRecordNotifyConfigResponse() (response *AddLiveRecordNotifyConfigResponse) {
+	response = &AddLiveRecordNotifyConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/live/add_live_record_vod_config.go

@@ -0,0 +1,110 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddLiveRecordVodConfig invokes the live.AddLiveRecordVodConfig API synchronously
+// api document: https://help.aliyun.com/api/live/addliverecordvodconfig.html
+func (client *Client) AddLiveRecordVodConfig(request *AddLiveRecordVodConfigRequest) (response *AddLiveRecordVodConfigResponse, err error) {
+	response = CreateAddLiveRecordVodConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddLiveRecordVodConfigWithChan invokes the live.AddLiveRecordVodConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addliverecordvodconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveRecordVodConfigWithChan(request *AddLiveRecordVodConfigRequest) (<-chan *AddLiveRecordVodConfigResponse, <-chan error) {
+	responseChan := make(chan *AddLiveRecordVodConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddLiveRecordVodConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddLiveRecordVodConfigWithCallback invokes the live.AddLiveRecordVodConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addliverecordvodconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveRecordVodConfigWithCallback(request *AddLiveRecordVodConfigRequest, callback func(response *AddLiveRecordVodConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddLiveRecordVodConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.AddLiveRecordVodConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddLiveRecordVodConfigRequest is the request struct for api AddLiveRecordVodConfig
+type AddLiveRecordVodConfigRequest struct {
+	*requests.RpcRequest
+	AppName                    string           `position:"Query" name:"AppName"`
+	AutoCompose                string           `position:"Query" name:"AutoCompose"`
+	DomainName                 string           `position:"Query" name:"DomainName"`
+	CycleDuration              requests.Integer `position:"Query" name:"CycleDuration"`
+	OwnerId                    requests.Integer `position:"Query" name:"OwnerId"`
+	ComposeVodTranscodeGroupId string           `position:"Query" name:"ComposeVodTranscodeGroupId"`
+	StreamName                 string           `position:"Query" name:"StreamName"`
+	VodTranscodeGroupId        string           `position:"Query" name:"VodTranscodeGroupId"`
+}
+
+// AddLiveRecordVodConfigResponse is the response struct for api AddLiveRecordVodConfig
+type AddLiveRecordVodConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddLiveRecordVodConfigRequest creates a request to invoke AddLiveRecordVodConfig API
+func CreateAddLiveRecordVodConfigRequest() (request *AddLiveRecordVodConfigRequest) {
+	request = &AddLiveRecordVodConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddLiveRecordVodConfig", "live", "openAPI")
+	return
+}
+
+// CreateAddLiveRecordVodConfigResponse creates a response to parse from AddLiveRecordVodConfig response
+func CreateAddLiveRecordVodConfigResponse() (response *AddLiveRecordVodConfigResponse) {
+	response = &AddLiveRecordVodConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/live/add_live_snapshot_detect_porn_config.go

@@ -0,0 +1,111 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddLiveSnapshotDetectPornConfig invokes the live.AddLiveSnapshotDetectPornConfig API synchronously
+// api document: https://help.aliyun.com/api/live/addlivesnapshotdetectpornconfig.html
+func (client *Client) AddLiveSnapshotDetectPornConfig(request *AddLiveSnapshotDetectPornConfigRequest) (response *AddLiveSnapshotDetectPornConfigResponse, err error) {
+	response = CreateAddLiveSnapshotDetectPornConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddLiveSnapshotDetectPornConfigWithChan invokes the live.AddLiveSnapshotDetectPornConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivesnapshotdetectpornconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveSnapshotDetectPornConfigWithChan(request *AddLiveSnapshotDetectPornConfigRequest) (<-chan *AddLiveSnapshotDetectPornConfigResponse, <-chan error) {
+	responseChan := make(chan *AddLiveSnapshotDetectPornConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddLiveSnapshotDetectPornConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddLiveSnapshotDetectPornConfigWithCallback invokes the live.AddLiveSnapshotDetectPornConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivesnapshotdetectpornconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveSnapshotDetectPornConfigWithCallback(request *AddLiveSnapshotDetectPornConfigRequest, callback func(response *AddLiveSnapshotDetectPornConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddLiveSnapshotDetectPornConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.AddLiveSnapshotDetectPornConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddLiveSnapshotDetectPornConfigRequest is the request struct for api AddLiveSnapshotDetectPornConfig
+type AddLiveSnapshotDetectPornConfigRequest struct {
+	*requests.RpcRequest
+	OssBucket     string           `position:"Query" name:"OssBucket"`
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OssEndpoint   string           `position:"Query" name:"OssEndpoint"`
+	Interval      requests.Integer `position:"Query" name:"Interval"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	OssObject     string           `position:"Query" name:"OssObject"`
+	Scene         *[]string        `position:"Query" name:"Scene"  type:"Repeated"`
+}
+
+// AddLiveSnapshotDetectPornConfigResponse is the response struct for api AddLiveSnapshotDetectPornConfig
+type AddLiveSnapshotDetectPornConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddLiveSnapshotDetectPornConfigRequest creates a request to invoke AddLiveSnapshotDetectPornConfig API
+func CreateAddLiveSnapshotDetectPornConfigRequest() (request *AddLiveSnapshotDetectPornConfigRequest) {
+	request = &AddLiveSnapshotDetectPornConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddLiveSnapshotDetectPornConfig", "live", "openAPI")
+	return
+}
+
+// CreateAddLiveSnapshotDetectPornConfigResponse creates a response to parse from AddLiveSnapshotDetectPornConfig response
+func CreateAddLiveSnapshotDetectPornConfigResponse() (response *AddLiveSnapshotDetectPornConfigResponse) {
+	response = &AddLiveSnapshotDetectPornConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/add_live_stream_transcode.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddLiveStreamTranscode invokes the live.AddLiveStreamTranscode API synchronously
+// api document: https://help.aliyun.com/api/live/addlivestreamtranscode.html
+func (client *Client) AddLiveStreamTranscode(request *AddLiveStreamTranscodeRequest) (response *AddLiveStreamTranscodeResponse, err error) {
+	response = CreateAddLiveStreamTranscodeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddLiveStreamTranscodeWithChan invokes the live.AddLiveStreamTranscode API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivestreamtranscode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveStreamTranscodeWithChan(request *AddLiveStreamTranscodeRequest) (<-chan *AddLiveStreamTranscodeResponse, <-chan error) {
+	responseChan := make(chan *AddLiveStreamTranscodeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddLiveStreamTranscode(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddLiveStreamTranscodeWithCallback invokes the live.AddLiveStreamTranscode API asynchronously
+// api document: https://help.aliyun.com/api/live/addlivestreamtranscode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddLiveStreamTranscodeWithCallback(request *AddLiveStreamTranscodeRequest, callback func(response *AddLiveStreamTranscodeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddLiveStreamTranscodeResponse
+		var err error
+		defer close(result)
+		response, err = client.AddLiveStreamTranscode(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddLiveStreamTranscodeRequest is the request struct for api AddLiveStreamTranscode
+type AddLiveStreamTranscodeRequest struct {
+	*requests.RpcRequest
+	App           string           `position:"Query" name:"App"`
+	Template      string           `position:"Query" name:"Template"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	Domain        string           `position:"Query" name:"Domain"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// AddLiveStreamTranscodeResponse is the response struct for api AddLiveStreamTranscode
+type AddLiveStreamTranscodeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddLiveStreamTranscodeRequest creates a request to invoke AddLiveStreamTranscode API
+func CreateAddLiveStreamTranscodeRequest() (request *AddLiveStreamTranscodeRequest) {
+	request = &AddLiveStreamTranscodeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddLiveStreamTranscode", "live", "openAPI")
+	return
+}
+
+// CreateAddLiveStreamTranscodeResponse creates a response to parse from AddLiveStreamTranscode response
+func CreateAddLiveStreamTranscodeResponse() (response *AddLiveStreamTranscodeResponse) {
+	response = &AddLiveStreamTranscodeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/live/add_multiple_stream_mix_service.go

@@ -0,0 +1,110 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddMultipleStreamMixService invokes the live.AddMultipleStreamMixService API synchronously
+// api document: https://help.aliyun.com/api/live/addmultiplestreammixservice.html
+func (client *Client) AddMultipleStreamMixService(request *AddMultipleStreamMixServiceRequest) (response *AddMultipleStreamMixServiceResponse, err error) {
+	response = CreateAddMultipleStreamMixServiceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddMultipleStreamMixServiceWithChan invokes the live.AddMultipleStreamMixService API asynchronously
+// api document: https://help.aliyun.com/api/live/addmultiplestreammixservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddMultipleStreamMixServiceWithChan(request *AddMultipleStreamMixServiceRequest) (<-chan *AddMultipleStreamMixServiceResponse, <-chan error) {
+	responseChan := make(chan *AddMultipleStreamMixServiceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddMultipleStreamMixService(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddMultipleStreamMixServiceWithCallback invokes the live.AddMultipleStreamMixService API asynchronously
+// api document: https://help.aliyun.com/api/live/addmultiplestreammixservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddMultipleStreamMixServiceWithCallback(request *AddMultipleStreamMixServiceRequest, callback func(response *AddMultipleStreamMixServiceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddMultipleStreamMixServiceResponse
+		var err error
+		defer close(result)
+		response, err = client.AddMultipleStreamMixService(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddMultipleStreamMixServiceRequest is the request struct for api AddMultipleStreamMixService
+type AddMultipleStreamMixServiceRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	MixStreamName string           `position:"Query" name:"MixStreamName"`
+	MixDomainName string           `position:"Query" name:"MixDomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	MixAppName    string           `position:"Query" name:"MixAppName"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// AddMultipleStreamMixServiceResponse is the response struct for api AddMultipleStreamMixService
+type AddMultipleStreamMixServiceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddMultipleStreamMixServiceRequest creates a request to invoke AddMultipleStreamMixService API
+func CreateAddMultipleStreamMixServiceRequest() (request *AddMultipleStreamMixServiceRequest) {
+	request = &AddMultipleStreamMixServiceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddMultipleStreamMixService", "live", "openAPI")
+	return
+}
+
+// CreateAddMultipleStreamMixServiceResponse creates a response to parse from AddMultipleStreamMixService response
+func CreateAddMultipleStreamMixServiceResponse() (response *AddMultipleStreamMixServiceResponse) {
+	response = &AddMultipleStreamMixServiceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/live/add_trancode_sei.go

@@ -0,0 +1,110 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// AddTrancodeSEI invokes the live.AddTrancodeSEI API synchronously
+// api document: https://help.aliyun.com/api/live/addtrancodesei.html
+func (client *Client) AddTrancodeSEI(request *AddTrancodeSEIRequest) (response *AddTrancodeSEIResponse, err error) {
+	response = CreateAddTrancodeSEIResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddTrancodeSEIWithChan invokes the live.AddTrancodeSEI API asynchronously
+// api document: https://help.aliyun.com/api/live/addtrancodesei.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddTrancodeSEIWithChan(request *AddTrancodeSEIRequest) (<-chan *AddTrancodeSEIResponse, <-chan error) {
+	responseChan := make(chan *AddTrancodeSEIResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddTrancodeSEI(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddTrancodeSEIWithCallback invokes the live.AddTrancodeSEI API asynchronously
+// api document: https://help.aliyun.com/api/live/addtrancodesei.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddTrancodeSEIWithCallback(request *AddTrancodeSEIRequest, callback func(response *AddTrancodeSEIResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddTrancodeSEIResponse
+		var err error
+		defer close(result)
+		response, err = client.AddTrancodeSEI(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddTrancodeSEIRequest is the request struct for api AddTrancodeSEI
+type AddTrancodeSEIRequest struct {
+	*requests.RpcRequest
+	Delay      requests.Integer `position:"Query" name:"Delay"`
+	AppName    string           `position:"Query" name:"AppName"`
+	Repeat     requests.Integer `position:"Query" name:"Repeat"`
+	DomainName string           `position:"Query" name:"DomainName"`
+	Pattern    string           `position:"Query" name:"Pattern"`
+	Text       string           `position:"Query" name:"Text"`
+	OwnerId    requests.Integer `position:"Query" name:"OwnerId"`
+	StreamName string           `position:"Query" name:"StreamName"`
+}
+
+// AddTrancodeSEIResponse is the response struct for api AddTrancodeSEI
+type AddTrancodeSEIResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddTrancodeSEIRequest creates a request to invoke AddTrancodeSEI API
+func CreateAddTrancodeSEIRequest() (request *AddTrancodeSEIRequest) {
+	request = &AddTrancodeSEIRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "AddTrancodeSEI", "live", "openAPI")
+	return
+}
+
+// CreateAddTrancodeSEIResponse creates a response to parse from AddTrancodeSEI response
+func CreateAddTrancodeSEIResponse() (response *AddTrancodeSEIResponse) {
+	response = &AddTrancodeSEIResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 81 - 0
services/live/client.go

@@ -0,0 +1,81 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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
+}

+ 107 - 0
services/live/copy_caster.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// CopyCaster invokes the live.CopyCaster API synchronously
+// api document: https://help.aliyun.com/api/live/copycaster.html
+func (client *Client) CopyCaster(request *CopyCasterRequest) (response *CopyCasterResponse, err error) {
+	response = CreateCopyCasterResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CopyCasterWithChan invokes the live.CopyCaster API asynchronously
+// api document: https://help.aliyun.com/api/live/copycaster.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CopyCasterWithChan(request *CopyCasterRequest) (<-chan *CopyCasterResponse, <-chan error) {
+	responseChan := make(chan *CopyCasterResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CopyCaster(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CopyCasterWithCallback invokes the live.CopyCaster API asynchronously
+// api document: https://help.aliyun.com/api/live/copycaster.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CopyCasterWithCallback(request *CopyCasterRequest, callback func(response *CopyCasterResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CopyCasterResponse
+		var err error
+		defer close(result)
+		response, err = client.CopyCaster(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CopyCasterRequest is the request struct for api CopyCaster
+type CopyCasterRequest struct {
+	*requests.RpcRequest
+	SrcCasterId string           `position:"Query" name:"SrcCasterId"`
+	CasterName  string           `position:"Query" name:"CasterName"`
+	ClientToken string           `position:"Query" name:"ClientToken"`
+	OwnerId     requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// CopyCasterResponse is the response struct for api CopyCaster
+type CopyCasterResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CasterId  string `json:"CasterId" xml:"CasterId"`
+}
+
+// CreateCopyCasterRequest creates a request to invoke CopyCaster API
+func CreateCopyCasterRequest() (request *CopyCasterRequest) {
+	request = &CopyCasterRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "CopyCaster", "live", "openAPI")
+	return
+}
+
+// CreateCopyCasterResponse creates a response to parse from CopyCaster response
+func CreateCopyCasterResponse() (response *CopyCasterResponse) {
+	response = &CopyCasterResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/copy_caster_scene_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// CopyCasterSceneConfig invokes the live.CopyCasterSceneConfig API synchronously
+// api document: https://help.aliyun.com/api/live/copycastersceneconfig.html
+func (client *Client) CopyCasterSceneConfig(request *CopyCasterSceneConfigRequest) (response *CopyCasterSceneConfigResponse, err error) {
+	response = CreateCopyCasterSceneConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CopyCasterSceneConfigWithChan invokes the live.CopyCasterSceneConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/copycastersceneconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CopyCasterSceneConfigWithChan(request *CopyCasterSceneConfigRequest) (<-chan *CopyCasterSceneConfigResponse, <-chan error) {
+	responseChan := make(chan *CopyCasterSceneConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CopyCasterSceneConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CopyCasterSceneConfigWithCallback invokes the live.CopyCasterSceneConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/copycastersceneconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CopyCasterSceneConfigWithCallback(request *CopyCasterSceneConfigRequest, callback func(response *CopyCasterSceneConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CopyCasterSceneConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.CopyCasterSceneConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CopyCasterSceneConfigRequest is the request struct for api CopyCasterSceneConfig
+type CopyCasterSceneConfigRequest struct {
+	*requests.RpcRequest
+	FromSceneId string           `position:"Query" name:"FromSceneId"`
+	CasterId    string           `position:"Query" name:"CasterId"`
+	OwnerId     requests.Integer `position:"Query" name:"OwnerId"`
+	ToSceneId   string           `position:"Query" name:"ToSceneId"`
+}
+
+// CopyCasterSceneConfigResponse is the response struct for api CopyCasterSceneConfig
+type CopyCasterSceneConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCopyCasterSceneConfigRequest creates a request to invoke CopyCasterSceneConfig API
+func CreateCopyCasterSceneConfigRequest() (request *CopyCasterSceneConfigRequest) {
+	request = &CopyCasterSceneConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "CopyCasterSceneConfig", "live", "openAPI")
+	return
+}
+
+// CreateCopyCasterSceneConfigResponse creates a response to parse from CopyCasterSceneConfig response
+func CreateCopyCasterSceneConfigResponse() (response *CopyCasterSceneConfigResponse) {
+	response = &CopyCasterSceneConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/live/create_caster.go

@@ -0,0 +1,111 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// CreateCaster invokes the live.CreateCaster API synchronously
+// api document: https://help.aliyun.com/api/live/createcaster.html
+func (client *Client) CreateCaster(request *CreateCasterRequest) (response *CreateCasterResponse, err error) {
+	response = CreateCreateCasterResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateCasterWithChan invokes the live.CreateCaster API asynchronously
+// api document: https://help.aliyun.com/api/live/createcaster.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateCasterWithChan(request *CreateCasterRequest) (<-chan *CreateCasterResponse, <-chan error) {
+	responseChan := make(chan *CreateCasterResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateCaster(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateCasterWithCallback invokes the live.CreateCaster API asynchronously
+// api document: https://help.aliyun.com/api/live/createcaster.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateCasterWithCallback(request *CreateCasterRequest, callback func(response *CreateCasterResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateCasterResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateCaster(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateCasterRequest is the request struct for api CreateCaster
+type CreateCasterRequest struct {
+	*requests.RpcRequest
+	CasterTemplate string           `position:"Query" name:"CasterTemplate"`
+	ExpireTime     string           `position:"Query" name:"ExpireTime"`
+	NormType       requests.Integer `position:"Query" name:"NormType"`
+	CasterName     string           `position:"Query" name:"CasterName"`
+	ClientToken    string           `position:"Query" name:"ClientToken"`
+	ChargeType     string           `position:"Query" name:"ChargeType"`
+	OwnerId        requests.Integer `position:"Query" name:"OwnerId"`
+	PurchaseTime   string           `position:"Query" name:"PurchaseTime"`
+}
+
+// CreateCasterResponse is the response struct for api CreateCaster
+type CreateCasterResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CasterId  string `json:"CasterId" xml:"CasterId"`
+}
+
+// CreateCreateCasterRequest creates a request to invoke CreateCaster API
+func CreateCreateCasterRequest() (request *CreateCasterRequest) {
+	request = &CreateCasterRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "CreateCaster", "live", "openAPI")
+	return
+}
+
+// CreateCreateCasterResponse creates a response to parse from CreateCaster response
+func CreateCreateCasterResponse() (response *CreateCasterResponse) {
+	response = &CreateCasterResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/live/create_live_stream_record_index_files.go

@@ -0,0 +1,113 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// CreateLiveStreamRecordIndexFiles invokes the live.CreateLiveStreamRecordIndexFiles API synchronously
+// api document: https://help.aliyun.com/api/live/createlivestreamrecordindexfiles.html
+func (client *Client) CreateLiveStreamRecordIndexFiles(request *CreateLiveStreamRecordIndexFilesRequest) (response *CreateLiveStreamRecordIndexFilesResponse, err error) {
+	response = CreateCreateLiveStreamRecordIndexFilesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateLiveStreamRecordIndexFilesWithChan invokes the live.CreateLiveStreamRecordIndexFiles API asynchronously
+// api document: https://help.aliyun.com/api/live/createlivestreamrecordindexfiles.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateLiveStreamRecordIndexFilesWithChan(request *CreateLiveStreamRecordIndexFilesRequest) (<-chan *CreateLiveStreamRecordIndexFilesResponse, <-chan error) {
+	responseChan := make(chan *CreateLiveStreamRecordIndexFilesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateLiveStreamRecordIndexFiles(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateLiveStreamRecordIndexFilesWithCallback invokes the live.CreateLiveStreamRecordIndexFiles API asynchronously
+// api document: https://help.aliyun.com/api/live/createlivestreamrecordindexfiles.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateLiveStreamRecordIndexFilesWithCallback(request *CreateLiveStreamRecordIndexFilesRequest, callback func(response *CreateLiveStreamRecordIndexFilesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateLiveStreamRecordIndexFilesResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateLiveStreamRecordIndexFiles(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateLiveStreamRecordIndexFilesRequest is the request struct for api CreateLiveStreamRecordIndexFiles
+type CreateLiveStreamRecordIndexFilesRequest struct {
+	*requests.RpcRequest
+	OssBucket     string           `position:"Query" name:"OssBucket"`
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OssEndpoint   string           `position:"Query" name:"OssEndpoint"`
+	EndTime       string           `position:"Query" name:"EndTime"`
+	StartTime     string           `position:"Query" name:"StartTime"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+	OssObject     string           `position:"Query" name:"OssObject"`
+}
+
+// CreateLiveStreamRecordIndexFilesResponse is the response struct for api CreateLiveStreamRecordIndexFiles
+type CreateLiveStreamRecordIndexFilesResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	RecordInfo RecordInfo `json:"RecordInfo" xml:"RecordInfo"`
+}
+
+// CreateCreateLiveStreamRecordIndexFilesRequest creates a request to invoke CreateLiveStreamRecordIndexFiles API
+func CreateCreateLiveStreamRecordIndexFilesRequest() (request *CreateLiveStreamRecordIndexFilesRequest) {
+	request = &CreateLiveStreamRecordIndexFilesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "CreateLiveStreamRecordIndexFiles", "live", "openAPI")
+	return
+}
+
+// CreateCreateLiveStreamRecordIndexFilesResponse creates a response to parse from CreateLiveStreamRecordIndexFiles response
+func CreateCreateLiveStreamRecordIndexFilesResponse() (response *CreateLiveStreamRecordIndexFilesResponse) {
+	response = &CreateLiveStreamRecordIndexFilesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/live/delete_caster.go

@@ -0,0 +1,105 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteCaster invokes the live.DeleteCaster API synchronously
+// api document: https://help.aliyun.com/api/live/deletecaster.html
+func (client *Client) DeleteCaster(request *DeleteCasterRequest) (response *DeleteCasterResponse, err error) {
+	response = CreateDeleteCasterResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteCasterWithChan invokes the live.DeleteCaster API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecaster.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterWithChan(request *DeleteCasterRequest) (<-chan *DeleteCasterResponse, <-chan error) {
+	responseChan := make(chan *DeleteCasterResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteCaster(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteCasterWithCallback invokes the live.DeleteCaster API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecaster.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterWithCallback(request *DeleteCasterRequest, callback func(response *DeleteCasterResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteCasterResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteCaster(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteCasterRequest is the request struct for api DeleteCaster
+type DeleteCasterRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteCasterResponse is the response struct for api DeleteCaster
+type DeleteCasterResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CasterId  string `json:"CasterId" xml:"CasterId"`
+}
+
+// CreateDeleteCasterRequest creates a request to invoke DeleteCaster API
+func CreateDeleteCasterRequest() (request *DeleteCasterRequest) {
+	request = &DeleteCasterRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteCaster", "live", "openAPI")
+	return
+}
+
+// CreateDeleteCasterResponse creates a response to parse from DeleteCaster response
+func CreateDeleteCasterResponse() (response *DeleteCasterResponse) {
+	response = &DeleteCasterResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/delete_caster_component.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteCasterComponent invokes the live.DeleteCasterComponent API synchronously
+// api document: https://help.aliyun.com/api/live/deletecastercomponent.html
+func (client *Client) DeleteCasterComponent(request *DeleteCasterComponentRequest) (response *DeleteCasterComponentResponse, err error) {
+	response = CreateDeleteCasterComponentResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteCasterComponentWithChan invokes the live.DeleteCasterComponent API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecastercomponent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterComponentWithChan(request *DeleteCasterComponentRequest) (<-chan *DeleteCasterComponentResponse, <-chan error) {
+	responseChan := make(chan *DeleteCasterComponentResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteCasterComponent(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteCasterComponentWithCallback invokes the live.DeleteCasterComponent API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecastercomponent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterComponentWithCallback(request *DeleteCasterComponentRequest, callback func(response *DeleteCasterComponentResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteCasterComponentResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteCasterComponent(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteCasterComponentRequest is the request struct for api DeleteCasterComponent
+type DeleteCasterComponentRequest struct {
+	*requests.RpcRequest
+	ComponentId string           `position:"Query" name:"ComponentId"`
+	CasterId    string           `position:"Query" name:"CasterId"`
+	OwnerId     requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteCasterComponentResponse is the response struct for api DeleteCasterComponent
+type DeleteCasterComponentResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	CasterId    string `json:"CasterId" xml:"CasterId"`
+	ComponentId string `json:"ComponentId" xml:"ComponentId"`
+}
+
+// CreateDeleteCasterComponentRequest creates a request to invoke DeleteCasterComponent API
+func CreateDeleteCasterComponentRequest() (request *DeleteCasterComponentRequest) {
+	request = &DeleteCasterComponentRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteCasterComponent", "live", "openAPI")
+	return
+}
+
+// CreateDeleteCasterComponentResponse creates a response to parse from DeleteCasterComponent response
+func CreateDeleteCasterComponentResponse() (response *DeleteCasterComponentResponse) {
+	response = &DeleteCasterComponentResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/delete_caster_episode.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteCasterEpisode invokes the live.DeleteCasterEpisode API synchronously
+// api document: https://help.aliyun.com/api/live/deletecasterepisode.html
+func (client *Client) DeleteCasterEpisode(request *DeleteCasterEpisodeRequest) (response *DeleteCasterEpisodeResponse, err error) {
+	response = CreateDeleteCasterEpisodeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteCasterEpisodeWithChan invokes the live.DeleteCasterEpisode API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecasterepisode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterEpisodeWithChan(request *DeleteCasterEpisodeRequest) (<-chan *DeleteCasterEpisodeResponse, <-chan error) {
+	responseChan := make(chan *DeleteCasterEpisodeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteCasterEpisode(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteCasterEpisodeWithCallback invokes the live.DeleteCasterEpisode API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecasterepisode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterEpisodeWithCallback(request *DeleteCasterEpisodeRequest, callback func(response *DeleteCasterEpisodeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteCasterEpisodeResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteCasterEpisode(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteCasterEpisodeRequest is the request struct for api DeleteCasterEpisode
+type DeleteCasterEpisodeRequest struct {
+	*requests.RpcRequest
+	CasterId  string           `position:"Query" name:"CasterId"`
+	OwnerId   requests.Integer `position:"Query" name:"OwnerId"`
+	EpisodeId string           `position:"Query" name:"EpisodeId"`
+}
+
+// DeleteCasterEpisodeResponse is the response struct for api DeleteCasterEpisode
+type DeleteCasterEpisodeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CasterId  string `json:"CasterId" xml:"CasterId"`
+	EpisodeId string `json:"EpisodeId" xml:"EpisodeId"`
+}
+
+// CreateDeleteCasterEpisodeRequest creates a request to invoke DeleteCasterEpisode API
+func CreateDeleteCasterEpisodeRequest() (request *DeleteCasterEpisodeRequest) {
+	request = &DeleteCasterEpisodeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteCasterEpisode", "live", "openAPI")
+	return
+}
+
+// CreateDeleteCasterEpisodeResponse creates a response to parse from DeleteCasterEpisode response
+func CreateDeleteCasterEpisodeResponse() (response *DeleteCasterEpisodeResponse) {
+	response = &DeleteCasterEpisodeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/live/delete_caster_episode_group.go

@@ -0,0 +1,104 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteCasterEpisodeGroup invokes the live.DeleteCasterEpisodeGroup API synchronously
+// api document: https://help.aliyun.com/api/live/deletecasterepisodegroup.html
+func (client *Client) DeleteCasterEpisodeGroup(request *DeleteCasterEpisodeGroupRequest) (response *DeleteCasterEpisodeGroupResponse, err error) {
+	response = CreateDeleteCasterEpisodeGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteCasterEpisodeGroupWithChan invokes the live.DeleteCasterEpisodeGroup API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecasterepisodegroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterEpisodeGroupWithChan(request *DeleteCasterEpisodeGroupRequest) (<-chan *DeleteCasterEpisodeGroupResponse, <-chan error) {
+	responseChan := make(chan *DeleteCasterEpisodeGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteCasterEpisodeGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteCasterEpisodeGroupWithCallback invokes the live.DeleteCasterEpisodeGroup API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecasterepisodegroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterEpisodeGroupWithCallback(request *DeleteCasterEpisodeGroupRequest, callback func(response *DeleteCasterEpisodeGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteCasterEpisodeGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteCasterEpisodeGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteCasterEpisodeGroupRequest is the request struct for api DeleteCasterEpisodeGroup
+type DeleteCasterEpisodeGroupRequest struct {
+	*requests.RpcRequest
+	OwnerId   requests.Integer `position:"Query" name:"OwnerId"`
+	ProgramId string           `position:"Query" name:"ProgramId"`
+}
+
+// DeleteCasterEpisodeGroupResponse is the response struct for api DeleteCasterEpisodeGroup
+type DeleteCasterEpisodeGroupResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteCasterEpisodeGroupRequest creates a request to invoke DeleteCasterEpisodeGroup API
+func CreateDeleteCasterEpisodeGroupRequest() (request *DeleteCasterEpisodeGroupRequest) {
+	request = &DeleteCasterEpisodeGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteCasterEpisodeGroup", "live", "openAPI")
+	return
+}
+
+// CreateDeleteCasterEpisodeGroupResponse creates a response to parse from DeleteCasterEpisodeGroup response
+func CreateDeleteCasterEpisodeGroupResponse() (response *DeleteCasterEpisodeGroupResponse) {
+	response = &DeleteCasterEpisodeGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/delete_caster_layout.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteCasterLayout invokes the live.DeleteCasterLayout API synchronously
+// api document: https://help.aliyun.com/api/live/deletecasterlayout.html
+func (client *Client) DeleteCasterLayout(request *DeleteCasterLayoutRequest) (response *DeleteCasterLayoutResponse, err error) {
+	response = CreateDeleteCasterLayoutResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteCasterLayoutWithChan invokes the live.DeleteCasterLayout API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecasterlayout.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterLayoutWithChan(request *DeleteCasterLayoutRequest) (<-chan *DeleteCasterLayoutResponse, <-chan error) {
+	responseChan := make(chan *DeleteCasterLayoutResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteCasterLayout(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteCasterLayoutWithCallback invokes the live.DeleteCasterLayout API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecasterlayout.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterLayoutWithCallback(request *DeleteCasterLayoutRequest, callback func(response *DeleteCasterLayoutResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteCasterLayoutResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteCasterLayout(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteCasterLayoutRequest is the request struct for api DeleteCasterLayout
+type DeleteCasterLayoutRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+	LayoutId string           `position:"Query" name:"LayoutId"`
+}
+
+// DeleteCasterLayoutResponse is the response struct for api DeleteCasterLayout
+type DeleteCasterLayoutResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CasterId  string `json:"CasterId" xml:"CasterId"`
+	LayoutId  string `json:"LayoutId" xml:"LayoutId"`
+}
+
+// CreateDeleteCasterLayoutRequest creates a request to invoke DeleteCasterLayout API
+func CreateDeleteCasterLayoutRequest() (request *DeleteCasterLayoutRequest) {
+	request = &DeleteCasterLayoutRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteCasterLayout", "live", "openAPI")
+	return
+}
+
+// CreateDeleteCasterLayoutResponse creates a response to parse from DeleteCasterLayout response
+func CreateDeleteCasterLayoutResponse() (response *DeleteCasterLayoutResponse) {
+	response = &DeleteCasterLayoutResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/live/delete_caster_program.go

@@ -0,0 +1,105 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteCasterProgram invokes the live.DeleteCasterProgram API synchronously
+// api document: https://help.aliyun.com/api/live/deletecasterprogram.html
+func (client *Client) DeleteCasterProgram(request *DeleteCasterProgramRequest) (response *DeleteCasterProgramResponse, err error) {
+	response = CreateDeleteCasterProgramResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteCasterProgramWithChan invokes the live.DeleteCasterProgram API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecasterprogram.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterProgramWithChan(request *DeleteCasterProgramRequest) (<-chan *DeleteCasterProgramResponse, <-chan error) {
+	responseChan := make(chan *DeleteCasterProgramResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteCasterProgram(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteCasterProgramWithCallback invokes the live.DeleteCasterProgram API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecasterprogram.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterProgramWithCallback(request *DeleteCasterProgramRequest, callback func(response *DeleteCasterProgramResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteCasterProgramResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteCasterProgram(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteCasterProgramRequest is the request struct for api DeleteCasterProgram
+type DeleteCasterProgramRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteCasterProgramResponse is the response struct for api DeleteCasterProgram
+type DeleteCasterProgramResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CasterId  string `json:"CasterId" xml:"CasterId"`
+}
+
+// CreateDeleteCasterProgramRequest creates a request to invoke DeleteCasterProgram API
+func CreateDeleteCasterProgramRequest() (request *DeleteCasterProgramRequest) {
+	request = &DeleteCasterProgramRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteCasterProgram", "live", "openAPI")
+	return
+}
+
+// CreateDeleteCasterProgramResponse creates a response to parse from DeleteCasterProgram response
+func CreateDeleteCasterProgramResponse() (response *DeleteCasterProgramResponse) {
+	response = &DeleteCasterProgramResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/delete_caster_scene_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteCasterSceneConfig invokes the live.DeleteCasterSceneConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deletecastersceneconfig.html
+func (client *Client) DeleteCasterSceneConfig(request *DeleteCasterSceneConfigRequest) (response *DeleteCasterSceneConfigResponse, err error) {
+	response = CreateDeleteCasterSceneConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteCasterSceneConfigWithChan invokes the live.DeleteCasterSceneConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecastersceneconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterSceneConfigWithChan(request *DeleteCasterSceneConfigRequest) (<-chan *DeleteCasterSceneConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteCasterSceneConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteCasterSceneConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteCasterSceneConfigWithCallback invokes the live.DeleteCasterSceneConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecastersceneconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterSceneConfigWithCallback(request *DeleteCasterSceneConfigRequest, callback func(response *DeleteCasterSceneConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteCasterSceneConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteCasterSceneConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteCasterSceneConfigRequest is the request struct for api DeleteCasterSceneConfig
+type DeleteCasterSceneConfigRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	SceneId  string           `position:"Query" name:"SceneId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+	Type     string           `position:"Query" name:"Type"`
+}
+
+// DeleteCasterSceneConfigResponse is the response struct for api DeleteCasterSceneConfig
+type DeleteCasterSceneConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteCasterSceneConfigRequest creates a request to invoke DeleteCasterSceneConfig API
+func CreateDeleteCasterSceneConfigRequest() (request *DeleteCasterSceneConfigRequest) {
+	request = &DeleteCasterSceneConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteCasterSceneConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteCasterSceneConfigResponse creates a response to parse from DeleteCasterSceneConfig response
+func CreateDeleteCasterSceneConfigResponse() (response *DeleteCasterSceneConfigResponse) {
+	response = &DeleteCasterSceneConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/live/delete_caster_video_resource.go

@@ -0,0 +1,105 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteCasterVideoResource invokes the live.DeleteCasterVideoResource API synchronously
+// api document: https://help.aliyun.com/api/live/deletecastervideoresource.html
+func (client *Client) DeleteCasterVideoResource(request *DeleteCasterVideoResourceRequest) (response *DeleteCasterVideoResourceResponse, err error) {
+	response = CreateDeleteCasterVideoResourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteCasterVideoResourceWithChan invokes the live.DeleteCasterVideoResource API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecastervideoresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterVideoResourceWithChan(request *DeleteCasterVideoResourceRequest) (<-chan *DeleteCasterVideoResourceResponse, <-chan error) {
+	responseChan := make(chan *DeleteCasterVideoResourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteCasterVideoResource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteCasterVideoResourceWithCallback invokes the live.DeleteCasterVideoResource API asynchronously
+// api document: https://help.aliyun.com/api/live/deletecastervideoresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteCasterVideoResourceWithCallback(request *DeleteCasterVideoResourceRequest, callback func(response *DeleteCasterVideoResourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteCasterVideoResourceResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteCasterVideoResource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteCasterVideoResourceRequest is the request struct for api DeleteCasterVideoResource
+type DeleteCasterVideoResourceRequest struct {
+	*requests.RpcRequest
+	ResourceId string           `position:"Query" name:"ResourceId"`
+	CasterId   string           `position:"Query" name:"CasterId"`
+	OwnerId    requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteCasterVideoResourceResponse is the response struct for api DeleteCasterVideoResource
+type DeleteCasterVideoResourceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteCasterVideoResourceRequest creates a request to invoke DeleteCasterVideoResource API
+func CreateDeleteCasterVideoResourceRequest() (request *DeleteCasterVideoResourceRequest) {
+	request = &DeleteCasterVideoResourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteCasterVideoResource", "live", "openAPI")
+	return
+}
+
+// CreateDeleteCasterVideoResourceResponse creates a response to parse from DeleteCasterVideoResource response
+func CreateDeleteCasterVideoResourceResponse() (response *DeleteCasterVideoResourceResponse) {
+	response = &DeleteCasterVideoResourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/delete_live_app_record_config.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLiveAppRecordConfig invokes the live.DeleteLiveAppRecordConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deleteliveapprecordconfig.html
+func (client *Client) DeleteLiveAppRecordConfig(request *DeleteLiveAppRecordConfigRequest) (response *DeleteLiveAppRecordConfigResponse, err error) {
+	response = CreateDeleteLiveAppRecordConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLiveAppRecordConfigWithChan invokes the live.DeleteLiveAppRecordConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deleteliveapprecordconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveAppRecordConfigWithChan(request *DeleteLiveAppRecordConfigRequest) (<-chan *DeleteLiveAppRecordConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteLiveAppRecordConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLiveAppRecordConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLiveAppRecordConfigWithCallback invokes the live.DeleteLiveAppRecordConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deleteliveapprecordconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveAppRecordConfigWithCallback(request *DeleteLiveAppRecordConfigRequest, callback func(response *DeleteLiveAppRecordConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLiveAppRecordConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLiveAppRecordConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLiveAppRecordConfigRequest is the request struct for api DeleteLiveAppRecordConfig
+type DeleteLiveAppRecordConfigRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// DeleteLiveAppRecordConfigResponse is the response struct for api DeleteLiveAppRecordConfig
+type DeleteLiveAppRecordConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLiveAppRecordConfigRequest creates a request to invoke DeleteLiveAppRecordConfig API
+func CreateDeleteLiveAppRecordConfigRequest() (request *DeleteLiveAppRecordConfigRequest) {
+	request = &DeleteLiveAppRecordConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLiveAppRecordConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLiveAppRecordConfigResponse creates a response to parse from DeleteLiveAppRecordConfig response
+func CreateDeleteLiveAppRecordConfigResponse() (response *DeleteLiveAppRecordConfigResponse) {
+	response = &DeleteLiveAppRecordConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/delete_live_app_snapshot_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLiveAppSnapshotConfig invokes the live.DeleteLiveAppSnapshotConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deleteliveappsnapshotconfig.html
+func (client *Client) DeleteLiveAppSnapshotConfig(request *DeleteLiveAppSnapshotConfigRequest) (response *DeleteLiveAppSnapshotConfigResponse, err error) {
+	response = CreateDeleteLiveAppSnapshotConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLiveAppSnapshotConfigWithChan invokes the live.DeleteLiveAppSnapshotConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deleteliveappsnapshotconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveAppSnapshotConfigWithChan(request *DeleteLiveAppSnapshotConfigRequest) (<-chan *DeleteLiveAppSnapshotConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteLiveAppSnapshotConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLiveAppSnapshotConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLiveAppSnapshotConfigWithCallback invokes the live.DeleteLiveAppSnapshotConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deleteliveappsnapshotconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveAppSnapshotConfigWithCallback(request *DeleteLiveAppSnapshotConfigRequest, callback func(response *DeleteLiveAppSnapshotConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLiveAppSnapshotConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLiveAppSnapshotConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLiveAppSnapshotConfigRequest is the request struct for api DeleteLiveAppSnapshotConfig
+type DeleteLiveAppSnapshotConfigRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteLiveAppSnapshotConfigResponse is the response struct for api DeleteLiveAppSnapshotConfig
+type DeleteLiveAppSnapshotConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLiveAppSnapshotConfigRequest creates a request to invoke DeleteLiveAppSnapshotConfig API
+func CreateDeleteLiveAppSnapshotConfigRequest() (request *DeleteLiveAppSnapshotConfigRequest) {
+	request = &DeleteLiveAppSnapshotConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLiveAppSnapshotConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLiveAppSnapshotConfigResponse creates a response to parse from DeleteLiveAppSnapshotConfig response
+func CreateDeleteLiveAppSnapshotConfigResponse() (response *DeleteLiveAppSnapshotConfigResponse) {
+	response = &DeleteLiveAppSnapshotConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/live/delete_live_detect_notify_config.go

@@ -0,0 +1,105 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLiveDetectNotifyConfig invokes the live.DeleteLiveDetectNotifyConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deletelivedetectnotifyconfig.html
+func (client *Client) DeleteLiveDetectNotifyConfig(request *DeleteLiveDetectNotifyConfigRequest) (response *DeleteLiveDetectNotifyConfigResponse, err error) {
+	response = CreateDeleteLiveDetectNotifyConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLiveDetectNotifyConfigWithChan invokes the live.DeleteLiveDetectNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivedetectnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveDetectNotifyConfigWithChan(request *DeleteLiveDetectNotifyConfigRequest) (<-chan *DeleteLiveDetectNotifyConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteLiveDetectNotifyConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLiveDetectNotifyConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLiveDetectNotifyConfigWithCallback invokes the live.DeleteLiveDetectNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivedetectnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveDetectNotifyConfigWithCallback(request *DeleteLiveDetectNotifyConfigRequest, callback func(response *DeleteLiveDetectNotifyConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLiveDetectNotifyConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLiveDetectNotifyConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLiveDetectNotifyConfigRequest is the request struct for api DeleteLiveDetectNotifyConfig
+type DeleteLiveDetectNotifyConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteLiveDetectNotifyConfigResponse is the response struct for api DeleteLiveDetectNotifyConfig
+type DeleteLiveDetectNotifyConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLiveDetectNotifyConfigRequest creates a request to invoke DeleteLiveDetectNotifyConfig API
+func CreateDeleteLiveDetectNotifyConfigRequest() (request *DeleteLiveDetectNotifyConfigRequest) {
+	request = &DeleteLiveDetectNotifyConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLiveDetectNotifyConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLiveDetectNotifyConfigResponse creates a response to parse from DeleteLiveDetectNotifyConfig response
+func CreateDeleteLiveDetectNotifyConfigResponse() (response *DeleteLiveDetectNotifyConfigResponse) {
+	response = &DeleteLiveDetectNotifyConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/delete_live_mix_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLiveMixConfig invokes the live.DeleteLiveMixConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deletelivemixconfig.html
+func (client *Client) DeleteLiveMixConfig(request *DeleteLiveMixConfigRequest) (response *DeleteLiveMixConfigResponse, err error) {
+	response = CreateDeleteLiveMixConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLiveMixConfigWithChan invokes the live.DeleteLiveMixConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivemixconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveMixConfigWithChan(request *DeleteLiveMixConfigRequest) (<-chan *DeleteLiveMixConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteLiveMixConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLiveMixConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLiveMixConfigWithCallback invokes the live.DeleteLiveMixConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivemixconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveMixConfigWithCallback(request *DeleteLiveMixConfigRequest, callback func(response *DeleteLiveMixConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLiveMixConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLiveMixConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLiveMixConfigRequest is the request struct for api DeleteLiveMixConfig
+type DeleteLiveMixConfigRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteLiveMixConfigResponse is the response struct for api DeleteLiveMixConfig
+type DeleteLiveMixConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLiveMixConfigRequest creates a request to invoke DeleteLiveMixConfig API
+func CreateDeleteLiveMixConfigRequest() (request *DeleteLiveMixConfigRequest) {
+	request = &DeleteLiveMixConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLiveMixConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLiveMixConfigResponse creates a response to parse from DeleteLiveMixConfig response
+func CreateDeleteLiveMixConfigResponse() (response *DeleteLiveMixConfigResponse) {
+	response = &DeleteLiveMixConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/live/delete_live_mix_notify_config.go

@@ -0,0 +1,105 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLiveMixNotifyConfig invokes the live.DeleteLiveMixNotifyConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deletelivemixnotifyconfig.html
+func (client *Client) DeleteLiveMixNotifyConfig(request *DeleteLiveMixNotifyConfigRequest) (response *DeleteLiveMixNotifyConfigResponse, err error) {
+	response = CreateDeleteLiveMixNotifyConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLiveMixNotifyConfigWithChan invokes the live.DeleteLiveMixNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivemixnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveMixNotifyConfigWithChan(request *DeleteLiveMixNotifyConfigRequest) (<-chan *DeleteLiveMixNotifyConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteLiveMixNotifyConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLiveMixNotifyConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLiveMixNotifyConfigWithCallback invokes the live.DeleteLiveMixNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivemixnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveMixNotifyConfigWithCallback(request *DeleteLiveMixNotifyConfigRequest, callback func(response *DeleteLiveMixNotifyConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLiveMixNotifyConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLiveMixNotifyConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLiveMixNotifyConfigRequest is the request struct for api DeleteLiveMixNotifyConfig
+type DeleteLiveMixNotifyConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteLiveMixNotifyConfigResponse is the response struct for api DeleteLiveMixNotifyConfig
+type DeleteLiveMixNotifyConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLiveMixNotifyConfigRequest creates a request to invoke DeleteLiveMixNotifyConfig API
+func CreateDeleteLiveMixNotifyConfigRequest() (request *DeleteLiveMixNotifyConfigRequest) {
+	request = &DeleteLiveMixNotifyConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLiveMixNotifyConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLiveMixNotifyConfigResponse creates a response to parse from DeleteLiveMixNotifyConfig response
+func CreateDeleteLiveMixNotifyConfigResponse() (response *DeleteLiveMixNotifyConfigResponse) {
+	response = &DeleteLiveMixNotifyConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/delete_live_pull_stream_info_config.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLivePullStreamInfoConfig invokes the live.DeleteLivePullStreamInfoConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deletelivepullstreaminfoconfig.html
+func (client *Client) DeleteLivePullStreamInfoConfig(request *DeleteLivePullStreamInfoConfigRequest) (response *DeleteLivePullStreamInfoConfigResponse, err error) {
+	response = CreateDeleteLivePullStreamInfoConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLivePullStreamInfoConfigWithChan invokes the live.DeleteLivePullStreamInfoConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivepullstreaminfoconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLivePullStreamInfoConfigWithChan(request *DeleteLivePullStreamInfoConfigRequest) (<-chan *DeleteLivePullStreamInfoConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteLivePullStreamInfoConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLivePullStreamInfoConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLivePullStreamInfoConfigWithCallback invokes the live.DeleteLivePullStreamInfoConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivepullstreaminfoconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLivePullStreamInfoConfigWithCallback(request *DeleteLivePullStreamInfoConfigRequest, callback func(response *DeleteLivePullStreamInfoConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLivePullStreamInfoConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLivePullStreamInfoConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLivePullStreamInfoConfigRequest is the request struct for api DeleteLivePullStreamInfoConfig
+type DeleteLivePullStreamInfoConfigRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// DeleteLivePullStreamInfoConfigResponse is the response struct for api DeleteLivePullStreamInfoConfig
+type DeleteLivePullStreamInfoConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLivePullStreamInfoConfigRequest creates a request to invoke DeleteLivePullStreamInfoConfig API
+func CreateDeleteLivePullStreamInfoConfigRequest() (request *DeleteLivePullStreamInfoConfigRequest) {
+	request = &DeleteLivePullStreamInfoConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLivePullStreamInfoConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLivePullStreamInfoConfigResponse creates a response to parse from DeleteLivePullStreamInfoConfig response
+func CreateDeleteLivePullStreamInfoConfigResponse() (response *DeleteLivePullStreamInfoConfigResponse) {
+	response = &DeleteLivePullStreamInfoConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/live/delete_live_record_notify_config.go

@@ -0,0 +1,105 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLiveRecordNotifyConfig invokes the live.DeleteLiveRecordNotifyConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deleteliverecordnotifyconfig.html
+func (client *Client) DeleteLiveRecordNotifyConfig(request *DeleteLiveRecordNotifyConfigRequest) (response *DeleteLiveRecordNotifyConfigResponse, err error) {
+	response = CreateDeleteLiveRecordNotifyConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLiveRecordNotifyConfigWithChan invokes the live.DeleteLiveRecordNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deleteliverecordnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveRecordNotifyConfigWithChan(request *DeleteLiveRecordNotifyConfigRequest) (<-chan *DeleteLiveRecordNotifyConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteLiveRecordNotifyConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLiveRecordNotifyConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLiveRecordNotifyConfigWithCallback invokes the live.DeleteLiveRecordNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deleteliverecordnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveRecordNotifyConfigWithCallback(request *DeleteLiveRecordNotifyConfigRequest, callback func(response *DeleteLiveRecordNotifyConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLiveRecordNotifyConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLiveRecordNotifyConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLiveRecordNotifyConfigRequest is the request struct for api DeleteLiveRecordNotifyConfig
+type DeleteLiveRecordNotifyConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteLiveRecordNotifyConfigResponse is the response struct for api DeleteLiveRecordNotifyConfig
+type DeleteLiveRecordNotifyConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLiveRecordNotifyConfigRequest creates a request to invoke DeleteLiveRecordNotifyConfig API
+func CreateDeleteLiveRecordNotifyConfigRequest() (request *DeleteLiveRecordNotifyConfigRequest) {
+	request = &DeleteLiveRecordNotifyConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLiveRecordNotifyConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLiveRecordNotifyConfigResponse creates a response to parse from DeleteLiveRecordNotifyConfig response
+func CreateDeleteLiveRecordNotifyConfigResponse() (response *DeleteLiveRecordNotifyConfigResponse) {
+	response = &DeleteLiveRecordNotifyConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/delete_live_record_vod_config.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLiveRecordVodConfig invokes the live.DeleteLiveRecordVodConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deleteliverecordvodconfig.html
+func (client *Client) DeleteLiveRecordVodConfig(request *DeleteLiveRecordVodConfigRequest) (response *DeleteLiveRecordVodConfigResponse, err error) {
+	response = CreateDeleteLiveRecordVodConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLiveRecordVodConfigWithChan invokes the live.DeleteLiveRecordVodConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deleteliverecordvodconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveRecordVodConfigWithChan(request *DeleteLiveRecordVodConfigRequest) (<-chan *DeleteLiveRecordVodConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteLiveRecordVodConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLiveRecordVodConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLiveRecordVodConfigWithCallback invokes the live.DeleteLiveRecordVodConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deleteliverecordvodconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveRecordVodConfigWithCallback(request *DeleteLiveRecordVodConfigRequest, callback func(response *DeleteLiveRecordVodConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLiveRecordVodConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLiveRecordVodConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLiveRecordVodConfigRequest is the request struct for api DeleteLiveRecordVodConfig
+type DeleteLiveRecordVodConfigRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// DeleteLiveRecordVodConfigResponse is the response struct for api DeleteLiveRecordVodConfig
+type DeleteLiveRecordVodConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLiveRecordVodConfigRequest creates a request to invoke DeleteLiveRecordVodConfig API
+func CreateDeleteLiveRecordVodConfigRequest() (request *DeleteLiveRecordVodConfigRequest) {
+	request = &DeleteLiveRecordVodConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLiveRecordVodConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLiveRecordVodConfigResponse creates a response to parse from DeleteLiveRecordVodConfig response
+func CreateDeleteLiveRecordVodConfigResponse() (response *DeleteLiveRecordVodConfigResponse) {
+	response = &DeleteLiveRecordVodConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/delete_live_snapshot_detect_porn_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLiveSnapshotDetectPornConfig invokes the live.DeleteLiveSnapshotDetectPornConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deletelivesnapshotdetectpornconfig.html
+func (client *Client) DeleteLiveSnapshotDetectPornConfig(request *DeleteLiveSnapshotDetectPornConfigRequest) (response *DeleteLiveSnapshotDetectPornConfigResponse, err error) {
+	response = CreateDeleteLiveSnapshotDetectPornConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLiveSnapshotDetectPornConfigWithChan invokes the live.DeleteLiveSnapshotDetectPornConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivesnapshotdetectpornconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveSnapshotDetectPornConfigWithChan(request *DeleteLiveSnapshotDetectPornConfigRequest) (<-chan *DeleteLiveSnapshotDetectPornConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteLiveSnapshotDetectPornConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLiveSnapshotDetectPornConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLiveSnapshotDetectPornConfigWithCallback invokes the live.DeleteLiveSnapshotDetectPornConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivesnapshotdetectpornconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveSnapshotDetectPornConfigWithCallback(request *DeleteLiveSnapshotDetectPornConfigRequest, callback func(response *DeleteLiveSnapshotDetectPornConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLiveSnapshotDetectPornConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLiveSnapshotDetectPornConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLiveSnapshotDetectPornConfigRequest is the request struct for api DeleteLiveSnapshotDetectPornConfig
+type DeleteLiveSnapshotDetectPornConfigRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteLiveSnapshotDetectPornConfigResponse is the response struct for api DeleteLiveSnapshotDetectPornConfig
+type DeleteLiveSnapshotDetectPornConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLiveSnapshotDetectPornConfigRequest creates a request to invoke DeleteLiveSnapshotDetectPornConfig API
+func CreateDeleteLiveSnapshotDetectPornConfigRequest() (request *DeleteLiveSnapshotDetectPornConfigRequest) {
+	request = &DeleteLiveSnapshotDetectPornConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLiveSnapshotDetectPornConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLiveSnapshotDetectPornConfigResponse creates a response to parse from DeleteLiveSnapshotDetectPornConfig response
+func CreateDeleteLiveSnapshotDetectPornConfigResponse() (response *DeleteLiveSnapshotDetectPornConfigResponse) {
+	response = &DeleteLiveSnapshotDetectPornConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/delete_live_stream_transcode.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLiveStreamTranscode invokes the live.DeleteLiveStreamTranscode API synchronously
+// api document: https://help.aliyun.com/api/live/deletelivestreamtranscode.html
+func (client *Client) DeleteLiveStreamTranscode(request *DeleteLiveStreamTranscodeRequest) (response *DeleteLiveStreamTranscodeResponse, err error) {
+	response = CreateDeleteLiveStreamTranscodeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLiveStreamTranscodeWithChan invokes the live.DeleteLiveStreamTranscode API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivestreamtranscode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveStreamTranscodeWithChan(request *DeleteLiveStreamTranscodeRequest) (<-chan *DeleteLiveStreamTranscodeResponse, <-chan error) {
+	responseChan := make(chan *DeleteLiveStreamTranscodeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLiveStreamTranscode(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLiveStreamTranscodeWithCallback invokes the live.DeleteLiveStreamTranscode API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivestreamtranscode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveStreamTranscodeWithCallback(request *DeleteLiveStreamTranscodeRequest, callback func(response *DeleteLiveStreamTranscodeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLiveStreamTranscodeResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLiveStreamTranscode(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLiveStreamTranscodeRequest is the request struct for api DeleteLiveStreamTranscode
+type DeleteLiveStreamTranscodeRequest struct {
+	*requests.RpcRequest
+	App           string           `position:"Query" name:"App"`
+	Template      string           `position:"Query" name:"Template"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	Domain        string           `position:"Query" name:"Domain"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteLiveStreamTranscodeResponse is the response struct for api DeleteLiveStreamTranscode
+type DeleteLiveStreamTranscodeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLiveStreamTranscodeRequest creates a request to invoke DeleteLiveStreamTranscode API
+func CreateDeleteLiveStreamTranscodeRequest() (request *DeleteLiveStreamTranscodeRequest) {
+	request = &DeleteLiveStreamTranscodeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLiveStreamTranscode", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLiveStreamTranscodeResponse creates a response to parse from DeleteLiveStreamTranscode response
+func CreateDeleteLiveStreamTranscodeResponse() (response *DeleteLiveStreamTranscodeResponse) {
+	response = &DeleteLiveStreamTranscodeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/live/delete_live_streams_notify_url_config.go

@@ -0,0 +1,105 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DeleteLiveStreamsNotifyUrlConfig invokes the live.DeleteLiveStreamsNotifyUrlConfig API synchronously
+// api document: https://help.aliyun.com/api/live/deletelivestreamsnotifyurlconfig.html
+func (client *Client) DeleteLiveStreamsNotifyUrlConfig(request *DeleteLiveStreamsNotifyUrlConfigRequest) (response *DeleteLiveStreamsNotifyUrlConfigResponse, err error) {
+	response = CreateDeleteLiveStreamsNotifyUrlConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteLiveStreamsNotifyUrlConfigWithChan invokes the live.DeleteLiveStreamsNotifyUrlConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivestreamsnotifyurlconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveStreamsNotifyUrlConfigWithChan(request *DeleteLiveStreamsNotifyUrlConfigRequest) (<-chan *DeleteLiveStreamsNotifyUrlConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteLiveStreamsNotifyUrlConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteLiveStreamsNotifyUrlConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteLiveStreamsNotifyUrlConfigWithCallback invokes the live.DeleteLiveStreamsNotifyUrlConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/deletelivestreamsnotifyurlconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteLiveStreamsNotifyUrlConfigWithCallback(request *DeleteLiveStreamsNotifyUrlConfigRequest, callback func(response *DeleteLiveStreamsNotifyUrlConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteLiveStreamsNotifyUrlConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteLiveStreamsNotifyUrlConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteLiveStreamsNotifyUrlConfigRequest is the request struct for api DeleteLiveStreamsNotifyUrlConfig
+type DeleteLiveStreamsNotifyUrlConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteLiveStreamsNotifyUrlConfigResponse is the response struct for api DeleteLiveStreamsNotifyUrlConfig
+type DeleteLiveStreamsNotifyUrlConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteLiveStreamsNotifyUrlConfigRequest creates a request to invoke DeleteLiveStreamsNotifyUrlConfig API
+func CreateDeleteLiveStreamsNotifyUrlConfigRequest() (request *DeleteLiveStreamsNotifyUrlConfigRequest) {
+	request = &DeleteLiveStreamsNotifyUrlConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DeleteLiveStreamsNotifyUrlConfig", "live", "openAPI")
+	return
+}
+
+// CreateDeleteLiveStreamsNotifyUrlConfigResponse creates a response to parse from DeleteLiveStreamsNotifyUrlConfig response
+func CreateDeleteLiveStreamsNotifyUrlConfigResponse() (response *DeleteLiveStreamsNotifyUrlConfigResponse) {
+	response = &DeleteLiveStreamsNotifyUrlConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/describe_caster_components.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeCasterComponents invokes the live.DescribeCasterComponents API synchronously
+// api document: https://help.aliyun.com/api/live/describecastercomponents.html
+func (client *Client) DescribeCasterComponents(request *DescribeCasterComponentsRequest) (response *DescribeCasterComponentsResponse, err error) {
+	response = CreateDescribeCasterComponentsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCasterComponentsWithChan invokes the live.DescribeCasterComponents API asynchronously
+// api document: https://help.aliyun.com/api/live/describecastercomponents.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterComponentsWithChan(request *DescribeCasterComponentsRequest) (<-chan *DescribeCasterComponentsResponse, <-chan error) {
+	responseChan := make(chan *DescribeCasterComponentsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCasterComponents(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCasterComponentsWithCallback invokes the live.DescribeCasterComponents API asynchronously
+// api document: https://help.aliyun.com/api/live/describecastercomponents.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterComponentsWithCallback(request *DescribeCasterComponentsRequest, callback func(response *DescribeCasterComponentsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCasterComponentsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCasterComponents(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCasterComponentsRequest is the request struct for api DescribeCasterComponents
+type DescribeCasterComponentsRequest struct {
+	*requests.RpcRequest
+	ComponentId string           `position:"Query" name:"ComponentId"`
+	CasterId    string           `position:"Query" name:"CasterId"`
+	OwnerId     requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeCasterComponentsResponse is the response struct for api DescribeCasterComponents
+type DescribeCasterComponentsResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	Total      int        `json:"Total" xml:"Total"`
+	Components Components `json:"Components" xml:"Components"`
+}
+
+// CreateDescribeCasterComponentsRequest creates a request to invoke DescribeCasterComponents API
+func CreateDescribeCasterComponentsRequest() (request *DescribeCasterComponentsRequest) {
+	request = &DescribeCasterComponentsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeCasterComponents", "live", "openAPI")
+	return
+}
+
+// CreateDescribeCasterComponentsResponse creates a response to parse from DescribeCasterComponents response
+func CreateDescribeCasterComponentsResponse() (response *DescribeCasterComponentsResponse) {
+	response = &DescribeCasterComponentsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/live/describe_caster_config.go

@@ -0,0 +1,115 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeCasterConfig invokes the live.DescribeCasterConfig API synchronously
+// api document: https://help.aliyun.com/api/live/describecasterconfig.html
+func (client *Client) DescribeCasterConfig(request *DescribeCasterConfigRequest) (response *DescribeCasterConfigResponse, err error) {
+	response = CreateDescribeCasterConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCasterConfigWithChan invokes the live.DescribeCasterConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterConfigWithChan(request *DescribeCasterConfigRequest) (<-chan *DescribeCasterConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeCasterConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCasterConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCasterConfigWithCallback invokes the live.DescribeCasterConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterConfigWithCallback(request *DescribeCasterConfigRequest, callback func(response *DescribeCasterConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCasterConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCasterConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCasterConfigRequest is the request struct for api DescribeCasterConfig
+type DescribeCasterConfigRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeCasterConfigResponse is the response struct for api DescribeCasterConfig
+type DescribeCasterConfigResponse struct {
+	*responses.BaseResponse
+	RequestId        string          `json:"RequestId" xml:"RequestId"`
+	CasterId         string          `json:"CasterId" xml:"CasterId"`
+	CasterName       string          `json:"CasterName" xml:"CasterName"`
+	DomainName       string          `json:"DomainName" xml:"DomainName"`
+	Delay            float64         `json:"Delay" xml:"Delay"`
+	UrgentMaterialId string          `json:"UrgentMaterialId" xml:"UrgentMaterialId"`
+	SideOutputUrl    string          `json:"SideOutputUrl" xml:"SideOutputUrl"`
+	CallbackUrl      string          `json:"CallbackUrl" xml:"CallbackUrl"`
+	ProgramName      string          `json:"ProgramName" xml:"ProgramName"`
+	ProgramEffect    int             `json:"ProgramEffect" xml:"ProgramEffect"`
+	TranscodeConfig  TranscodeConfig `json:"TranscodeConfig" xml:"TranscodeConfig"`
+	RecordConfig     RecordConfig    `json:"RecordConfig" xml:"RecordConfig"`
+}
+
+// CreateDescribeCasterConfigRequest creates a request to invoke DescribeCasterConfig API
+func CreateDescribeCasterConfigRequest() (request *DescribeCasterConfigRequest) {
+	request = &DescribeCasterConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeCasterConfig", "live", "openAPI")
+	return
+}
+
+// CreateDescribeCasterConfigResponse creates a response to parse from DescribeCasterConfig response
+func CreateDescribeCasterConfigResponse() (response *DescribeCasterConfigResponse) {
+	response = &DescribeCasterConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/describe_caster_layouts.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeCasterLayouts invokes the live.DescribeCasterLayouts API synchronously
+// api document: https://help.aliyun.com/api/live/describecasterlayouts.html
+func (client *Client) DescribeCasterLayouts(request *DescribeCasterLayoutsRequest) (response *DescribeCasterLayoutsResponse, err error) {
+	response = CreateDescribeCasterLayoutsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCasterLayoutsWithChan invokes the live.DescribeCasterLayouts API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterlayouts.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterLayoutsWithChan(request *DescribeCasterLayoutsRequest) (<-chan *DescribeCasterLayoutsResponse, <-chan error) {
+	responseChan := make(chan *DescribeCasterLayoutsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCasterLayouts(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCasterLayoutsWithCallback invokes the live.DescribeCasterLayouts API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterlayouts.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterLayoutsWithCallback(request *DescribeCasterLayoutsRequest, callback func(response *DescribeCasterLayoutsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCasterLayoutsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCasterLayouts(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCasterLayoutsRequest is the request struct for api DescribeCasterLayouts
+type DescribeCasterLayoutsRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+	LayoutId string           `position:"Query" name:"LayoutId"`
+}
+
+// DescribeCasterLayoutsResponse is the response struct for api DescribeCasterLayouts
+type DescribeCasterLayoutsResponse struct {
+	*responses.BaseResponse
+	RequestId string  `json:"RequestId" xml:"RequestId"`
+	Total     int     `json:"Total" xml:"Total"`
+	Layouts   Layouts `json:"Layouts" xml:"Layouts"`
+}
+
+// CreateDescribeCasterLayoutsRequest creates a request to invoke DescribeCasterLayouts API
+func CreateDescribeCasterLayoutsRequest() (request *DescribeCasterLayoutsRequest) {
+	request = &DescribeCasterLayoutsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeCasterLayouts", "live", "openAPI")
+	return
+}
+
+// CreateDescribeCasterLayoutsResponse creates a response to parse from DescribeCasterLayouts response
+func CreateDescribeCasterLayoutsResponse() (response *DescribeCasterLayoutsResponse) {
+	response = &DescribeCasterLayoutsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/live/describe_caster_program.go

@@ -0,0 +1,116 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeCasterProgram invokes the live.DescribeCasterProgram API synchronously
+// api document: https://help.aliyun.com/api/live/describecasterprogram.html
+func (client *Client) DescribeCasterProgram(request *DescribeCasterProgramRequest) (response *DescribeCasterProgramResponse, err error) {
+	response = CreateDescribeCasterProgramResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCasterProgramWithChan invokes the live.DescribeCasterProgram API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterprogram.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterProgramWithChan(request *DescribeCasterProgramRequest) (<-chan *DescribeCasterProgramResponse, <-chan error) {
+	responseChan := make(chan *DescribeCasterProgramResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCasterProgram(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCasterProgramWithCallback invokes the live.DescribeCasterProgram API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterprogram.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterProgramWithCallback(request *DescribeCasterProgramRequest, callback func(response *DescribeCasterProgramResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCasterProgramResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCasterProgram(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCasterProgramRequest is the request struct for api DescribeCasterProgram
+type DescribeCasterProgramRequest struct {
+	*requests.RpcRequest
+	CasterId    string           `position:"Query" name:"CasterId"`
+	EpisodeType string           `position:"Query" name:"EpisodeType"`
+	PageSize    requests.Integer `position:"Query" name:"PageSize"`
+	EndTime     string           `position:"Query" name:"EndTime"`
+	StartTime   string           `position:"Query" name:"StartTime"`
+	OwnerId     requests.Integer `position:"Query" name:"OwnerId"`
+	EpisodeId   string           `position:"Query" name:"EpisodeId"`
+	PageNum     requests.Integer `position:"Query" name:"PageNum"`
+	Status      requests.Integer `position:"Query" name:"Status"`
+}
+
+// DescribeCasterProgramResponse is the response struct for api DescribeCasterProgram
+type DescribeCasterProgramResponse struct {
+	*responses.BaseResponse
+	RequestId     string   `json:"RequestId" xml:"RequestId"`
+	CasterId      string   `json:"CasterId" xml:"CasterId"`
+	ProgramName   string   `json:"ProgramName" xml:"ProgramName"`
+	ProgramEffect int      `json:"ProgramEffect" xml:"ProgramEffect"`
+	Total         int      `json:"Total" xml:"Total"`
+	Episodes      Episodes `json:"Episodes" xml:"Episodes"`
+}
+
+// CreateDescribeCasterProgramRequest creates a request to invoke DescribeCasterProgram API
+func CreateDescribeCasterProgramRequest() (request *DescribeCasterProgramRequest) {
+	request = &DescribeCasterProgramRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeCasterProgram", "live", "openAPI")
+	return
+}
+
+// CreateDescribeCasterProgramResponse creates a response to parse from DescribeCasterProgram response
+func CreateDescribeCasterProgramResponse() (response *DescribeCasterProgramResponse) {
+	response = &DescribeCasterProgramResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/describe_caster_rtc_info.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeCasterRtcInfo invokes the live.DescribeCasterRtcInfo API synchronously
+// api document: https://help.aliyun.com/api/live/describecasterrtcinfo.html
+func (client *Client) DescribeCasterRtcInfo(request *DescribeCasterRtcInfoRequest) (response *DescribeCasterRtcInfoResponse, err error) {
+	response = CreateDescribeCasterRtcInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCasterRtcInfoWithChan invokes the live.DescribeCasterRtcInfo API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterrtcinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterRtcInfoWithChan(request *DescribeCasterRtcInfoRequest) (<-chan *DescribeCasterRtcInfoResponse, <-chan error) {
+	responseChan := make(chan *DescribeCasterRtcInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCasterRtcInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCasterRtcInfoWithCallback invokes the live.DescribeCasterRtcInfo API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterrtcinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterRtcInfoWithCallback(request *DescribeCasterRtcInfoRequest, callback func(response *DescribeCasterRtcInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCasterRtcInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCasterRtcInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCasterRtcInfoRequest is the request struct for api DescribeCasterRtcInfo
+type DescribeCasterRtcInfoRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeCasterRtcInfoResponse is the response struct for api DescribeCasterRtcInfo
+type DescribeCasterRtcInfoResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CasterId  string `json:"CasterId" xml:"CasterId"`
+	AuthToken string `json:"AuthToken" xml:"AuthToken"`
+}
+
+// CreateDescribeCasterRtcInfoRequest creates a request to invoke DescribeCasterRtcInfo API
+func CreateDescribeCasterRtcInfoRequest() (request *DescribeCasterRtcInfoRequest) {
+	request = &DescribeCasterRtcInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeCasterRtcInfo", "live", "openAPI")
+	return
+}
+
+// CreateDescribeCasterRtcInfoResponse creates a response to parse from DescribeCasterRtcInfo response
+func CreateDescribeCasterRtcInfoResponse() (response *DescribeCasterRtcInfoResponse) {
+	response = &DescribeCasterRtcInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/describe_caster_scenes.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeCasterScenes invokes the live.DescribeCasterScenes API synchronously
+// api document: https://help.aliyun.com/api/live/describecasterscenes.html
+func (client *Client) DescribeCasterScenes(request *DescribeCasterScenesRequest) (response *DescribeCasterScenesResponse, err error) {
+	response = CreateDescribeCasterScenesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCasterScenesWithChan invokes the live.DescribeCasterScenes API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterscenes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterScenesWithChan(request *DescribeCasterScenesRequest) (<-chan *DescribeCasterScenesResponse, <-chan error) {
+	responseChan := make(chan *DescribeCasterScenesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCasterScenes(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCasterScenesWithCallback invokes the live.DescribeCasterScenes API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterscenes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterScenesWithCallback(request *DescribeCasterScenesRequest, callback func(response *DescribeCasterScenesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCasterScenesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCasterScenes(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCasterScenesRequest is the request struct for api DescribeCasterScenes
+type DescribeCasterScenesRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	SceneId  string           `position:"Query" name:"SceneId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeCasterScenesResponse is the response struct for api DescribeCasterScenes
+type DescribeCasterScenesResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Total     int       `json:"Total" xml:"Total"`
+	SceneList SceneList `json:"SceneList" xml:"SceneList"`
+}
+
+// CreateDescribeCasterScenesRequest creates a request to invoke DescribeCasterScenes API
+func CreateDescribeCasterScenesRequest() (request *DescribeCasterScenesRequest) {
+	request = &DescribeCasterScenesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeCasterScenes", "live", "openAPI")
+	return
+}
+
+// CreateDescribeCasterScenesResponse creates a response to parse from DescribeCasterScenes response
+func CreateDescribeCasterScenesResponse() (response *DescribeCasterScenesResponse) {
+	response = &DescribeCasterScenesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/describe_caster_stream_url.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeCasterStreamUrl invokes the live.DescribeCasterStreamUrl API synchronously
+// api document: https://help.aliyun.com/api/live/describecasterstreamurl.html
+func (client *Client) DescribeCasterStreamUrl(request *DescribeCasterStreamUrlRequest) (response *DescribeCasterStreamUrlResponse, err error) {
+	response = CreateDescribeCasterStreamUrlResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCasterStreamUrlWithChan invokes the live.DescribeCasterStreamUrl API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterstreamurl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterStreamUrlWithChan(request *DescribeCasterStreamUrlRequest) (<-chan *DescribeCasterStreamUrlResponse, <-chan error) {
+	responseChan := make(chan *DescribeCasterStreamUrlResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCasterStreamUrl(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCasterStreamUrlWithCallback invokes the live.DescribeCasterStreamUrl API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasterstreamurl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterStreamUrlWithCallback(request *DescribeCasterStreamUrlRequest, callback func(response *DescribeCasterStreamUrlResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCasterStreamUrlResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCasterStreamUrl(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCasterStreamUrlRequest is the request struct for api DescribeCasterStreamUrl
+type DescribeCasterStreamUrlRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeCasterStreamUrlResponse is the response struct for api DescribeCasterStreamUrl
+type DescribeCasterStreamUrlResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	CasterId      string        `json:"CasterId" xml:"CasterId"`
+	Total         int           `json:"Total" xml:"Total"`
+	CasterStreams CasterStreams `json:"CasterStreams" xml:"CasterStreams"`
+}
+
+// CreateDescribeCasterStreamUrlRequest creates a request to invoke DescribeCasterStreamUrl API
+func CreateDescribeCasterStreamUrlRequest() (request *DescribeCasterStreamUrlRequest) {
+	request = &DescribeCasterStreamUrlRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeCasterStreamUrl", "live", "openAPI")
+	return
+}
+
+// CreateDescribeCasterStreamUrlResponse creates a response to parse from DescribeCasterStreamUrl response
+func CreateDescribeCasterStreamUrlResponse() (response *DescribeCasterStreamUrlResponse) {
+	response = &DescribeCasterStreamUrlResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/describe_caster_video_resources.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeCasterVideoResources invokes the live.DescribeCasterVideoResources API synchronously
+// api document: https://help.aliyun.com/api/live/describecastervideoresources.html
+func (client *Client) DescribeCasterVideoResources(request *DescribeCasterVideoResourcesRequest) (response *DescribeCasterVideoResourcesResponse, err error) {
+	response = CreateDescribeCasterVideoResourcesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCasterVideoResourcesWithChan invokes the live.DescribeCasterVideoResources API asynchronously
+// api document: https://help.aliyun.com/api/live/describecastervideoresources.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterVideoResourcesWithChan(request *DescribeCasterVideoResourcesRequest) (<-chan *DescribeCasterVideoResourcesResponse, <-chan error) {
+	responseChan := make(chan *DescribeCasterVideoResourcesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCasterVideoResources(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCasterVideoResourcesWithCallback invokes the live.DescribeCasterVideoResources API asynchronously
+// api document: https://help.aliyun.com/api/live/describecastervideoresources.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCasterVideoResourcesWithCallback(request *DescribeCasterVideoResourcesRequest, callback func(response *DescribeCasterVideoResourcesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCasterVideoResourcesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCasterVideoResources(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCasterVideoResourcesRequest is the request struct for api DescribeCasterVideoResources
+type DescribeCasterVideoResourcesRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeCasterVideoResourcesResponse is the response struct for api DescribeCasterVideoResources
+type DescribeCasterVideoResourcesResponse struct {
+	*responses.BaseResponse
+	RequestId      string         `json:"RequestId" xml:"RequestId"`
+	Total          int            `json:"Total" xml:"Total"`
+	VideoResources VideoResources `json:"VideoResources" xml:"VideoResources"`
+}
+
+// CreateDescribeCasterVideoResourcesRequest creates a request to invoke DescribeCasterVideoResources API
+func CreateDescribeCasterVideoResourcesRequest() (request *DescribeCasterVideoResourcesRequest) {
+	request = &DescribeCasterVideoResourcesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeCasterVideoResources", "live", "openAPI")
+	return
+}
+
+// CreateDescribeCasterVideoResourcesResponse creates a response to parse from DescribeCasterVideoResources response
+func CreateDescribeCasterVideoResourcesResponse() (response *DescribeCasterVideoResourcesResponse) {
+	response = &DescribeCasterVideoResourcesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/live/describe_casters.go

@@ -0,0 +1,112 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeCasters invokes the live.DescribeCasters API synchronously
+// api document: https://help.aliyun.com/api/live/describecasters.html
+func (client *Client) DescribeCasters(request *DescribeCastersRequest) (response *DescribeCastersResponse, err error) {
+	response = CreateDescribeCastersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCastersWithChan invokes the live.DescribeCasters API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasters.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCastersWithChan(request *DescribeCastersRequest) (<-chan *DescribeCastersResponse, <-chan error) {
+	responseChan := make(chan *DescribeCastersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCasters(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCastersWithCallback invokes the live.DescribeCasters API asynchronously
+// api document: https://help.aliyun.com/api/live/describecasters.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCastersWithCallback(request *DescribeCastersRequest, callback func(response *DescribeCastersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCastersResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCasters(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCastersRequest is the request struct for api DescribeCasters
+type DescribeCastersRequest struct {
+	*requests.RpcRequest
+	CasterName string           `position:"Query" name:"CasterName"`
+	CasterId   string           `position:"Query" name:"CasterId"`
+	PageSize   requests.Integer `position:"Query" name:"PageSize"`
+	EndTime    string           `position:"Query" name:"EndTime"`
+	StartTime  string           `position:"Query" name:"StartTime"`
+	OwnerId    requests.Integer `position:"Query" name:"OwnerId"`
+	PageNum    requests.Integer `position:"Query" name:"PageNum"`
+	Status     requests.Integer `position:"Query" name:"Status"`
+}
+
+// DescribeCastersResponse is the response struct for api DescribeCasters
+type DescribeCastersResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	Total      int        `json:"Total" xml:"Total"`
+	CasterList CasterList `json:"CasterList" xml:"CasterList"`
+}
+
+// CreateDescribeCastersRequest creates a request to invoke DescribeCasters API
+func CreateDescribeCastersRequest() (request *DescribeCastersRequest) {
+	request = &DescribeCastersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeCasters", "live", "openAPI")
+	return
+}
+
+// CreateDescribeCastersResponse creates a response to parse from DescribeCasters response
+func CreateDescribeCastersResponse() (response *DescribeCastersResponse) {
+	response = &DescribeCastersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/describe_live_detect_notify_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveDetectNotifyConfig invokes the live.DescribeLiveDetectNotifyConfig API synchronously
+// api document: https://help.aliyun.com/api/live/describelivedetectnotifyconfig.html
+func (client *Client) DescribeLiveDetectNotifyConfig(request *DescribeLiveDetectNotifyConfigRequest) (response *DescribeLiveDetectNotifyConfigResponse, err error) {
+	response = CreateDescribeLiveDetectNotifyConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveDetectNotifyConfigWithChan invokes the live.DescribeLiveDetectNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivedetectnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveDetectNotifyConfigWithChan(request *DescribeLiveDetectNotifyConfigRequest) (<-chan *DescribeLiveDetectNotifyConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveDetectNotifyConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveDetectNotifyConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveDetectNotifyConfigWithCallback invokes the live.DescribeLiveDetectNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivedetectnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveDetectNotifyConfigWithCallback(request *DescribeLiveDetectNotifyConfigRequest, callback func(response *DescribeLiveDetectNotifyConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveDetectNotifyConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveDetectNotifyConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveDetectNotifyConfigRequest is the request struct for api DescribeLiveDetectNotifyConfig
+type DescribeLiveDetectNotifyConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeLiveDetectNotifyConfigResponse is the response struct for api DescribeLiveDetectNotifyConfig
+type DescribeLiveDetectNotifyConfigResponse struct {
+	*responses.BaseResponse
+	RequestId              string                 `json:"RequestId" xml:"RequestId"`
+	LiveDetectNotifyConfig LiveDetectNotifyConfig `json:"LiveDetectNotifyConfig" xml:"LiveDetectNotifyConfig"`
+}
+
+// CreateDescribeLiveDetectNotifyConfigRequest creates a request to invoke DescribeLiveDetectNotifyConfig API
+func CreateDescribeLiveDetectNotifyConfigRequest() (request *DescribeLiveDetectNotifyConfigRequest) {
+	request = &DescribeLiveDetectNotifyConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveDetectNotifyConfig", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveDetectNotifyConfigResponse creates a response to parse from DescribeLiveDetectNotifyConfig response
+func CreateDescribeLiveDetectNotifyConfigResponse() (response *DescribeLiveDetectNotifyConfigResponse) {
+	response = &DescribeLiveDetectNotifyConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/live/describe_live_domain_record_data.go

@@ -0,0 +1,108 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveDomainRecordData invokes the live.DescribeLiveDomainRecordData API synchronously
+// api document: https://help.aliyun.com/api/live/describelivedomainrecorddata.html
+func (client *Client) DescribeLiveDomainRecordData(request *DescribeLiveDomainRecordDataRequest) (response *DescribeLiveDomainRecordDataResponse, err error) {
+	response = CreateDescribeLiveDomainRecordDataResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveDomainRecordDataWithChan invokes the live.DescribeLiveDomainRecordData API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivedomainrecorddata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveDomainRecordDataWithChan(request *DescribeLiveDomainRecordDataRequest) (<-chan *DescribeLiveDomainRecordDataResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveDomainRecordDataResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveDomainRecordData(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveDomainRecordDataWithCallback invokes the live.DescribeLiveDomainRecordData API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivedomainrecorddata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveDomainRecordDataWithCallback(request *DescribeLiveDomainRecordDataRequest, callback func(response *DescribeLiveDomainRecordDataResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveDomainRecordDataResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveDomainRecordData(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveDomainRecordDataRequest is the request struct for api DescribeLiveDomainRecordData
+type DescribeLiveDomainRecordDataRequest struct {
+	*requests.RpcRequest
+	RecordType string           `position:"Query" name:"RecordType"`
+	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"`
+}
+
+// DescribeLiveDomainRecordDataResponse is the response struct for api DescribeLiveDomainRecordData
+type DescribeLiveDomainRecordDataResponse struct {
+	*responses.BaseResponse
+	RequestId       string          `json:"RequestId" xml:"RequestId"`
+	RecordDataInfos RecordDataInfos `json:"RecordDataInfos" xml:"RecordDataInfos"`
+}
+
+// CreateDescribeLiveDomainRecordDataRequest creates a request to invoke DescribeLiveDomainRecordData API
+func CreateDescribeLiveDomainRecordDataRequest() (request *DescribeLiveDomainRecordDataRequest) {
+	request = &DescribeLiveDomainRecordDataRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveDomainRecordData", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveDomainRecordDataResponse creates a response to parse from DescribeLiveDomainRecordData response
+func CreateDescribeLiveDomainRecordDataResponse() (response *DescribeLiveDomainRecordDataResponse) {
+	response = &DescribeLiveDomainRecordDataResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/describe_live_domain_snapshot_data.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveDomainSnapshotData invokes the live.DescribeLiveDomainSnapshotData API synchronously
+// api document: https://help.aliyun.com/api/live/describelivedomainsnapshotdata.html
+func (client *Client) DescribeLiveDomainSnapshotData(request *DescribeLiveDomainSnapshotDataRequest) (response *DescribeLiveDomainSnapshotDataResponse, err error) {
+	response = CreateDescribeLiveDomainSnapshotDataResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveDomainSnapshotDataWithChan invokes the live.DescribeLiveDomainSnapshotData API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivedomainsnapshotdata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveDomainSnapshotDataWithChan(request *DescribeLiveDomainSnapshotDataRequest) (<-chan *DescribeLiveDomainSnapshotDataResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveDomainSnapshotDataResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveDomainSnapshotData(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveDomainSnapshotDataWithCallback invokes the live.DescribeLiveDomainSnapshotData API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivedomainsnapshotdata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveDomainSnapshotDataWithCallback(request *DescribeLiveDomainSnapshotDataRequest, callback func(response *DescribeLiveDomainSnapshotDataResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveDomainSnapshotDataResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveDomainSnapshotData(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveDomainSnapshotDataRequest is the request struct for api DescribeLiveDomainSnapshotData
+type DescribeLiveDomainSnapshotDataRequest struct {
+	*requests.RpcRequest
+	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"`
+}
+
+// DescribeLiveDomainSnapshotDataResponse is the response struct for api DescribeLiveDomainSnapshotData
+type DescribeLiveDomainSnapshotDataResponse struct {
+	*responses.BaseResponse
+	RequestId         string            `json:"RequestId" xml:"RequestId"`
+	SnapshotDataInfos SnapshotDataInfos `json:"SnapshotDataInfos" xml:"SnapshotDataInfos"`
+}
+
+// CreateDescribeLiveDomainSnapshotDataRequest creates a request to invoke DescribeLiveDomainSnapshotData API
+func CreateDescribeLiveDomainSnapshotDataRequest() (request *DescribeLiveDomainSnapshotDataRequest) {
+	request = &DescribeLiveDomainSnapshotDataRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveDomainSnapshotData", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveDomainSnapshotDataResponse creates a response to parse from DescribeLiveDomainSnapshotData response
+func CreateDescribeLiveDomainSnapshotDataResponse() (response *DescribeLiveDomainSnapshotDataResponse) {
+	response = &DescribeLiveDomainSnapshotDataResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/describe_live_domain_transcode_data.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveDomainTranscodeData invokes the live.DescribeLiveDomainTranscodeData API synchronously
+// api document: https://help.aliyun.com/api/live/describelivedomaintranscodedata.html
+func (client *Client) DescribeLiveDomainTranscodeData(request *DescribeLiveDomainTranscodeDataRequest) (response *DescribeLiveDomainTranscodeDataResponse, err error) {
+	response = CreateDescribeLiveDomainTranscodeDataResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveDomainTranscodeDataWithChan invokes the live.DescribeLiveDomainTranscodeData API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivedomaintranscodedata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveDomainTranscodeDataWithChan(request *DescribeLiveDomainTranscodeDataRequest) (<-chan *DescribeLiveDomainTranscodeDataResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveDomainTranscodeDataResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveDomainTranscodeData(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveDomainTranscodeDataWithCallback invokes the live.DescribeLiveDomainTranscodeData API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivedomaintranscodedata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveDomainTranscodeDataWithCallback(request *DescribeLiveDomainTranscodeDataRequest, callback func(response *DescribeLiveDomainTranscodeDataResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveDomainTranscodeDataResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveDomainTranscodeData(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveDomainTranscodeDataRequest is the request struct for api DescribeLiveDomainTranscodeData
+type DescribeLiveDomainTranscodeDataRequest struct {
+	*requests.RpcRequest
+	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"`
+}
+
+// DescribeLiveDomainTranscodeDataResponse is the response struct for api DescribeLiveDomainTranscodeData
+type DescribeLiveDomainTranscodeDataResponse struct {
+	*responses.BaseResponse
+	RequestId          string             `json:"RequestId" xml:"RequestId"`
+	TranscodeDataInfos TranscodeDataInfos `json:"TranscodeDataInfos" xml:"TranscodeDataInfos"`
+}
+
+// CreateDescribeLiveDomainTranscodeDataRequest creates a request to invoke DescribeLiveDomainTranscodeData API
+func CreateDescribeLiveDomainTranscodeDataRequest() (request *DescribeLiveDomainTranscodeDataRequest) {
+	request = &DescribeLiveDomainTranscodeDataRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveDomainTranscodeData", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveDomainTranscodeDataResponse creates a response to parse from DescribeLiveDomainTranscodeData response
+func CreateDescribeLiveDomainTranscodeDataResponse() (response *DescribeLiveDomainTranscodeDataResponse) {
+	response = &DescribeLiveDomainTranscodeDataResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/describe_live_mix_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveMixConfig invokes the live.DescribeLiveMixConfig API synchronously
+// api document: https://help.aliyun.com/api/live/describelivemixconfig.html
+func (client *Client) DescribeLiveMixConfig(request *DescribeLiveMixConfigRequest) (response *DescribeLiveMixConfigResponse, err error) {
+	response = CreateDescribeLiveMixConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveMixConfigWithChan invokes the live.DescribeLiveMixConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivemixconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveMixConfigWithChan(request *DescribeLiveMixConfigRequest) (<-chan *DescribeLiveMixConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveMixConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveMixConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveMixConfigWithCallback invokes the live.DescribeLiveMixConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivemixconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveMixConfigWithCallback(request *DescribeLiveMixConfigRequest, callback func(response *DescribeLiveMixConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveMixConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveMixConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveMixConfigRequest is the request struct for api DescribeLiveMixConfig
+type DescribeLiveMixConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeLiveMixConfigResponse is the response struct for api DescribeLiveMixConfig
+type DescribeLiveMixConfigResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	MixConfigList MixConfigList `json:"MixConfigList" xml:"MixConfigList"`
+}
+
+// CreateDescribeLiveMixConfigRequest creates a request to invoke DescribeLiveMixConfig API
+func CreateDescribeLiveMixConfigRequest() (request *DescribeLiveMixConfigRequest) {
+	request = &DescribeLiveMixConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveMixConfig", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveMixConfigResponse creates a response to parse from DescribeLiveMixConfig response
+func CreateDescribeLiveMixConfigResponse() (response *DescribeLiveMixConfigResponse) {
+	response = &DescribeLiveMixConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/describe_live_mix_notify_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveMixNotifyConfig invokes the live.DescribeLiveMixNotifyConfig API synchronously
+// api document: https://help.aliyun.com/api/live/describelivemixnotifyconfig.html
+func (client *Client) DescribeLiveMixNotifyConfig(request *DescribeLiveMixNotifyConfigRequest) (response *DescribeLiveMixNotifyConfigResponse, err error) {
+	response = CreateDescribeLiveMixNotifyConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveMixNotifyConfigWithChan invokes the live.DescribeLiveMixNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivemixnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveMixNotifyConfigWithChan(request *DescribeLiveMixNotifyConfigRequest) (<-chan *DescribeLiveMixNotifyConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveMixNotifyConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveMixNotifyConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveMixNotifyConfigWithCallback invokes the live.DescribeLiveMixNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivemixnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveMixNotifyConfigWithCallback(request *DescribeLiveMixNotifyConfigRequest, callback func(response *DescribeLiveMixNotifyConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveMixNotifyConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveMixNotifyConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveMixNotifyConfigRequest is the request struct for api DescribeLiveMixNotifyConfig
+type DescribeLiveMixNotifyConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeLiveMixNotifyConfigResponse is the response struct for api DescribeLiveMixNotifyConfig
+type DescribeLiveMixNotifyConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	NotifyUrl string `json:"NotifyUrl" xml:"NotifyUrl"`
+}
+
+// CreateDescribeLiveMixNotifyConfigRequest creates a request to invoke DescribeLiveMixNotifyConfig API
+func CreateDescribeLiveMixNotifyConfigRequest() (request *DescribeLiveMixNotifyConfigRequest) {
+	request = &DescribeLiveMixNotifyConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveMixNotifyConfig", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveMixNotifyConfigResponse creates a response to parse from DescribeLiveMixNotifyConfig response
+func CreateDescribeLiveMixNotifyConfigResponse() (response *DescribeLiveMixNotifyConfigResponse) {
+	response = &DescribeLiveMixNotifyConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/describe_live_pull_stream_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLivePullStreamConfig invokes the live.DescribeLivePullStreamConfig API synchronously
+// api document: https://help.aliyun.com/api/live/describelivepullstreamconfig.html
+func (client *Client) DescribeLivePullStreamConfig(request *DescribeLivePullStreamConfigRequest) (response *DescribeLivePullStreamConfigResponse, err error) {
+	response = CreateDescribeLivePullStreamConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLivePullStreamConfigWithChan invokes the live.DescribeLivePullStreamConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivepullstreamconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLivePullStreamConfigWithChan(request *DescribeLivePullStreamConfigRequest) (<-chan *DescribeLivePullStreamConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeLivePullStreamConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLivePullStreamConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLivePullStreamConfigWithCallback invokes the live.DescribeLivePullStreamConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivepullstreamconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLivePullStreamConfigWithCallback(request *DescribeLivePullStreamConfigRequest, callback func(response *DescribeLivePullStreamConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLivePullStreamConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLivePullStreamConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLivePullStreamConfigRequest is the request struct for api DescribeLivePullStreamConfig
+type DescribeLivePullStreamConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeLivePullStreamConfigResponse is the response struct for api DescribeLivePullStreamConfig
+type DescribeLivePullStreamConfigResponse struct {
+	*responses.BaseResponse
+	RequestId         string                                          `json:"RequestId" xml:"RequestId"`
+	LiveAppRecordList LiveAppRecordListInDescribeLivePullStreamConfig `json:"LiveAppRecordList" xml:"LiveAppRecordList"`
+}
+
+// CreateDescribeLivePullStreamConfigRequest creates a request to invoke DescribeLivePullStreamConfig API
+func CreateDescribeLivePullStreamConfigRequest() (request *DescribeLivePullStreamConfigRequest) {
+	request = &DescribeLivePullStreamConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLivePullStreamConfig", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLivePullStreamConfigResponse creates a response to parse from DescribeLivePullStreamConfig response
+func CreateDescribeLivePullStreamConfigResponse() (response *DescribeLivePullStreamConfigResponse) {
+	response = &DescribeLivePullStreamConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/live/describe_live_record_config.go

@@ -0,0 +1,116 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveRecordConfig invokes the live.DescribeLiveRecordConfig API synchronously
+// api document: https://help.aliyun.com/api/live/describeliverecordconfig.html
+func (client *Client) DescribeLiveRecordConfig(request *DescribeLiveRecordConfigRequest) (response *DescribeLiveRecordConfigResponse, err error) {
+	response = CreateDescribeLiveRecordConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveRecordConfigWithChan invokes the live.DescribeLiveRecordConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describeliverecordconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveRecordConfigWithChan(request *DescribeLiveRecordConfigRequest) (<-chan *DescribeLiveRecordConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveRecordConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveRecordConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveRecordConfigWithCallback invokes the live.DescribeLiveRecordConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describeliverecordconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveRecordConfigWithCallback(request *DescribeLiveRecordConfigRequest, callback func(response *DescribeLiveRecordConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveRecordConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveRecordConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveRecordConfigRequest is the request struct for api DescribeLiveRecordConfig
+type DescribeLiveRecordConfigRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	PageSize      requests.Integer `position:"Query" name:"PageSize"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	PageNum       requests.Integer `position:"Query" name:"PageNum"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+	Order         string           `position:"Query" name:"Order"`
+}
+
+// DescribeLiveRecordConfigResponse is the response struct for api DescribeLiveRecordConfig
+type DescribeLiveRecordConfigResponse struct {
+	*responses.BaseResponse
+	RequestId         string                                      `json:"RequestId" xml:"RequestId"`
+	PageNum           int                                         `json:"PageNum" xml:"PageNum"`
+	PageSize          int                                         `json:"PageSize" xml:"PageSize"`
+	Order             string                                      `json:"Order" xml:"Order"`
+	TotalNum          int                                         `json:"TotalNum" xml:"TotalNum"`
+	TotalPage         int                                         `json:"TotalPage" xml:"TotalPage"`
+	LiveAppRecordList LiveAppRecordListInDescribeLiveRecordConfig `json:"LiveAppRecordList" xml:"LiveAppRecordList"`
+}
+
+// CreateDescribeLiveRecordConfigRequest creates a request to invoke DescribeLiveRecordConfig API
+func CreateDescribeLiveRecordConfigRequest() (request *DescribeLiveRecordConfigRequest) {
+	request = &DescribeLiveRecordConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveRecordConfig", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveRecordConfigResponse creates a response to parse from DescribeLiveRecordConfig response
+func CreateDescribeLiveRecordConfigResponse() (response *DescribeLiveRecordConfigResponse) {
+	response = &DescribeLiveRecordConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/describe_live_record_notify_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveRecordNotifyConfig invokes the live.DescribeLiveRecordNotifyConfig API synchronously
+// api document: https://help.aliyun.com/api/live/describeliverecordnotifyconfig.html
+func (client *Client) DescribeLiveRecordNotifyConfig(request *DescribeLiveRecordNotifyConfigRequest) (response *DescribeLiveRecordNotifyConfigResponse, err error) {
+	response = CreateDescribeLiveRecordNotifyConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveRecordNotifyConfigWithChan invokes the live.DescribeLiveRecordNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describeliverecordnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveRecordNotifyConfigWithChan(request *DescribeLiveRecordNotifyConfigRequest) (<-chan *DescribeLiveRecordNotifyConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveRecordNotifyConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveRecordNotifyConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveRecordNotifyConfigWithCallback invokes the live.DescribeLiveRecordNotifyConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describeliverecordnotifyconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveRecordNotifyConfigWithCallback(request *DescribeLiveRecordNotifyConfigRequest, callback func(response *DescribeLiveRecordNotifyConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveRecordNotifyConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveRecordNotifyConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveRecordNotifyConfigRequest is the request struct for api DescribeLiveRecordNotifyConfig
+type DescribeLiveRecordNotifyConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeLiveRecordNotifyConfigResponse is the response struct for api DescribeLiveRecordNotifyConfig
+type DescribeLiveRecordNotifyConfigResponse struct {
+	*responses.BaseResponse
+	RequestId              string                 `json:"RequestId" xml:"RequestId"`
+	LiveRecordNotifyConfig LiveRecordNotifyConfig `json:"LiveRecordNotifyConfig" xml:"LiveRecordNotifyConfig"`
+}
+
+// CreateDescribeLiveRecordNotifyConfigRequest creates a request to invoke DescribeLiveRecordNotifyConfig API
+func CreateDescribeLiveRecordNotifyConfigRequest() (request *DescribeLiveRecordNotifyConfigRequest) {
+	request = &DescribeLiveRecordNotifyConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveRecordNotifyConfig", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveRecordNotifyConfigResponse creates a response to parse from DescribeLiveRecordNotifyConfig response
+func CreateDescribeLiveRecordNotifyConfigResponse() (response *DescribeLiveRecordNotifyConfigResponse) {
+	response = &DescribeLiveRecordNotifyConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/live/describe_live_record_vod_configs.go

@@ -0,0 +1,112 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveRecordVodConfigs invokes the live.DescribeLiveRecordVodConfigs API synchronously
+// api document: https://help.aliyun.com/api/live/describeliverecordvodconfigs.html
+func (client *Client) DescribeLiveRecordVodConfigs(request *DescribeLiveRecordVodConfigsRequest) (response *DescribeLiveRecordVodConfigsResponse, err error) {
+	response = CreateDescribeLiveRecordVodConfigsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveRecordVodConfigsWithChan invokes the live.DescribeLiveRecordVodConfigs API asynchronously
+// api document: https://help.aliyun.com/api/live/describeliverecordvodconfigs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveRecordVodConfigsWithChan(request *DescribeLiveRecordVodConfigsRequest) (<-chan *DescribeLiveRecordVodConfigsResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveRecordVodConfigsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveRecordVodConfigs(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveRecordVodConfigsWithCallback invokes the live.DescribeLiveRecordVodConfigs API asynchronously
+// api document: https://help.aliyun.com/api/live/describeliverecordvodconfigs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveRecordVodConfigsWithCallback(request *DescribeLiveRecordVodConfigsRequest, callback func(response *DescribeLiveRecordVodConfigsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveRecordVodConfigsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveRecordVodConfigs(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveRecordVodConfigsRequest is the request struct for api DescribeLiveRecordVodConfigs
+type DescribeLiveRecordVodConfigsRequest struct {
+	*requests.RpcRequest
+	AppName    string           `position:"Query" name:"AppName"`
+	DomainName string           `position:"Query" name:"DomainName"`
+	PageSize   requests.Integer `position:"Query" name:"PageSize"`
+	OwnerId    requests.Integer `position:"Query" name:"OwnerId"`
+	PageNum    requests.Integer `position:"Query" name:"PageNum"`
+	StreamName string           `position:"Query" name:"StreamName"`
+}
+
+// DescribeLiveRecordVodConfigsResponse is the response struct for api DescribeLiveRecordVodConfigs
+type DescribeLiveRecordVodConfigsResponse struct {
+	*responses.BaseResponse
+	RequestId            string               `json:"RequestId" xml:"RequestId"`
+	PageNum              int                  `json:"PageNum" xml:"PageNum"`
+	PageSize             int                  `json:"PageSize" xml:"PageSize"`
+	Total                string               `json:"Total" xml:"Total"`
+	LiveRecordVodConfigs LiveRecordVodConfigs `json:"LiveRecordVodConfigs" xml:"LiveRecordVodConfigs"`
+}
+
+// CreateDescribeLiveRecordVodConfigsRequest creates a request to invoke DescribeLiveRecordVodConfigs API
+func CreateDescribeLiveRecordVodConfigsRequest() (request *DescribeLiveRecordVodConfigsRequest) {
+	request = &DescribeLiveRecordVodConfigsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveRecordVodConfigs", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveRecordVodConfigsResponse creates a response to parse from DescribeLiveRecordVodConfigs response
+func CreateDescribeLiveRecordVodConfigsResponse() (response *DescribeLiveRecordVodConfigsResponse) {
+	response = &DescribeLiveRecordVodConfigsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/live/describe_live_snapshot_config.go

@@ -0,0 +1,115 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveSnapshotConfig invokes the live.DescribeLiveSnapshotConfig API synchronously
+// api document: https://help.aliyun.com/api/live/describelivesnapshotconfig.html
+func (client *Client) DescribeLiveSnapshotConfig(request *DescribeLiveSnapshotConfigRequest) (response *DescribeLiveSnapshotConfigResponse, err error) {
+	response = CreateDescribeLiveSnapshotConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveSnapshotConfigWithChan invokes the live.DescribeLiveSnapshotConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivesnapshotconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveSnapshotConfigWithChan(request *DescribeLiveSnapshotConfigRequest) (<-chan *DescribeLiveSnapshotConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveSnapshotConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveSnapshotConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveSnapshotConfigWithCallback invokes the live.DescribeLiveSnapshotConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivesnapshotconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveSnapshotConfigWithCallback(request *DescribeLiveSnapshotConfigRequest, callback func(response *DescribeLiveSnapshotConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveSnapshotConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveSnapshotConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveSnapshotConfigRequest is the request struct for api DescribeLiveSnapshotConfig
+type DescribeLiveSnapshotConfigRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	PageSize      requests.Integer `position:"Query" name:"PageSize"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	PageNum       requests.Integer `position:"Query" name:"PageNum"`
+	Order         string           `position:"Query" name:"Order"`
+}
+
+// DescribeLiveSnapshotConfigResponse is the response struct for api DescribeLiveSnapshotConfig
+type DescribeLiveSnapshotConfigResponse struct {
+	*responses.BaseResponse
+	RequestId                    string                       `json:"RequestId" xml:"RequestId"`
+	PageNum                      int                          `json:"PageNum" xml:"PageNum"`
+	PageSize                     int                          `json:"PageSize" xml:"PageSize"`
+	Order                        string                       `json:"Order" xml:"Order"`
+	TotalNum                     int                          `json:"TotalNum" xml:"TotalNum"`
+	TotalPage                    int                          `json:"TotalPage" xml:"TotalPage"`
+	LiveStreamSnapshotConfigList LiveStreamSnapshotConfigList `json:"LiveStreamSnapshotConfigList" xml:"LiveStreamSnapshotConfigList"`
+}
+
+// CreateDescribeLiveSnapshotConfigRequest creates a request to invoke DescribeLiveSnapshotConfig API
+func CreateDescribeLiveSnapshotConfigRequest() (request *DescribeLiveSnapshotConfigRequest) {
+	request = &DescribeLiveSnapshotConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveSnapshotConfig", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveSnapshotConfigResponse creates a response to parse from DescribeLiveSnapshotConfig response
+func CreateDescribeLiveSnapshotConfigResponse() (response *DescribeLiveSnapshotConfigResponse) {
+	response = &DescribeLiveSnapshotConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/live/describe_live_snapshot_detect_porn_config.go

@@ -0,0 +1,115 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveSnapshotDetectPornConfig invokes the live.DescribeLiveSnapshotDetectPornConfig API synchronously
+// api document: https://help.aliyun.com/api/live/describelivesnapshotdetectpornconfig.html
+func (client *Client) DescribeLiveSnapshotDetectPornConfig(request *DescribeLiveSnapshotDetectPornConfigRequest) (response *DescribeLiveSnapshotDetectPornConfigResponse, err error) {
+	response = CreateDescribeLiveSnapshotDetectPornConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveSnapshotDetectPornConfigWithChan invokes the live.DescribeLiveSnapshotDetectPornConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivesnapshotdetectpornconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveSnapshotDetectPornConfigWithChan(request *DescribeLiveSnapshotDetectPornConfigRequest) (<-chan *DescribeLiveSnapshotDetectPornConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveSnapshotDetectPornConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveSnapshotDetectPornConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveSnapshotDetectPornConfigWithCallback invokes the live.DescribeLiveSnapshotDetectPornConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivesnapshotdetectpornconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveSnapshotDetectPornConfigWithCallback(request *DescribeLiveSnapshotDetectPornConfigRequest, callback func(response *DescribeLiveSnapshotDetectPornConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveSnapshotDetectPornConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveSnapshotDetectPornConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveSnapshotDetectPornConfigRequest is the request struct for api DescribeLiveSnapshotDetectPornConfig
+type DescribeLiveSnapshotDetectPornConfigRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	PageSize      requests.Integer `position:"Query" name:"PageSize"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	PageNum       requests.Integer `position:"Query" name:"PageNum"`
+	Order         string           `position:"Query" name:"Order"`
+}
+
+// DescribeLiveSnapshotDetectPornConfigResponse is the response struct for api DescribeLiveSnapshotDetectPornConfig
+type DescribeLiveSnapshotDetectPornConfigResponse struct {
+	*responses.BaseResponse
+	RequestId                        string                           `json:"RequestId" xml:"RequestId"`
+	PageNum                          int                              `json:"PageNum" xml:"PageNum"`
+	PageSize                         int                              `json:"PageSize" xml:"PageSize"`
+	Order                            string                           `json:"Order" xml:"Order"`
+	TotalNum                         int                              `json:"TotalNum" xml:"TotalNum"`
+	TotalPage                        int                              `json:"TotalPage" xml:"TotalPage"`
+	LiveSnapshotDetectPornConfigList LiveSnapshotDetectPornConfigList `json:"LiveSnapshotDetectPornConfigList" xml:"LiveSnapshotDetectPornConfigList"`
+}
+
+// CreateDescribeLiveSnapshotDetectPornConfigRequest creates a request to invoke DescribeLiveSnapshotDetectPornConfig API
+func CreateDescribeLiveSnapshotDetectPornConfigRequest() (request *DescribeLiveSnapshotDetectPornConfigRequest) {
+	request = &DescribeLiveSnapshotDetectPornConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveSnapshotDetectPornConfig", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveSnapshotDetectPornConfigResponse creates a response to parse from DescribeLiveSnapshotDetectPornConfig response
+func CreateDescribeLiveSnapshotDetectPornConfigResponse() (response *DescribeLiveSnapshotDetectPornConfigResponse) {
+	response = &DescribeLiveSnapshotDetectPornConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/live/describe_live_stream_bit_rate_data.go

@@ -0,0 +1,110 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamBitRateData invokes the live.DescribeLiveStreamBitRateData API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreambitratedata.html
+func (client *Client) DescribeLiveStreamBitRateData(request *DescribeLiveStreamBitRateDataRequest) (response *DescribeLiveStreamBitRateDataResponse, err error) {
+	response = CreateDescribeLiveStreamBitRateDataResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamBitRateDataWithChan invokes the live.DescribeLiveStreamBitRateData API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreambitratedata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamBitRateDataWithChan(request *DescribeLiveStreamBitRateDataRequest) (<-chan *DescribeLiveStreamBitRateDataResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamBitRateDataResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamBitRateData(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamBitRateDataWithCallback invokes the live.DescribeLiveStreamBitRateData API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreambitratedata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamBitRateDataWithCallback(request *DescribeLiveStreamBitRateDataRequest, callback func(response *DescribeLiveStreamBitRateDataResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamBitRateDataResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamBitRateData(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamBitRateDataRequest is the request struct for api DescribeLiveStreamBitRateData
+type DescribeLiveStreamBitRateDataRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	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"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// DescribeLiveStreamBitRateDataResponse is the response struct for api DescribeLiveStreamBitRateData
+type DescribeLiveStreamBitRateDataResponse struct {
+	*responses.BaseResponse
+	RequestId                string                                                  `json:"RequestId" xml:"RequestId"`
+	FrameRateAndBitRateInfos FrameRateAndBitRateInfosInDescribeLiveStreamBitRateData `json:"FrameRateAndBitRateInfos" xml:"FrameRateAndBitRateInfos"`
+}
+
+// CreateDescribeLiveStreamBitRateDataRequest creates a request to invoke DescribeLiveStreamBitRateData API
+func CreateDescribeLiveStreamBitRateDataRequest() (request *DescribeLiveStreamBitRateDataRequest) {
+	request = &DescribeLiveStreamBitRateDataRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamBitRateData", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamBitRateDataResponse creates a response to parse from DescribeLiveStreamBitRateData response
+func CreateDescribeLiveStreamBitRateDataResponse() (response *DescribeLiveStreamBitRateDataResponse) {
+	response = &DescribeLiveStreamBitRateDataResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/live/describe_live_stream_history_user_num.go

@@ -0,0 +1,110 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamHistoryUserNum invokes the live.DescribeLiveStreamHistoryUserNum API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamhistoryusernum.html
+func (client *Client) DescribeLiveStreamHistoryUserNum(request *DescribeLiveStreamHistoryUserNumRequest) (response *DescribeLiveStreamHistoryUserNumResponse, err error) {
+	response = CreateDescribeLiveStreamHistoryUserNumResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamHistoryUserNumWithChan invokes the live.DescribeLiveStreamHistoryUserNum API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamhistoryusernum.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamHistoryUserNumWithChan(request *DescribeLiveStreamHistoryUserNumRequest) (<-chan *DescribeLiveStreamHistoryUserNumResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamHistoryUserNumResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamHistoryUserNum(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamHistoryUserNumWithCallback invokes the live.DescribeLiveStreamHistoryUserNum API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamhistoryusernum.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamHistoryUserNumWithCallback(request *DescribeLiveStreamHistoryUserNumRequest, callback func(response *DescribeLiveStreamHistoryUserNumResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamHistoryUserNumResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamHistoryUserNum(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamHistoryUserNumRequest is the request struct for api DescribeLiveStreamHistoryUserNum
+type DescribeLiveStreamHistoryUserNumRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	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"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// DescribeLiveStreamHistoryUserNumResponse is the response struct for api DescribeLiveStreamHistoryUserNum
+type DescribeLiveStreamHistoryUserNumResponse struct {
+	*responses.BaseResponse
+	RequestId              string                 `json:"RequestId" xml:"RequestId"`
+	LiveStreamUserNumInfos LiveStreamUserNumInfos `json:"LiveStreamUserNumInfos" xml:"LiveStreamUserNumInfos"`
+}
+
+// CreateDescribeLiveStreamHistoryUserNumRequest creates a request to invoke DescribeLiveStreamHistoryUserNum API
+func CreateDescribeLiveStreamHistoryUserNumRequest() (request *DescribeLiveStreamHistoryUserNumRequest) {
+	request = &DescribeLiveStreamHistoryUserNumRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamHistoryUserNum", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamHistoryUserNumResponse creates a response to parse from DescribeLiveStreamHistoryUserNum response
+func CreateDescribeLiveStreamHistoryUserNumResponse() (response *DescribeLiveStreamHistoryUserNumResponse) {
+	response = &DescribeLiveStreamHistoryUserNumResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/live/describe_live_stream_online_user_num.go

@@ -0,0 +1,112 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamOnlineUserNum invokes the live.DescribeLiveStreamOnlineUserNum API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamonlineusernum.html
+func (client *Client) DescribeLiveStreamOnlineUserNum(request *DescribeLiveStreamOnlineUserNumRequest) (response *DescribeLiveStreamOnlineUserNumResponse, err error) {
+	response = CreateDescribeLiveStreamOnlineUserNumResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamOnlineUserNumWithChan invokes the live.DescribeLiveStreamOnlineUserNum API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamonlineusernum.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamOnlineUserNumWithChan(request *DescribeLiveStreamOnlineUserNumRequest) (<-chan *DescribeLiveStreamOnlineUserNumResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamOnlineUserNumResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamOnlineUserNum(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamOnlineUserNumWithCallback invokes the live.DescribeLiveStreamOnlineUserNum API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamonlineusernum.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamOnlineUserNumWithCallback(request *DescribeLiveStreamOnlineUserNumRequest, callback func(response *DescribeLiveStreamOnlineUserNumResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamOnlineUserNumResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamOnlineUserNum(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamOnlineUserNumRequest is the request struct for api DescribeLiveStreamOnlineUserNum
+type DescribeLiveStreamOnlineUserNumRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	HlsSwitch     string           `position:"Query" name:"HlsSwitch"`
+	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"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// DescribeLiveStreamOnlineUserNumResponse is the response struct for api DescribeLiveStreamOnlineUserNum
+type DescribeLiveStreamOnlineUserNumResponse struct {
+	*responses.BaseResponse
+	RequestId       string         `json:"RequestId" xml:"RequestId"`
+	TotalUserNumber int            `json:"TotalUserNumber" xml:"TotalUserNumber"`
+	OnlineUserInfo  OnlineUserInfo `json:"OnlineUserInfo" xml:"OnlineUserInfo"`
+}
+
+// CreateDescribeLiveStreamOnlineUserNumRequest creates a request to invoke DescribeLiveStreamOnlineUserNum API
+func CreateDescribeLiveStreamOnlineUserNumRequest() (request *DescribeLiveStreamOnlineUserNumRequest) {
+	request = &DescribeLiveStreamOnlineUserNumRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamOnlineUserNum", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamOnlineUserNumResponse creates a response to parse from DescribeLiveStreamOnlineUserNum response
+func CreateDescribeLiveStreamOnlineUserNumResponse() (response *DescribeLiveStreamOnlineUserNumResponse) {
+	response = &DescribeLiveStreamOnlineUserNumResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/live/describe_live_stream_record_content.go

@@ -0,0 +1,110 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamRecordContent invokes the live.DescribeLiveStreamRecordContent API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamrecordcontent.html
+func (client *Client) DescribeLiveStreamRecordContent(request *DescribeLiveStreamRecordContentRequest) (response *DescribeLiveStreamRecordContentResponse, err error) {
+	response = CreateDescribeLiveStreamRecordContentResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamRecordContentWithChan invokes the live.DescribeLiveStreamRecordContent API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamrecordcontent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamRecordContentWithChan(request *DescribeLiveStreamRecordContentRequest) (<-chan *DescribeLiveStreamRecordContentResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamRecordContentResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamRecordContent(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamRecordContentWithCallback invokes the live.DescribeLiveStreamRecordContent API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamrecordcontent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamRecordContentWithCallback(request *DescribeLiveStreamRecordContentRequest, callback func(response *DescribeLiveStreamRecordContentResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamRecordContentResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamRecordContent(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamRecordContentRequest is the request struct for api DescribeLiveStreamRecordContent
+type DescribeLiveStreamRecordContentRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	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"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// DescribeLiveStreamRecordContentResponse is the response struct for api DescribeLiveStreamRecordContent
+type DescribeLiveStreamRecordContentResponse struct {
+	*responses.BaseResponse
+	RequestId             string                `json:"RequestId" xml:"RequestId"`
+	RecordContentInfoList RecordContentInfoList `json:"RecordContentInfoList" xml:"RecordContentInfoList"`
+}
+
+// CreateDescribeLiveStreamRecordContentRequest creates a request to invoke DescribeLiveStreamRecordContent API
+func CreateDescribeLiveStreamRecordContentRequest() (request *DescribeLiveStreamRecordContentRequest) {
+	request = &DescribeLiveStreamRecordContentRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamRecordContent", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamRecordContentResponse creates a response to parse from DescribeLiveStreamRecordContent response
+func CreateDescribeLiveStreamRecordContentResponse() (response *DescribeLiveStreamRecordContentResponse) {
+	response = &DescribeLiveStreamRecordContentResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/live/describe_live_stream_record_index_file.go

@@ -0,0 +1,109 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamRecordIndexFile invokes the live.DescribeLiveStreamRecordIndexFile API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamrecordindexfile.html
+func (client *Client) DescribeLiveStreamRecordIndexFile(request *DescribeLiveStreamRecordIndexFileRequest) (response *DescribeLiveStreamRecordIndexFileResponse, err error) {
+	response = CreateDescribeLiveStreamRecordIndexFileResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamRecordIndexFileWithChan invokes the live.DescribeLiveStreamRecordIndexFile API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamrecordindexfile.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamRecordIndexFileWithChan(request *DescribeLiveStreamRecordIndexFileRequest) (<-chan *DescribeLiveStreamRecordIndexFileResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamRecordIndexFileResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamRecordIndexFile(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamRecordIndexFileWithCallback invokes the live.DescribeLiveStreamRecordIndexFile API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamrecordindexfile.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamRecordIndexFileWithCallback(request *DescribeLiveStreamRecordIndexFileRequest, callback func(response *DescribeLiveStreamRecordIndexFileResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamRecordIndexFileResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamRecordIndexFile(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamRecordIndexFileRequest is the request struct for api DescribeLiveStreamRecordIndexFile
+type DescribeLiveStreamRecordIndexFileRequest struct {
+	*requests.RpcRequest
+	RecordId      string           `position:"Query" name:"RecordId"`
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// DescribeLiveStreamRecordIndexFileResponse is the response struct for api DescribeLiveStreamRecordIndexFile
+type DescribeLiveStreamRecordIndexFileResponse struct {
+	*responses.BaseResponse
+	RequestId       string          `json:"RequestId" xml:"RequestId"`
+	RecordIndexInfo RecordIndexInfo `json:"RecordIndexInfo" xml:"RecordIndexInfo"`
+}
+
+// CreateDescribeLiveStreamRecordIndexFileRequest creates a request to invoke DescribeLiveStreamRecordIndexFile API
+func CreateDescribeLiveStreamRecordIndexFileRequest() (request *DescribeLiveStreamRecordIndexFileRequest) {
+	request = &DescribeLiveStreamRecordIndexFileRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamRecordIndexFile", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamRecordIndexFileResponse creates a response to parse from DescribeLiveStreamRecordIndexFile response
+func CreateDescribeLiveStreamRecordIndexFileResponse() (response *DescribeLiveStreamRecordIndexFileResponse) {
+	response = &DescribeLiveStreamRecordIndexFileResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/live/describe_live_stream_record_index_files.go

@@ -0,0 +1,118 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamRecordIndexFiles invokes the live.DescribeLiveStreamRecordIndexFiles API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamrecordindexfiles.html
+func (client *Client) DescribeLiveStreamRecordIndexFiles(request *DescribeLiveStreamRecordIndexFilesRequest) (response *DescribeLiveStreamRecordIndexFilesResponse, err error) {
+	response = CreateDescribeLiveStreamRecordIndexFilesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamRecordIndexFilesWithChan invokes the live.DescribeLiveStreamRecordIndexFiles API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamrecordindexfiles.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamRecordIndexFilesWithChan(request *DescribeLiveStreamRecordIndexFilesRequest) (<-chan *DescribeLiveStreamRecordIndexFilesResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamRecordIndexFilesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamRecordIndexFiles(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamRecordIndexFilesWithCallback invokes the live.DescribeLiveStreamRecordIndexFiles API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamrecordindexfiles.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamRecordIndexFilesWithCallback(request *DescribeLiveStreamRecordIndexFilesRequest, callback func(response *DescribeLiveStreamRecordIndexFilesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamRecordIndexFilesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamRecordIndexFiles(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamRecordIndexFilesRequest is the request struct for api DescribeLiveStreamRecordIndexFiles
+type DescribeLiveStreamRecordIndexFilesRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	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       requests.Integer `position:"Query" name:"OwnerId"`
+	PageNum       requests.Integer `position:"Query" name:"PageNum"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+	Order         string           `position:"Query" name:"Order"`
+}
+
+// DescribeLiveStreamRecordIndexFilesResponse is the response struct for api DescribeLiveStreamRecordIndexFiles
+type DescribeLiveStreamRecordIndexFilesResponse struct {
+	*responses.BaseResponse
+	RequestId           string              `json:"RequestId" xml:"RequestId"`
+	PageNum             int                 `json:"PageNum" xml:"PageNum"`
+	PageSize            int                 `json:"PageSize" xml:"PageSize"`
+	Order               string              `json:"Order" xml:"Order"`
+	TotalNum            int                 `json:"TotalNum" xml:"TotalNum"`
+	TotalPage           int                 `json:"TotalPage" xml:"TotalPage"`
+	RecordIndexInfoList RecordIndexInfoList `json:"RecordIndexInfoList" xml:"RecordIndexInfoList"`
+}
+
+// CreateDescribeLiveStreamRecordIndexFilesRequest creates a request to invoke DescribeLiveStreamRecordIndexFiles API
+func CreateDescribeLiveStreamRecordIndexFilesRequest() (request *DescribeLiveStreamRecordIndexFilesRequest) {
+	request = &DescribeLiveStreamRecordIndexFilesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamRecordIndexFiles", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamRecordIndexFilesResponse creates a response to parse from DescribeLiveStreamRecordIndexFiles response
+func CreateDescribeLiveStreamRecordIndexFilesResponse() (response *DescribeLiveStreamRecordIndexFilesResponse) {
+	response = &DescribeLiveStreamRecordIndexFilesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/live/describe_live_stream_snapshot_info.go

@@ -0,0 +1,113 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamSnapshotInfo invokes the live.DescribeLiveStreamSnapshotInfo API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsnapshotinfo.html
+func (client *Client) DescribeLiveStreamSnapshotInfo(request *DescribeLiveStreamSnapshotInfoRequest) (response *DescribeLiveStreamSnapshotInfoResponse, err error) {
+	response = CreateDescribeLiveStreamSnapshotInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamSnapshotInfoWithChan invokes the live.DescribeLiveStreamSnapshotInfo API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsnapshotinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamSnapshotInfoWithChan(request *DescribeLiveStreamSnapshotInfoRequest) (<-chan *DescribeLiveStreamSnapshotInfoResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamSnapshotInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamSnapshotInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamSnapshotInfoWithCallback invokes the live.DescribeLiveStreamSnapshotInfo API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsnapshotinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamSnapshotInfoWithCallback(request *DescribeLiveStreamSnapshotInfoRequest, callback func(response *DescribeLiveStreamSnapshotInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamSnapshotInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamSnapshotInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamSnapshotInfoRequest is the request struct for api DescribeLiveStreamSnapshotInfo
+type DescribeLiveStreamSnapshotInfoRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	Limit         requests.Integer `position:"Query" name:"Limit"`
+	EndTime       string           `position:"Query" name:"EndTime"`
+	StartTime     string           `position:"Query" name:"StartTime"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+	Order         string           `position:"Query" name:"Order"`
+}
+
+// DescribeLiveStreamSnapshotInfoResponse is the response struct for api DescribeLiveStreamSnapshotInfo
+type DescribeLiveStreamSnapshotInfoResponse struct {
+	*responses.BaseResponse
+	RequestId                  string                     `json:"RequestId" xml:"RequestId"`
+	NextStartTime              string                     `json:"NextStartTime" xml:"NextStartTime"`
+	LiveStreamSnapshotInfoList LiveStreamSnapshotInfoList `json:"LiveStreamSnapshotInfoList" xml:"LiveStreamSnapshotInfoList"`
+}
+
+// CreateDescribeLiveStreamSnapshotInfoRequest creates a request to invoke DescribeLiveStreamSnapshotInfo API
+func CreateDescribeLiveStreamSnapshotInfoRequest() (request *DescribeLiveStreamSnapshotInfoRequest) {
+	request = &DescribeLiveStreamSnapshotInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamSnapshotInfo", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamSnapshotInfoResponse creates a response to parse from DescribeLiveStreamSnapshotInfo response
+func CreateDescribeLiveStreamSnapshotInfoResponse() (response *DescribeLiveStreamSnapshotInfoResponse) {
+	response = &DescribeLiveStreamSnapshotInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/describe_live_stream_transcode_info.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamTranscodeInfo invokes the live.DescribeLiveStreamTranscodeInfo API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamtranscodeinfo.html
+func (client *Client) DescribeLiveStreamTranscodeInfo(request *DescribeLiveStreamTranscodeInfoRequest) (response *DescribeLiveStreamTranscodeInfoResponse, err error) {
+	response = CreateDescribeLiveStreamTranscodeInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamTranscodeInfoWithChan invokes the live.DescribeLiveStreamTranscodeInfo API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamtranscodeinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamTranscodeInfoWithChan(request *DescribeLiveStreamTranscodeInfoRequest) (<-chan *DescribeLiveStreamTranscodeInfoResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamTranscodeInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamTranscodeInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamTranscodeInfoWithCallback invokes the live.DescribeLiveStreamTranscodeInfo API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamtranscodeinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamTranscodeInfoWithCallback(request *DescribeLiveStreamTranscodeInfoRequest, callback func(response *DescribeLiveStreamTranscodeInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamTranscodeInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamTranscodeInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamTranscodeInfoRequest is the request struct for api DescribeLiveStreamTranscodeInfo
+type DescribeLiveStreamTranscodeInfoRequest struct {
+	*requests.RpcRequest
+	SecurityToken       string           `position:"Query" name:"SecurityToken"`
+	OwnerId             requests.Integer `position:"Query" name:"OwnerId"`
+	DomainTranscodeName string           `position:"Query" name:"DomainTranscodeName"`
+}
+
+// DescribeLiveStreamTranscodeInfoResponse is the response struct for api DescribeLiveStreamTranscodeInfo
+type DescribeLiveStreamTranscodeInfoResponse struct {
+	*responses.BaseResponse
+	RequestId           string              `json:"RequestId" xml:"RequestId"`
+	DomainTranscodeList DomainTranscodeList `json:"DomainTranscodeList" xml:"DomainTranscodeList"`
+}
+
+// CreateDescribeLiveStreamTranscodeInfoRequest creates a request to invoke DescribeLiveStreamTranscodeInfo API
+func CreateDescribeLiveStreamTranscodeInfoRequest() (request *DescribeLiveStreamTranscodeInfoRequest) {
+	request = &DescribeLiveStreamTranscodeInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamTranscodeInfo", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamTranscodeInfoResponse creates a response to parse from DescribeLiveStreamTranscodeInfo response
+func CreateDescribeLiveStreamTranscodeInfoResponse() (response *DescribeLiveStreamTranscodeInfoResponse) {
+	response = &DescribeLiveStreamTranscodeInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/live/describe_live_streams_block_list.go

@@ -0,0 +1,113 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamsBlockList invokes the live.DescribeLiveStreamsBlockList API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsblocklist.html
+func (client *Client) DescribeLiveStreamsBlockList(request *DescribeLiveStreamsBlockListRequest) (response *DescribeLiveStreamsBlockListResponse, err error) {
+	response = CreateDescribeLiveStreamsBlockListResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamsBlockListWithChan invokes the live.DescribeLiveStreamsBlockList API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsblocklist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsBlockListWithChan(request *DescribeLiveStreamsBlockListRequest) (<-chan *DescribeLiveStreamsBlockListResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamsBlockListResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamsBlockList(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamsBlockListWithCallback invokes the live.DescribeLiveStreamsBlockList API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsblocklist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsBlockListWithCallback(request *DescribeLiveStreamsBlockListRequest, callback func(response *DescribeLiveStreamsBlockListResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamsBlockListResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamsBlockList(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamsBlockListRequest is the request struct for api DescribeLiveStreamsBlockList
+type DescribeLiveStreamsBlockListRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	PageSize      requests.Integer `position:"Query" name:"PageSize"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	PageNum       requests.Integer `position:"Query" name:"PageNum"`
+}
+
+// DescribeLiveStreamsBlockListResponse is the response struct for api DescribeLiveStreamsBlockList
+type DescribeLiveStreamsBlockListResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	DomainName string     `json:"DomainName" xml:"DomainName"`
+	PageNum    int        `json:"PageNum" xml:"PageNum"`
+	PageSize   int        `json:"PageSize" xml:"PageSize"`
+	TotalNum   int        `json:"TotalNum" xml:"TotalNum"`
+	TotalPage  int        `json:"TotalPage" xml:"TotalPage"`
+	StreamUrls StreamUrls `json:"StreamUrls" xml:"StreamUrls"`
+}
+
+// CreateDescribeLiveStreamsBlockListRequest creates a request to invoke DescribeLiveStreamsBlockList API
+func CreateDescribeLiveStreamsBlockListRequest() (request *DescribeLiveStreamsBlockListRequest) {
+	request = &DescribeLiveStreamsBlockListRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamsBlockList", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamsBlockListResponse creates a response to parse from DescribeLiveStreamsBlockList response
+func CreateDescribeLiveStreamsBlockListResponse() (response *DescribeLiveStreamsBlockListResponse) {
+	response = &DescribeLiveStreamsBlockListResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/live/describe_live_streams_control_history.go

@@ -0,0 +1,109 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamsControlHistory invokes the live.DescribeLiveStreamsControlHistory API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamscontrolhistory.html
+func (client *Client) DescribeLiveStreamsControlHistory(request *DescribeLiveStreamsControlHistoryRequest) (response *DescribeLiveStreamsControlHistoryResponse, err error) {
+	response = CreateDescribeLiveStreamsControlHistoryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamsControlHistoryWithChan invokes the live.DescribeLiveStreamsControlHistory API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamscontrolhistory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsControlHistoryWithChan(request *DescribeLiveStreamsControlHistoryRequest) (<-chan *DescribeLiveStreamsControlHistoryResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamsControlHistoryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamsControlHistory(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamsControlHistoryWithCallback invokes the live.DescribeLiveStreamsControlHistory API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamscontrolhistory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsControlHistoryWithCallback(request *DescribeLiveStreamsControlHistoryRequest, callback func(response *DescribeLiveStreamsControlHistoryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamsControlHistoryResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamsControlHistory(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamsControlHistoryRequest is the request struct for api DescribeLiveStreamsControlHistory
+type DescribeLiveStreamsControlHistoryRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	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"`
+}
+
+// DescribeLiveStreamsControlHistoryResponse is the response struct for api DescribeLiveStreamsControlHistory
+type DescribeLiveStreamsControlHistoryResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	ControlInfo ControlInfo `json:"ControlInfo" xml:"ControlInfo"`
+}
+
+// CreateDescribeLiveStreamsControlHistoryRequest creates a request to invoke DescribeLiveStreamsControlHistory API
+func CreateDescribeLiveStreamsControlHistoryRequest() (request *DescribeLiveStreamsControlHistoryRequest) {
+	request = &DescribeLiveStreamsControlHistoryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamsControlHistory", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamsControlHistoryResponse creates a response to parse from DescribeLiveStreamsControlHistory response
+func CreateDescribeLiveStreamsControlHistoryResponse() (response *DescribeLiveStreamsControlHistoryResponse) {
+	response = &DescribeLiveStreamsControlHistoryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/live/describe_live_streams_frame_rate_and_bit_rate_data.go

@@ -0,0 +1,110 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamsFrameRateAndBitRateData invokes the live.DescribeLiveStreamsFrameRateAndBitRateData API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsframerateandbitratedata.html
+func (client *Client) DescribeLiveStreamsFrameRateAndBitRateData(request *DescribeLiveStreamsFrameRateAndBitRateDataRequest) (response *DescribeLiveStreamsFrameRateAndBitRateDataResponse, err error) {
+	response = CreateDescribeLiveStreamsFrameRateAndBitRateDataResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamsFrameRateAndBitRateDataWithChan invokes the live.DescribeLiveStreamsFrameRateAndBitRateData API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsframerateandbitratedata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsFrameRateAndBitRateDataWithChan(request *DescribeLiveStreamsFrameRateAndBitRateDataRequest) (<-chan *DescribeLiveStreamsFrameRateAndBitRateDataResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamsFrameRateAndBitRateDataResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamsFrameRateAndBitRateData(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamsFrameRateAndBitRateDataWithCallback invokes the live.DescribeLiveStreamsFrameRateAndBitRateData API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsframerateandbitratedata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsFrameRateAndBitRateDataWithCallback(request *DescribeLiveStreamsFrameRateAndBitRateDataRequest, callback func(response *DescribeLiveStreamsFrameRateAndBitRateDataResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamsFrameRateAndBitRateDataResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamsFrameRateAndBitRateData(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamsFrameRateAndBitRateDataRequest is the request struct for api DescribeLiveStreamsFrameRateAndBitRateData
+type DescribeLiveStreamsFrameRateAndBitRateDataRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	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"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// DescribeLiveStreamsFrameRateAndBitRateDataResponse is the response struct for api DescribeLiveStreamsFrameRateAndBitRateData
+type DescribeLiveStreamsFrameRateAndBitRateDataResponse struct {
+	*responses.BaseResponse
+	RequestId                string                                                               `json:"RequestId" xml:"RequestId"`
+	FrameRateAndBitRateInfos FrameRateAndBitRateInfosInDescribeLiveStreamsFrameRateAndBitRateData `json:"FrameRateAndBitRateInfos" xml:"FrameRateAndBitRateInfos"`
+}
+
+// CreateDescribeLiveStreamsFrameRateAndBitRateDataRequest creates a request to invoke DescribeLiveStreamsFrameRateAndBitRateData API
+func CreateDescribeLiveStreamsFrameRateAndBitRateDataRequest() (request *DescribeLiveStreamsFrameRateAndBitRateDataRequest) {
+	request = &DescribeLiveStreamsFrameRateAndBitRateDataRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamsFrameRateAndBitRateData", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamsFrameRateAndBitRateDataResponse creates a response to parse from DescribeLiveStreamsFrameRateAndBitRateData response
+func CreateDescribeLiveStreamsFrameRateAndBitRateDataResponse() (response *DescribeLiveStreamsFrameRateAndBitRateDataResponse) {
+	response = &DescribeLiveStreamsFrameRateAndBitRateDataResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/describe_live_streams_notify_url_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamsNotifyUrlConfig invokes the live.DescribeLiveStreamsNotifyUrlConfig API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsnotifyurlconfig.html
+func (client *Client) DescribeLiveStreamsNotifyUrlConfig(request *DescribeLiveStreamsNotifyUrlConfigRequest) (response *DescribeLiveStreamsNotifyUrlConfigResponse, err error) {
+	response = CreateDescribeLiveStreamsNotifyUrlConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamsNotifyUrlConfigWithChan invokes the live.DescribeLiveStreamsNotifyUrlConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsnotifyurlconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsNotifyUrlConfigWithChan(request *DescribeLiveStreamsNotifyUrlConfigRequest) (<-chan *DescribeLiveStreamsNotifyUrlConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamsNotifyUrlConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamsNotifyUrlConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamsNotifyUrlConfigWithCallback invokes the live.DescribeLiveStreamsNotifyUrlConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsnotifyurlconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsNotifyUrlConfigWithCallback(request *DescribeLiveStreamsNotifyUrlConfigRequest, callback func(response *DescribeLiveStreamsNotifyUrlConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamsNotifyUrlConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamsNotifyUrlConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamsNotifyUrlConfigRequest is the request struct for api DescribeLiveStreamsNotifyUrlConfig
+type DescribeLiveStreamsNotifyUrlConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeLiveStreamsNotifyUrlConfigResponse is the response struct for api DescribeLiveStreamsNotifyUrlConfig
+type DescribeLiveStreamsNotifyUrlConfigResponse struct {
+	*responses.BaseResponse
+	RequestId               string                  `json:"RequestId" xml:"RequestId"`
+	LiveStreamsNotifyConfig LiveStreamsNotifyConfig `json:"LiveStreamsNotifyConfig" xml:"LiveStreamsNotifyConfig"`
+}
+
+// CreateDescribeLiveStreamsNotifyUrlConfigRequest creates a request to invoke DescribeLiveStreamsNotifyUrlConfig API
+func CreateDescribeLiveStreamsNotifyUrlConfigRequest() (request *DescribeLiveStreamsNotifyUrlConfigRequest) {
+	request = &DescribeLiveStreamsNotifyUrlConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamsNotifyUrlConfig", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamsNotifyUrlConfigResponse creates a response to parse from DescribeLiveStreamsNotifyUrlConfig response
+func CreateDescribeLiveStreamsNotifyUrlConfigResponse() (response *DescribeLiveStreamsNotifyUrlConfigResponse) {
+	response = &DescribeLiveStreamsNotifyUrlConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 117 - 0
services/live/describe_live_streams_online_list.go

@@ -0,0 +1,117 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamsOnlineList invokes the live.DescribeLiveStreamsOnlineList API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsonlinelist.html
+func (client *Client) DescribeLiveStreamsOnlineList(request *DescribeLiveStreamsOnlineListRequest) (response *DescribeLiveStreamsOnlineListResponse, err error) {
+	response = CreateDescribeLiveStreamsOnlineListResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamsOnlineListWithChan invokes the live.DescribeLiveStreamsOnlineList API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsonlinelist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsOnlineListWithChan(request *DescribeLiveStreamsOnlineListRequest) (<-chan *DescribeLiveStreamsOnlineListResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamsOnlineListResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamsOnlineList(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamsOnlineListWithCallback invokes the live.DescribeLiveStreamsOnlineList API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamsonlinelist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsOnlineListWithCallback(request *DescribeLiveStreamsOnlineListRequest, callback func(response *DescribeLiveStreamsOnlineListResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamsOnlineListResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamsOnlineList(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamsOnlineListRequest is the request struct for api DescribeLiveStreamsOnlineList
+type DescribeLiveStreamsOnlineListRequest struct {
+	*requests.RpcRequest
+	StreamType    string           `position:"Query" name:"StreamType"`
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	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       requests.Integer `position:"Query" name:"OwnerId"`
+	PageNum       requests.Integer `position:"Query" name:"PageNum"`
+	QueryType     string           `position:"Query" name:"QueryType"`
+}
+
+// DescribeLiveStreamsOnlineListResponse is the response struct for api DescribeLiveStreamsOnlineList
+type DescribeLiveStreamsOnlineListResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	PageNum    int        `json:"PageNum" xml:"PageNum"`
+	PageSize   int        `json:"PageSize" xml:"PageSize"`
+	TotalNum   int        `json:"TotalNum" xml:"TotalNum"`
+	TotalPage  int        `json:"TotalPage" xml:"TotalPage"`
+	OnlineInfo OnlineInfo `json:"OnlineInfo" xml:"OnlineInfo"`
+}
+
+// CreateDescribeLiveStreamsOnlineListRequest creates a request to invoke DescribeLiveStreamsOnlineList API
+func CreateDescribeLiveStreamsOnlineListRequest() (request *DescribeLiveStreamsOnlineListRequest) {
+	request = &DescribeLiveStreamsOnlineListRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamsOnlineList", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamsOnlineListResponse creates a response to parse from DescribeLiveStreamsOnlineList response
+func CreateDescribeLiveStreamsOnlineListResponse() (response *DescribeLiveStreamsOnlineListResponse) {
+	response = &DescribeLiveStreamsOnlineListResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/live/describe_live_streams_publish_list.go

@@ -0,0 +1,118 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// DescribeLiveStreamsPublishList invokes the live.DescribeLiveStreamsPublishList API synchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamspublishlist.html
+func (client *Client) DescribeLiveStreamsPublishList(request *DescribeLiveStreamsPublishListRequest) (response *DescribeLiveStreamsPublishListResponse, err error) {
+	response = CreateDescribeLiveStreamsPublishListResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeLiveStreamsPublishListWithChan invokes the live.DescribeLiveStreamsPublishList API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamspublishlist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsPublishListWithChan(request *DescribeLiveStreamsPublishListRequest) (<-chan *DescribeLiveStreamsPublishListResponse, <-chan error) {
+	responseChan := make(chan *DescribeLiveStreamsPublishListResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeLiveStreamsPublishList(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeLiveStreamsPublishListWithCallback invokes the live.DescribeLiveStreamsPublishList API asynchronously
+// api document: https://help.aliyun.com/api/live/describelivestreamspublishlist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeLiveStreamsPublishListWithCallback(request *DescribeLiveStreamsPublishListRequest, callback func(response *DescribeLiveStreamsPublishListResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeLiveStreamsPublishListResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeLiveStreamsPublishList(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeLiveStreamsPublishListRequest is the request struct for api DescribeLiveStreamsPublishList
+type DescribeLiveStreamsPublishListRequest struct {
+	*requests.RpcRequest
+	StreamType    string           `position:"Query" name:"StreamType"`
+	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"`
+	PageNumber    requests.Integer `position:"Query" name:"PageNumber"`
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	PageSize      requests.Integer `position:"Query" name:"PageSize"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+	QueryType     string           `position:"Query" name:"QueryType"`
+}
+
+// DescribeLiveStreamsPublishListResponse is the response struct for api DescribeLiveStreamsPublishList
+type DescribeLiveStreamsPublishListResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	PageNum     int         `json:"PageNum" xml:"PageNum"`
+	PageSize    int         `json:"PageSize" xml:"PageSize"`
+	TotalNum    int         `json:"TotalNum" xml:"TotalNum"`
+	TotalPage   int         `json:"TotalPage" xml:"TotalPage"`
+	PublishInfo PublishInfo `json:"PublishInfo" xml:"PublishInfo"`
+}
+
+// CreateDescribeLiveStreamsPublishListRequest creates a request to invoke DescribeLiveStreamsPublishList API
+func CreateDescribeLiveStreamsPublishListRequest() (request *DescribeLiveStreamsPublishListRequest) {
+	request = &DescribeLiveStreamsPublishListRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "DescribeLiveStreamsPublishList", "live", "openAPI")
+	return
+}
+
+// CreateDescribeLiveStreamsPublishListResponse creates a response to parse from DescribeLiveStreamsPublishList response
+func CreateDescribeLiveStreamsPublishListResponse() (response *DescribeLiveStreamsPublishListResponse) {
+	response = &DescribeLiveStreamsPublishListResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/live/effect_caster_urgent.go

@@ -0,0 +1,105 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// EffectCasterUrgent invokes the live.EffectCasterUrgent API synchronously
+// api document: https://help.aliyun.com/api/live/effectcasterurgent.html
+func (client *Client) EffectCasterUrgent(request *EffectCasterUrgentRequest) (response *EffectCasterUrgentResponse, err error) {
+	response = CreateEffectCasterUrgentResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// EffectCasterUrgentWithChan invokes the live.EffectCasterUrgent API asynchronously
+// api document: https://help.aliyun.com/api/live/effectcasterurgent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) EffectCasterUrgentWithChan(request *EffectCasterUrgentRequest) (<-chan *EffectCasterUrgentResponse, <-chan error) {
+	responseChan := make(chan *EffectCasterUrgentResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.EffectCasterUrgent(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// EffectCasterUrgentWithCallback invokes the live.EffectCasterUrgent API asynchronously
+// api document: https://help.aliyun.com/api/live/effectcasterurgent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) EffectCasterUrgentWithCallback(request *EffectCasterUrgentRequest, callback func(response *EffectCasterUrgentResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *EffectCasterUrgentResponse
+		var err error
+		defer close(result)
+		response, err = client.EffectCasterUrgent(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// EffectCasterUrgentRequest is the request struct for api EffectCasterUrgent
+type EffectCasterUrgentRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	SceneId  string           `position:"Query" name:"SceneId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// EffectCasterUrgentResponse is the response struct for api EffectCasterUrgent
+type EffectCasterUrgentResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateEffectCasterUrgentRequest creates a request to invoke EffectCasterUrgent API
+func CreateEffectCasterUrgentRequest() (request *EffectCasterUrgentRequest) {
+	request = &EffectCasterUrgentRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "EffectCasterUrgent", "live", "openAPI")
+	return
+}
+
+// CreateEffectCasterUrgentResponse creates a response to parse from EffectCasterUrgent response
+func CreateEffectCasterUrgentResponse() (response *EffectCasterUrgentResponse) {
+	response = &EffectCasterUrgentResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/effect_caster_video_resource.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// EffectCasterVideoResource invokes the live.EffectCasterVideoResource API synchronously
+// api document: https://help.aliyun.com/api/live/effectcastervideoresource.html
+func (client *Client) EffectCasterVideoResource(request *EffectCasterVideoResourceRequest) (response *EffectCasterVideoResourceResponse, err error) {
+	response = CreateEffectCasterVideoResourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// EffectCasterVideoResourceWithChan invokes the live.EffectCasterVideoResource API asynchronously
+// api document: https://help.aliyun.com/api/live/effectcastervideoresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) EffectCasterVideoResourceWithChan(request *EffectCasterVideoResourceRequest) (<-chan *EffectCasterVideoResourceResponse, <-chan error) {
+	responseChan := make(chan *EffectCasterVideoResourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.EffectCasterVideoResource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// EffectCasterVideoResourceWithCallback invokes the live.EffectCasterVideoResource API asynchronously
+// api document: https://help.aliyun.com/api/live/effectcastervideoresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) EffectCasterVideoResourceWithCallback(request *EffectCasterVideoResourceRequest, callback func(response *EffectCasterVideoResourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *EffectCasterVideoResourceResponse
+		var err error
+		defer close(result)
+		response, err = client.EffectCasterVideoResource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// EffectCasterVideoResourceRequest is the request struct for api EffectCasterVideoResource
+type EffectCasterVideoResourceRequest struct {
+	*requests.RpcRequest
+	ResourceId string           `position:"Query" name:"ResourceId"`
+	CasterId   string           `position:"Query" name:"CasterId"`
+	SceneId    string           `position:"Query" name:"SceneId"`
+	OwnerId    requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// EffectCasterVideoResourceResponse is the response struct for api EffectCasterVideoResource
+type EffectCasterVideoResourceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateEffectCasterVideoResourceRequest creates a request to invoke EffectCasterVideoResource API
+func CreateEffectCasterVideoResourceRequest() (request *EffectCasterVideoResourceRequest) {
+	request = &EffectCasterVideoResourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "EffectCasterVideoResource", "live", "openAPI")
+	return
+}
+
+// CreateEffectCasterVideoResourceResponse creates a response to parse from EffectCasterVideoResource response
+func CreateEffectCasterVideoResourceResponse() (response *EffectCasterVideoResourceResponse) {
+	response = &EffectCasterVideoResourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/live/forbid_live_stream.go

@@ -0,0 +1,109 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// ForbidLiveStream invokes the live.ForbidLiveStream API synchronously
+// api document: https://help.aliyun.com/api/live/forbidlivestream.html
+func (client *Client) ForbidLiveStream(request *ForbidLiveStreamRequest) (response *ForbidLiveStreamResponse, err error) {
+	response = CreateForbidLiveStreamResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ForbidLiveStreamWithChan invokes the live.ForbidLiveStream API asynchronously
+// api document: https://help.aliyun.com/api/live/forbidlivestream.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ForbidLiveStreamWithChan(request *ForbidLiveStreamRequest) (<-chan *ForbidLiveStreamResponse, <-chan error) {
+	responseChan := make(chan *ForbidLiveStreamResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ForbidLiveStream(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ForbidLiveStreamWithCallback invokes the live.ForbidLiveStream API asynchronously
+// api document: https://help.aliyun.com/api/live/forbidlivestream.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ForbidLiveStreamWithCallback(request *ForbidLiveStreamRequest, callback func(response *ForbidLiveStreamResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ForbidLiveStreamResponse
+		var err error
+		defer close(result)
+		response, err = client.ForbidLiveStream(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ForbidLiveStreamRequest is the request struct for api ForbidLiveStream
+type ForbidLiveStreamRequest struct {
+	*requests.RpcRequest
+	ResumeTime     string           `position:"Query" name:"ResumeTime"`
+	AppName        string           `position:"Query" name:"AppName"`
+	SecurityToken  string           `position:"Query" name:"SecurityToken"`
+	LiveStreamType string           `position:"Query" name:"LiveStreamType"`
+	DomainName     string           `position:"Query" name:"DomainName"`
+	OwnerId        requests.Integer `position:"Query" name:"OwnerId"`
+	StreamName     string           `position:"Query" name:"StreamName"`
+}
+
+// ForbidLiveStreamResponse is the response struct for api ForbidLiveStream
+type ForbidLiveStreamResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateForbidLiveStreamRequest creates a request to invoke ForbidLiveStream API
+func CreateForbidLiveStreamRequest() (request *ForbidLiveStreamRequest) {
+	request = &ForbidLiveStreamRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "ForbidLiveStream", "live", "openAPI")
+	return
+}
+
+// CreateForbidLiveStreamResponse creates a response to parse from ForbidLiveStream response
+func CreateForbidLiveStreamResponse() (response *ForbidLiveStreamResponse) {
+	response = &ForbidLiveStreamResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/image_porn_detection.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// ImagePornDetection invokes the live.ImagePornDetection API synchronously
+// api document: https://help.aliyun.com/api/live/imageporndetection.html
+func (client *Client) ImagePornDetection(request *ImagePornDetectionRequest) (response *ImagePornDetectionResponse, err error) {
+	response = CreateImagePornDetectionResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ImagePornDetectionWithChan invokes the live.ImagePornDetection API asynchronously
+// api document: https://help.aliyun.com/api/live/imageporndetection.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ImagePornDetectionWithChan(request *ImagePornDetectionRequest) (<-chan *ImagePornDetectionResponse, <-chan error) {
+	responseChan := make(chan *ImagePornDetectionResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ImagePornDetection(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ImagePornDetectionWithCallback invokes the live.ImagePornDetection API asynchronously
+// api document: https://help.aliyun.com/api/live/imageporndetection.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ImagePornDetectionWithCallback(request *ImagePornDetectionRequest, callback func(response *ImagePornDetectionResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ImagePornDetectionResponse
+		var err error
+		defer close(result)
+		response, err = client.ImagePornDetection(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ImagePornDetectionRequest is the request struct for api ImagePornDetection
+type ImagePornDetectionRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	ImageUrl      string           `position:"Query" name:"ImageUrl"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// ImagePornDetectionResponse is the response struct for api ImagePornDetection
+type ImagePornDetectionResponse struct {
+	*responses.BaseResponse
+	RequestId string  `json:"RequestId" xml:"RequestId"`
+	Label     string  `json:"Label" xml:"Label"`
+	Rate      float64 `json:"Rate" xml:"Rate"`
+}
+
+// CreateImagePornDetectionRequest creates a request to invoke ImagePornDetection API
+func CreateImagePornDetectionRequest() (request *ImagePornDetectionRequest) {
+	request = &ImagePornDetectionRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "ImagePornDetection", "live", "openAPI")
+	return
+}
+
+// CreateImagePornDetectionResponse creates a response to parse from ImagePornDetection response
+func CreateImagePornDetectionResponse() (response *ImagePornDetectionResponse) {
+	response = &ImagePornDetectionResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/live/modify_caster_component.go

@@ -0,0 +1,113 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// ModifyCasterComponent invokes the live.ModifyCasterComponent API synchronously
+// api document: https://help.aliyun.com/api/live/modifycastercomponent.html
+func (client *Client) ModifyCasterComponent(request *ModifyCasterComponentRequest) (response *ModifyCasterComponentResponse, err error) {
+	response = CreateModifyCasterComponentResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyCasterComponentWithChan invokes the live.ModifyCasterComponent API asynchronously
+// api document: https://help.aliyun.com/api/live/modifycastercomponent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCasterComponentWithChan(request *ModifyCasterComponentRequest) (<-chan *ModifyCasterComponentResponse, <-chan error) {
+	responseChan := make(chan *ModifyCasterComponentResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyCasterComponent(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyCasterComponentWithCallback invokes the live.ModifyCasterComponent API asynchronously
+// api document: https://help.aliyun.com/api/live/modifycastercomponent.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCasterComponentWithCallback(request *ModifyCasterComponentRequest, callback func(response *ModifyCasterComponentResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyCasterComponentResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyCasterComponent(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyCasterComponentRequest is the request struct for api ModifyCasterComponent
+type ModifyCasterComponentRequest struct {
+	*requests.RpcRequest
+	ComponentId         string           `position:"Query" name:"ComponentId"`
+	ComponentType       string           `position:"Query" name:"ComponentType"`
+	ImageLayerContent   string           `position:"Query" name:"ImageLayerContent"`
+	CasterId            string           `position:"Query" name:"CasterId"`
+	Effect              string           `position:"Query" name:"Effect"`
+	ComponentLayer      string           `position:"Query" name:"ComponentLayer"`
+	CaptionLayerContent string           `position:"Query" name:"CaptionLayerContent"`
+	ComponentName       string           `position:"Query" name:"ComponentName"`
+	OwnerId             requests.Integer `position:"Query" name:"OwnerId"`
+	TextLayerContent    string           `position:"Query" name:"TextLayerContent"`
+}
+
+// ModifyCasterComponentResponse is the response struct for api ModifyCasterComponent
+type ModifyCasterComponentResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	ComponentId string `json:"ComponentId" xml:"ComponentId"`
+}
+
+// CreateModifyCasterComponentRequest creates a request to invoke ModifyCasterComponent API
+func CreateModifyCasterComponentRequest() (request *ModifyCasterComponentRequest) {
+	request = &ModifyCasterComponentRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "ModifyCasterComponent", "live", "openAPI")
+	return
+}
+
+// CreateModifyCasterComponentResponse creates a response to parse from ModifyCasterComponent response
+func CreateModifyCasterComponentResponse() (response *ModifyCasterComponentResponse) {
+	response = &ModifyCasterComponentResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/live/modify_caster_episode.go

@@ -0,0 +1,113 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// ModifyCasterEpisode invokes the live.ModifyCasterEpisode API synchronously
+// api document: https://help.aliyun.com/api/live/modifycasterepisode.html
+func (client *Client) ModifyCasterEpisode(request *ModifyCasterEpisodeRequest) (response *ModifyCasterEpisodeResponse, err error) {
+	response = CreateModifyCasterEpisodeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyCasterEpisodeWithChan invokes the live.ModifyCasterEpisode API asynchronously
+// api document: https://help.aliyun.com/api/live/modifycasterepisode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCasterEpisodeWithChan(request *ModifyCasterEpisodeRequest) (<-chan *ModifyCasterEpisodeResponse, <-chan error) {
+	responseChan := make(chan *ModifyCasterEpisodeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyCasterEpisode(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyCasterEpisodeWithCallback invokes the live.ModifyCasterEpisode API asynchronously
+// api document: https://help.aliyun.com/api/live/modifycasterepisode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCasterEpisodeWithCallback(request *ModifyCasterEpisodeRequest, callback func(response *ModifyCasterEpisodeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyCasterEpisodeResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyCasterEpisode(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyCasterEpisodeRequest is the request struct for api ModifyCasterEpisode
+type ModifyCasterEpisodeRequest struct {
+	*requests.RpcRequest
+	ResourceId  string           `position:"Query" name:"ResourceId"`
+	ComponentId *[]string        `position:"Query" name:"ComponentId"  type:"Repeated"`
+	SwitchType  string           `position:"Query" name:"SwitchType"`
+	CasterId    string           `position:"Query" name:"CasterId"`
+	EpisodeName string           `position:"Query" name:"EpisodeName"`
+	EndTime     string           `position:"Query" name:"EndTime"`
+	StartTime   string           `position:"Query" name:"StartTime"`
+	OwnerId     requests.Integer `position:"Query" name:"OwnerId"`
+	EpisodeId   string           `position:"Query" name:"EpisodeId"`
+}
+
+// ModifyCasterEpisodeResponse is the response struct for api ModifyCasterEpisode
+type ModifyCasterEpisodeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CasterId  string `json:"CasterId" xml:"CasterId"`
+	EpisodeId string `json:"EpisodeId" xml:"EpisodeId"`
+}
+
+// CreateModifyCasterEpisodeRequest creates a request to invoke ModifyCasterEpisode API
+func CreateModifyCasterEpisodeRequest() (request *ModifyCasterEpisodeRequest) {
+	request = &ModifyCasterEpisodeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "ModifyCasterEpisode", "live", "openAPI")
+	return
+}
+
+// CreateModifyCasterEpisodeResponse creates a response to parse from ModifyCasterEpisode response
+func CreateModifyCasterEpisodeResponse() (response *ModifyCasterEpisodeResponse) {
+	response = &ModifyCasterEpisodeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 127 - 0
services/live/modify_caster_layout.go

@@ -0,0 +1,127 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// ModifyCasterLayout invokes the live.ModifyCasterLayout API synchronously
+// api document: https://help.aliyun.com/api/live/modifycasterlayout.html
+func (client *Client) ModifyCasterLayout(request *ModifyCasterLayoutRequest) (response *ModifyCasterLayoutResponse, err error) {
+	response = CreateModifyCasterLayoutResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyCasterLayoutWithChan invokes the live.ModifyCasterLayout API asynchronously
+// api document: https://help.aliyun.com/api/live/modifycasterlayout.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCasterLayoutWithChan(request *ModifyCasterLayoutRequest) (<-chan *ModifyCasterLayoutResponse, <-chan error) {
+	responseChan := make(chan *ModifyCasterLayoutResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyCasterLayout(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyCasterLayoutWithCallback invokes the live.ModifyCasterLayout API asynchronously
+// api document: https://help.aliyun.com/api/live/modifycasterlayout.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCasterLayoutWithCallback(request *ModifyCasterLayoutRequest, callback func(response *ModifyCasterLayoutResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyCasterLayoutResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyCasterLayout(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyCasterLayoutRequest is the request struct for api ModifyCasterLayout
+type ModifyCasterLayoutRequest struct {
+	*requests.RpcRequest
+	BlendList  *[]string                       `position:"Query" name:"BlendList"  type:"Repeated"`
+	AudioLayer *[]ModifyCasterLayoutAudioLayer `position:"Query" name:"AudioLayer"  type:"Repeated"`
+	VideoLayer *[]ModifyCasterLayoutVideoLayer `position:"Query" name:"VideoLayer"  type:"Repeated"`
+	CasterId   string                          `position:"Query" name:"CasterId"`
+	MixList    *[]string                       `position:"Query" name:"MixList"  type:"Repeated"`
+	OwnerId    requests.Integer                `position:"Query" name:"OwnerId"`
+	LayoutId   string                          `position:"Query" name:"LayoutId"`
+}
+
+// ModifyCasterLayoutAudioLayer is a repeated param struct in ModifyCasterLayoutRequest
+type ModifyCasterLayoutAudioLayer struct {
+	VolumeRate         string `name:"VolumeRate"`
+	ValidChannel       string `name:"ValidChannel"`
+	FixedDelayDuration string `name:"FixedDelayDuration"`
+}
+
+// ModifyCasterLayoutVideoLayer is a repeated param struct in ModifyCasterLayoutRequest
+type ModifyCasterLayoutVideoLayer struct {
+	FillMode           string            `name:"FillMode"`
+	HeightNormalized   string            `name:"HeightNormalized"`
+	WidthNormalized    string            `name:"WidthNormalized"`
+	PositionRefer      string            `name:"PositionRefer"`
+	PositionNormalized *[]requests.Float `name:"PositionNormalized" type:"Repeated"`
+	FixedDelayDuration string            `name:"FixedDelayDuration"`
+}
+
+// ModifyCasterLayoutResponse is the response struct for api ModifyCasterLayout
+type ModifyCasterLayoutResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	LayoutId  string `json:"LayoutId" xml:"LayoutId"`
+}
+
+// CreateModifyCasterLayoutRequest creates a request to invoke ModifyCasterLayout API
+func CreateModifyCasterLayoutRequest() (request *ModifyCasterLayoutRequest) {
+	request = &ModifyCasterLayoutRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "ModifyCasterLayout", "live", "openAPI")
+	return
+}
+
+// CreateModifyCasterLayoutResponse creates a response to parse from ModifyCasterLayout response
+func CreateModifyCasterLayoutResponse() (response *ModifyCasterLayoutResponse) {
+	response = &ModifyCasterLayoutResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/live/modify_caster_program.go

@@ -0,0 +1,118 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// ModifyCasterProgram invokes the live.ModifyCasterProgram API synchronously
+// api document: https://help.aliyun.com/api/live/modifycasterprogram.html
+func (client *Client) ModifyCasterProgram(request *ModifyCasterProgramRequest) (response *ModifyCasterProgramResponse, err error) {
+	response = CreateModifyCasterProgramResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyCasterProgramWithChan invokes the live.ModifyCasterProgram API asynchronously
+// api document: https://help.aliyun.com/api/live/modifycasterprogram.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCasterProgramWithChan(request *ModifyCasterProgramRequest) (<-chan *ModifyCasterProgramResponse, <-chan error) {
+	responseChan := make(chan *ModifyCasterProgramResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyCasterProgram(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyCasterProgramWithCallback invokes the live.ModifyCasterProgram API asynchronously
+// api document: https://help.aliyun.com/api/live/modifycasterprogram.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCasterProgramWithCallback(request *ModifyCasterProgramRequest, callback func(response *ModifyCasterProgramResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyCasterProgramResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyCasterProgram(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyCasterProgramRequest is the request struct for api ModifyCasterProgram
+type ModifyCasterProgramRequest struct {
+	*requests.RpcRequest
+	CasterId string                        `position:"Query" name:"CasterId"`
+	Episode  *[]ModifyCasterProgramEpisode `position:"Query" name:"Episode"  type:"Repeated"`
+	OwnerId  requests.Integer              `position:"Query" name:"OwnerId"`
+}
+
+// ModifyCasterProgramEpisode is a repeated param struct in ModifyCasterProgramRequest
+type ModifyCasterProgramEpisode struct {
+	EpisodeId   string    `name:"EpisodeId"`
+	EpisodeType string    `name:"EpisodeType"`
+	EpisodeName string    `name:"EpisodeName"`
+	ResourceId  string    `name:"ResourceId"`
+	ComponentId *[]string `name:"ComponentId" type:"Repeated"`
+	StartTime   string    `name:"StartTime"`
+	EndTime     string    `name:"EndTime"`
+	SwitchType  string    `name:"SwitchType"`
+}
+
+// ModifyCasterProgramResponse is the response struct for api ModifyCasterProgram
+type ModifyCasterProgramResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CasterId  string `json:"CasterId" xml:"CasterId"`
+}
+
+// CreateModifyCasterProgramRequest creates a request to invoke ModifyCasterProgram API
+func CreateModifyCasterProgramRequest() (request *ModifyCasterProgramRequest) {
+	request = &ModifyCasterProgramRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "ModifyCasterProgram", "live", "openAPI")
+	return
+}
+
+// CreateModifyCasterProgramResponse creates a response to parse from ModifyCasterProgram response
+func CreateModifyCasterProgramResponse() (response *ModifyCasterProgramResponse) {
+	response = &ModifyCasterProgramResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/live/modify_caster_video_resource.go

@@ -0,0 +1,114 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// ModifyCasterVideoResource invokes the live.ModifyCasterVideoResource API synchronously
+// api document: https://help.aliyun.com/api/live/modifycastervideoresource.html
+func (client *Client) ModifyCasterVideoResource(request *ModifyCasterVideoResourceRequest) (response *ModifyCasterVideoResourceResponse, err error) {
+	response = CreateModifyCasterVideoResourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyCasterVideoResourceWithChan invokes the live.ModifyCasterVideoResource API asynchronously
+// api document: https://help.aliyun.com/api/live/modifycastervideoresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCasterVideoResourceWithChan(request *ModifyCasterVideoResourceRequest) (<-chan *ModifyCasterVideoResourceResponse, <-chan error) {
+	responseChan := make(chan *ModifyCasterVideoResourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyCasterVideoResource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyCasterVideoResourceWithCallback invokes the live.ModifyCasterVideoResource API asynchronously
+// api document: https://help.aliyun.com/api/live/modifycastervideoresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCasterVideoResourceWithCallback(request *ModifyCasterVideoResourceRequest, callback func(response *ModifyCasterVideoResourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyCasterVideoResourceResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyCasterVideoResource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyCasterVideoResourceRequest is the request struct for api ModifyCasterVideoResource
+type ModifyCasterVideoResourceRequest struct {
+	*requests.RpcRequest
+	ResourceId    string           `position:"Query" name:"ResourceId"`
+	BeginOffset   requests.Integer `position:"Query" name:"BeginOffset"`
+	VodUrl        string           `position:"Query" name:"VodUrl"`
+	LiveStreamUrl string           `position:"Query" name:"LiveStreamUrl"`
+	CasterId      string           `position:"Query" name:"CasterId"`
+	EndOffset     requests.Integer `position:"Query" name:"EndOffset"`
+	ResourceName  string           `position:"Query" name:"ResourceName"`
+	RepeatNum     requests.Integer `position:"Query" name:"RepeatNum"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	MaterialId    string           `position:"Query" name:"MaterialId"`
+}
+
+// ModifyCasterVideoResourceResponse is the response struct for api ModifyCasterVideoResource
+type ModifyCasterVideoResourceResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	CasterId   string `json:"CasterId" xml:"CasterId"`
+	ResourceId string `json:"ResourceId" xml:"ResourceId"`
+}
+
+// CreateModifyCasterVideoResourceRequest creates a request to invoke ModifyCasterVideoResource API
+func CreateModifyCasterVideoResourceRequest() (request *ModifyCasterVideoResourceRequest) {
+	request = &ModifyCasterVideoResourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "ModifyCasterVideoResource", "live", "openAPI")
+	return
+}
+
+// CreateModifyCasterVideoResourceResponse creates a response to parse from ModifyCasterVideoResource response
+func CreateModifyCasterVideoResourceResponse() (response *ModifyCasterVideoResourceResponse) {
+	response = &ModifyCasterVideoResourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/real_time_record_command.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// RealTimeRecordCommand invokes the live.RealTimeRecordCommand API synchronously
+// api document: https://help.aliyun.com/api/live/realtimerecordcommand.html
+func (client *Client) RealTimeRecordCommand(request *RealTimeRecordCommandRequest) (response *RealTimeRecordCommandResponse, err error) {
+	response = CreateRealTimeRecordCommandResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// RealTimeRecordCommandWithChan invokes the live.RealTimeRecordCommand API asynchronously
+// api document: https://help.aliyun.com/api/live/realtimerecordcommand.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RealTimeRecordCommandWithChan(request *RealTimeRecordCommandRequest) (<-chan *RealTimeRecordCommandResponse, <-chan error) {
+	responseChan := make(chan *RealTimeRecordCommandResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RealTimeRecordCommand(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// RealTimeRecordCommandWithCallback invokes the live.RealTimeRecordCommand API asynchronously
+// api document: https://help.aliyun.com/api/live/realtimerecordcommand.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RealTimeRecordCommandWithCallback(request *RealTimeRecordCommandRequest, callback func(response *RealTimeRecordCommandResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RealTimeRecordCommandResponse
+		var err error
+		defer close(result)
+		response, err = client.RealTimeRecordCommand(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// RealTimeRecordCommandRequest is the request struct for api RealTimeRecordCommand
+type RealTimeRecordCommandRequest struct {
+	*requests.RpcRequest
+	AppName    string           `position:"Query" name:"AppName"`
+	DomainName string           `position:"Query" name:"DomainName"`
+	OwnerId    requests.Integer `position:"Query" name:"OwnerId"`
+	Command    string           `position:"Query" name:"Command"`
+	StreamName string           `position:"Query" name:"StreamName"`
+}
+
+// RealTimeRecordCommandResponse is the response struct for api RealTimeRecordCommand
+type RealTimeRecordCommandResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateRealTimeRecordCommandRequest creates a request to invoke RealTimeRecordCommand API
+func CreateRealTimeRecordCommandRequest() (request *RealTimeRecordCommandRequest) {
+	request = &RealTimeRecordCommandRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "RealTimeRecordCommand", "live", "openAPI")
+	return
+}
+
+// CreateRealTimeRecordCommandResponse creates a response to parse from RealTimeRecordCommand response
+func CreateRealTimeRecordCommandResponse() (response *RealTimeRecordCommandResponse) {
+	response = &RealTimeRecordCommandResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/live/remove_multiple_stream_mix_service.go

@@ -0,0 +1,110 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// RemoveMultipleStreamMixService invokes the live.RemoveMultipleStreamMixService API synchronously
+// api document: https://help.aliyun.com/api/live/removemultiplestreammixservice.html
+func (client *Client) RemoveMultipleStreamMixService(request *RemoveMultipleStreamMixServiceRequest) (response *RemoveMultipleStreamMixServiceResponse, err error) {
+	response = CreateRemoveMultipleStreamMixServiceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// RemoveMultipleStreamMixServiceWithChan invokes the live.RemoveMultipleStreamMixService API asynchronously
+// api document: https://help.aliyun.com/api/live/removemultiplestreammixservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RemoveMultipleStreamMixServiceWithChan(request *RemoveMultipleStreamMixServiceRequest) (<-chan *RemoveMultipleStreamMixServiceResponse, <-chan error) {
+	responseChan := make(chan *RemoveMultipleStreamMixServiceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RemoveMultipleStreamMixService(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// RemoveMultipleStreamMixServiceWithCallback invokes the live.RemoveMultipleStreamMixService API asynchronously
+// api document: https://help.aliyun.com/api/live/removemultiplestreammixservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RemoveMultipleStreamMixServiceWithCallback(request *RemoveMultipleStreamMixServiceRequest, callback func(response *RemoveMultipleStreamMixServiceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RemoveMultipleStreamMixServiceResponse
+		var err error
+		defer close(result)
+		response, err = client.RemoveMultipleStreamMixService(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// RemoveMultipleStreamMixServiceRequest is the request struct for api RemoveMultipleStreamMixService
+type RemoveMultipleStreamMixServiceRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	MixStreamName string           `position:"Query" name:"MixStreamName"`
+	MixDomainName string           `position:"Query" name:"MixDomainName"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	MixAppName    string           `position:"Query" name:"MixAppName"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// RemoveMultipleStreamMixServiceResponse is the response struct for api RemoveMultipleStreamMixService
+type RemoveMultipleStreamMixServiceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateRemoveMultipleStreamMixServiceRequest creates a request to invoke RemoveMultipleStreamMixService API
+func CreateRemoveMultipleStreamMixServiceRequest() (request *RemoveMultipleStreamMixServiceRequest) {
+	request = &RemoveMultipleStreamMixServiceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "RemoveMultipleStreamMixService", "live", "openAPI")
+	return
+}
+
+// CreateRemoveMultipleStreamMixServiceResponse creates a response to parse from RemoveMultipleStreamMixService response
+func CreateRemoveMultipleStreamMixServiceResponse() (response *RemoveMultipleStreamMixServiceResponse) {
+	response = &RemoveMultipleStreamMixServiceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/live/resume_live_stream.go

@@ -0,0 +1,108 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// ResumeLiveStream invokes the live.ResumeLiveStream API synchronously
+// api document: https://help.aliyun.com/api/live/resumelivestream.html
+func (client *Client) ResumeLiveStream(request *ResumeLiveStreamRequest) (response *ResumeLiveStreamResponse, err error) {
+	response = CreateResumeLiveStreamResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ResumeLiveStreamWithChan invokes the live.ResumeLiveStream API asynchronously
+// api document: https://help.aliyun.com/api/live/resumelivestream.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ResumeLiveStreamWithChan(request *ResumeLiveStreamRequest) (<-chan *ResumeLiveStreamResponse, <-chan error) {
+	responseChan := make(chan *ResumeLiveStreamResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ResumeLiveStream(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ResumeLiveStreamWithCallback invokes the live.ResumeLiveStream API asynchronously
+// api document: https://help.aliyun.com/api/live/resumelivestream.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ResumeLiveStreamWithCallback(request *ResumeLiveStreamRequest, callback func(response *ResumeLiveStreamResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ResumeLiveStreamResponse
+		var err error
+		defer close(result)
+		response, err = client.ResumeLiveStream(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ResumeLiveStreamRequest is the request struct for api ResumeLiveStream
+type ResumeLiveStreamRequest struct {
+	*requests.RpcRequest
+	AppName        string           `position:"Query" name:"AppName"`
+	SecurityToken  string           `position:"Query" name:"SecurityToken"`
+	LiveStreamType string           `position:"Query" name:"LiveStreamType"`
+	DomainName     string           `position:"Query" name:"DomainName"`
+	OwnerId        requests.Integer `position:"Query" name:"OwnerId"`
+	StreamName     string           `position:"Query" name:"StreamName"`
+}
+
+// ResumeLiveStreamResponse is the response struct for api ResumeLiveStream
+type ResumeLiveStreamResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateResumeLiveStreamRequest creates a request to invoke ResumeLiveStream API
+func CreateResumeLiveStreamRequest() (request *ResumeLiveStreamRequest) {
+	request = &ResumeLiveStreamRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "ResumeLiveStream", "live", "openAPI")
+	return
+}
+
+// CreateResumeLiveStreamResponse creates a response to parse from ResumeLiveStream response
+func CreateResumeLiveStreamResponse() (response *ResumeLiveStreamResponse) {
+	response = &ResumeLiveStreamResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/live/set_caster_config.go

@@ -0,0 +1,115 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// SetCasterConfig invokes the live.SetCasterConfig API synchronously
+// api document: https://help.aliyun.com/api/live/setcasterconfig.html
+func (client *Client) SetCasterConfig(request *SetCasterConfigRequest) (response *SetCasterConfigResponse, err error) {
+	response = CreateSetCasterConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SetCasterConfigWithChan invokes the live.SetCasterConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/setcasterconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetCasterConfigWithChan(request *SetCasterConfigRequest) (<-chan *SetCasterConfigResponse, <-chan error) {
+	responseChan := make(chan *SetCasterConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SetCasterConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SetCasterConfigWithCallback invokes the live.SetCasterConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/setcasterconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetCasterConfigWithCallback(request *SetCasterConfigRequest, callback func(response *SetCasterConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SetCasterConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.SetCasterConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SetCasterConfigRequest is the request struct for api SetCasterConfig
+type SetCasterConfigRequest struct {
+	*requests.RpcRequest
+	SideOutputUrl    string           `position:"Query" name:"SideOutputUrl"`
+	CasterId         string           `position:"Query" name:"CasterId"`
+	DomainName       string           `position:"Query" name:"DomainName"`
+	ProgramEffect    requests.Integer `position:"Query" name:"ProgramEffect"`
+	ProgramName      string           `position:"Query" name:"ProgramName"`
+	OwnerId          requests.Integer `position:"Query" name:"OwnerId"`
+	RecordConfig     string           `position:"Query" name:"RecordConfig"`
+	UrgentMaterialId string           `position:"Query" name:"UrgentMaterialId"`
+	TranscodeConfig  string           `position:"Query" name:"TranscodeConfig"`
+	Delay            requests.Float   `position:"Query" name:"Delay"`
+	CasterName       string           `position:"Query" name:"CasterName"`
+	CallbackUrl      string           `position:"Query" name:"CallbackUrl"`
+}
+
+// SetCasterConfigResponse is the response struct for api SetCasterConfig
+type SetCasterConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CasterId  string `json:"CasterId" xml:"CasterId"`
+}
+
+// CreateSetCasterConfigRequest creates a request to invoke SetCasterConfig API
+func CreateSetCasterConfigRequest() (request *SetCasterConfigRequest) {
+	request = &SetCasterConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "SetCasterConfig", "live", "openAPI")
+	return
+}
+
+// CreateSetCasterConfigResponse creates a response to parse from SetCasterConfig response
+func CreateSetCasterConfigResponse() (response *SetCasterConfigResponse) {
+	response = &SetCasterConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/live/set_caster_scene_config.go

@@ -0,0 +1,107 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// SetCasterSceneConfig invokes the live.SetCasterSceneConfig API synchronously
+// api document: https://help.aliyun.com/api/live/setcastersceneconfig.html
+func (client *Client) SetCasterSceneConfig(request *SetCasterSceneConfigRequest) (response *SetCasterSceneConfigResponse, err error) {
+	response = CreateSetCasterSceneConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SetCasterSceneConfigWithChan invokes the live.SetCasterSceneConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/setcastersceneconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetCasterSceneConfigWithChan(request *SetCasterSceneConfigRequest) (<-chan *SetCasterSceneConfigResponse, <-chan error) {
+	responseChan := make(chan *SetCasterSceneConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SetCasterSceneConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SetCasterSceneConfigWithCallback invokes the live.SetCasterSceneConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/setcastersceneconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetCasterSceneConfigWithCallback(request *SetCasterSceneConfigRequest, callback func(response *SetCasterSceneConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SetCasterSceneConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.SetCasterSceneConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SetCasterSceneConfigRequest is the request struct for api SetCasterSceneConfig
+type SetCasterSceneConfigRequest struct {
+	*requests.RpcRequest
+	ComponentId *[]string        `position:"Query" name:"ComponentId"  type:"Repeated"`
+	CasterId    string           `position:"Query" name:"CasterId"`
+	SceneId     string           `position:"Query" name:"SceneId"`
+	OwnerId     requests.Integer `position:"Query" name:"OwnerId"`
+	LayoutId    string           `position:"Query" name:"LayoutId"`
+}
+
+// SetCasterSceneConfigResponse is the response struct for api SetCasterSceneConfig
+type SetCasterSceneConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateSetCasterSceneConfigRequest creates a request to invoke SetCasterSceneConfig API
+func CreateSetCasterSceneConfigRequest() (request *SetCasterSceneConfigRequest) {
+	request = &SetCasterSceneConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "SetCasterSceneConfig", "live", "openAPI")
+	return
+}
+
+// CreateSetCasterSceneConfigResponse creates a response to parse from SetCasterSceneConfig response
+func CreateSetCasterSceneConfigResponse() (response *SetCasterSceneConfigResponse) {
+	response = &SetCasterSceneConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/set_live_streams_notify_url_config.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// SetLiveStreamsNotifyUrlConfig invokes the live.SetLiveStreamsNotifyUrlConfig API synchronously
+// api document: https://help.aliyun.com/api/live/setlivestreamsnotifyurlconfig.html
+func (client *Client) SetLiveStreamsNotifyUrlConfig(request *SetLiveStreamsNotifyUrlConfigRequest) (response *SetLiveStreamsNotifyUrlConfigResponse, err error) {
+	response = CreateSetLiveStreamsNotifyUrlConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SetLiveStreamsNotifyUrlConfigWithChan invokes the live.SetLiveStreamsNotifyUrlConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/setlivestreamsnotifyurlconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetLiveStreamsNotifyUrlConfigWithChan(request *SetLiveStreamsNotifyUrlConfigRequest) (<-chan *SetLiveStreamsNotifyUrlConfigResponse, <-chan error) {
+	responseChan := make(chan *SetLiveStreamsNotifyUrlConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SetLiveStreamsNotifyUrlConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SetLiveStreamsNotifyUrlConfigWithCallback invokes the live.SetLiveStreamsNotifyUrlConfig API asynchronously
+// api document: https://help.aliyun.com/api/live/setlivestreamsnotifyurlconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SetLiveStreamsNotifyUrlConfigWithCallback(request *SetLiveStreamsNotifyUrlConfigRequest, callback func(response *SetLiveStreamsNotifyUrlConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SetLiveStreamsNotifyUrlConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.SetLiveStreamsNotifyUrlConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SetLiveStreamsNotifyUrlConfigRequest is the request struct for api SetLiveStreamsNotifyUrlConfig
+type SetLiveStreamsNotifyUrlConfigRequest struct {
+	*requests.RpcRequest
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	NotifyUrl     string           `position:"Query" name:"NotifyUrl"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// SetLiveStreamsNotifyUrlConfigResponse is the response struct for api SetLiveStreamsNotifyUrlConfig
+type SetLiveStreamsNotifyUrlConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateSetLiveStreamsNotifyUrlConfigRequest creates a request to invoke SetLiveStreamsNotifyUrlConfig API
+func CreateSetLiveStreamsNotifyUrlConfigRequest() (request *SetLiveStreamsNotifyUrlConfigRequest) {
+	request = &SetLiveStreamsNotifyUrlConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "SetLiveStreamsNotifyUrlConfig", "live", "openAPI")
+	return
+}
+
+// CreateSetLiveStreamsNotifyUrlConfigResponse creates a response to parse from SetLiveStreamsNotifyUrlConfig response
+func CreateSetLiveStreamsNotifyUrlConfigResponse() (response *SetLiveStreamsNotifyUrlConfigResponse) {
+	response = &SetLiveStreamsNotifyUrlConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/start_caster.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// StartCaster invokes the live.StartCaster API synchronously
+// api document: https://help.aliyun.com/api/live/startcaster.html
+func (client *Client) StartCaster(request *StartCasterRequest) (response *StartCasterResponse, err error) {
+	response = CreateStartCasterResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StartCasterWithChan invokes the live.StartCaster API asynchronously
+// api document: https://help.aliyun.com/api/live/startcaster.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartCasterWithChan(request *StartCasterRequest) (<-chan *StartCasterResponse, <-chan error) {
+	responseChan := make(chan *StartCasterResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StartCaster(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StartCasterWithCallback invokes the live.StartCaster API asynchronously
+// api document: https://help.aliyun.com/api/live/startcaster.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartCasterWithCallback(request *StartCasterRequest, callback func(response *StartCasterResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StartCasterResponse
+		var err error
+		defer close(result)
+		response, err = client.StartCaster(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StartCasterRequest is the request struct for api StartCaster
+type StartCasterRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// StartCasterResponse is the response struct for api StartCaster
+type StartCasterResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	PvwSceneInfos PvwSceneInfos `json:"PvwSceneInfos" xml:"PvwSceneInfos"`
+	PgmSceneInfos PgmSceneInfos `json:"PgmSceneInfos" xml:"PgmSceneInfos"`
+}
+
+// CreateStartCasterRequest creates a request to invoke StartCaster API
+func CreateStartCasterRequest() (request *StartCasterRequest) {
+	request = &StartCasterRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "StartCaster", "live", "openAPI")
+	return
+}
+
+// CreateStartCasterResponse creates a response to parse from StartCaster response
+func CreateStartCasterResponse() (response *StartCasterResponse) {
+	response = &StartCasterResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/live/start_caster_scene.go

@@ -0,0 +1,106 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// StartCasterScene invokes the live.StartCasterScene API synchronously
+// api document: https://help.aliyun.com/api/live/startcasterscene.html
+func (client *Client) StartCasterScene(request *StartCasterSceneRequest) (response *StartCasterSceneResponse, err error) {
+	response = CreateStartCasterSceneResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StartCasterSceneWithChan invokes the live.StartCasterScene API asynchronously
+// api document: https://help.aliyun.com/api/live/startcasterscene.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartCasterSceneWithChan(request *StartCasterSceneRequest) (<-chan *StartCasterSceneResponse, <-chan error) {
+	responseChan := make(chan *StartCasterSceneResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StartCasterScene(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StartCasterSceneWithCallback invokes the live.StartCasterScene API asynchronously
+// api document: https://help.aliyun.com/api/live/startcasterscene.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartCasterSceneWithCallback(request *StartCasterSceneRequest, callback func(response *StartCasterSceneResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StartCasterSceneResponse
+		var err error
+		defer close(result)
+		response, err = client.StartCasterScene(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StartCasterSceneRequest is the request struct for api StartCasterScene
+type StartCasterSceneRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	SceneId  string           `position:"Query" name:"SceneId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// StartCasterSceneResponse is the response struct for api StartCasterScene
+type StartCasterSceneResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	StreamUrl string `json:"StreamUrl" xml:"StreamUrl"`
+}
+
+// CreateStartCasterSceneRequest creates a request to invoke StartCasterScene API
+func CreateStartCasterSceneRequest() (request *StartCasterSceneRequest) {
+	request = &StartCasterSceneRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "StartCasterScene", "live", "openAPI")
+	return
+}
+
+// CreateStartCasterSceneResponse creates a response to parse from StartCasterScene response
+func CreateStartCasterSceneResponse() (response *StartCasterSceneResponse) {
+	response = &StartCasterSceneResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/live/start_mix_streams_service.go

@@ -0,0 +1,113 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// StartMixStreamsService invokes the live.StartMixStreamsService API synchronously
+// api document: https://help.aliyun.com/api/live/startmixstreamsservice.html
+func (client *Client) StartMixStreamsService(request *StartMixStreamsServiceRequest) (response *StartMixStreamsServiceResponse, err error) {
+	response = CreateStartMixStreamsServiceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StartMixStreamsServiceWithChan invokes the live.StartMixStreamsService API asynchronously
+// api document: https://help.aliyun.com/api/live/startmixstreamsservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartMixStreamsServiceWithChan(request *StartMixStreamsServiceRequest) (<-chan *StartMixStreamsServiceResponse, <-chan error) {
+	responseChan := make(chan *StartMixStreamsServiceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StartMixStreamsService(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StartMixStreamsServiceWithCallback invokes the live.StartMixStreamsService API asynchronously
+// api document: https://help.aliyun.com/api/live/startmixstreamsservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartMixStreamsServiceWithCallback(request *StartMixStreamsServiceRequest, callback func(response *StartMixStreamsServiceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StartMixStreamsServiceResponse
+		var err error
+		defer close(result)
+		response, err = client.StartMixStreamsService(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StartMixStreamsServiceRequest is the request struct for api StartMixStreamsService
+type StartMixStreamsServiceRequest struct {
+	*requests.RpcRequest
+	MixType        string           `position:"Query" name:"MixType"`
+	SecurityToken  string           `position:"Query" name:"SecurityToken"`
+	MainDomainName string           `position:"Query" name:"MainDomainName"`
+	MixStreamName  string           `position:"Query" name:"MixStreamName"`
+	MixTemplate    string           `position:"Query" name:"MixTemplate"`
+	MixDomainName  string           `position:"Query" name:"MixDomainName"`
+	OwnerId        requests.Integer `position:"Query" name:"OwnerId"`
+	MainAppName    string           `position:"Query" name:"MainAppName"`
+	MixAppName     string           `position:"Query" name:"MixAppName"`
+	MainStreamName string           `position:"Query" name:"MainStreamName"`
+}
+
+// StartMixStreamsServiceResponse is the response struct for api StartMixStreamsService
+type StartMixStreamsServiceResponse struct {
+	*responses.BaseResponse
+	RequestId          string                                     `json:"RequestId" xml:"RequestId"`
+	MixStreamsInfoList MixStreamsInfoListInStartMixStreamsService `json:"MixStreamsInfoList" xml:"MixStreamsInfoList"`
+}
+
+// CreateStartMixStreamsServiceRequest creates a request to invoke StartMixStreamsService API
+func CreateStartMixStreamsServiceRequest() (request *StartMixStreamsServiceRequest) {
+	request = &StartMixStreamsServiceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "StartMixStreamsService", "live", "openAPI")
+	return
+}
+
+// CreateStartMixStreamsServiceResponse creates a response to parse from StartMixStreamsService response
+func CreateStartMixStreamsServiceResponse() (response *StartMixStreamsServiceResponse) {
+	response = &StartMixStreamsServiceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/live/start_multiple_stream_mix_service.go

@@ -0,0 +1,108 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// StartMultipleStreamMixService invokes the live.StartMultipleStreamMixService API synchronously
+// api document: https://help.aliyun.com/api/live/startmultiplestreammixservice.html
+func (client *Client) StartMultipleStreamMixService(request *StartMultipleStreamMixServiceRequest) (response *StartMultipleStreamMixServiceResponse, err error) {
+	response = CreateStartMultipleStreamMixServiceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StartMultipleStreamMixServiceWithChan invokes the live.StartMultipleStreamMixService API asynchronously
+// api document: https://help.aliyun.com/api/live/startmultiplestreammixservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartMultipleStreamMixServiceWithChan(request *StartMultipleStreamMixServiceRequest) (<-chan *StartMultipleStreamMixServiceResponse, <-chan error) {
+	responseChan := make(chan *StartMultipleStreamMixServiceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StartMultipleStreamMixService(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StartMultipleStreamMixServiceWithCallback invokes the live.StartMultipleStreamMixService API asynchronously
+// api document: https://help.aliyun.com/api/live/startmultiplestreammixservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartMultipleStreamMixServiceWithCallback(request *StartMultipleStreamMixServiceRequest, callback func(response *StartMultipleStreamMixServiceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StartMultipleStreamMixServiceResponse
+		var err error
+		defer close(result)
+		response, err = client.StartMultipleStreamMixService(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StartMultipleStreamMixServiceRequest is the request struct for api StartMultipleStreamMixService
+type StartMultipleStreamMixServiceRequest struct {
+	*requests.RpcRequest
+	AppName       string           `position:"Query" name:"AppName"`
+	SecurityToken string           `position:"Query" name:"SecurityToken"`
+	DomainName    string           `position:"Query" name:"DomainName"`
+	MixTemplate   string           `position:"Query" name:"MixTemplate"`
+	OwnerId       requests.Integer `position:"Query" name:"OwnerId"`
+	StreamName    string           `position:"Query" name:"StreamName"`
+}
+
+// StartMultipleStreamMixServiceResponse is the response struct for api StartMultipleStreamMixService
+type StartMultipleStreamMixServiceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateStartMultipleStreamMixServiceRequest creates a request to invoke StartMultipleStreamMixService API
+func CreateStartMultipleStreamMixServiceRequest() (request *StartMultipleStreamMixServiceRequest) {
+	request = &StartMultipleStreamMixServiceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "StartMultipleStreamMixService", "live", "openAPI")
+	return
+}
+
+// CreateStartMultipleStreamMixServiceResponse creates a response to parse from StartMultipleStreamMixService response
+func CreateStartMultipleStreamMixServiceResponse() (response *StartMultipleStreamMixServiceResponse) {
+	response = &StartMultipleStreamMixServiceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/live/stop_caster.go

@@ -0,0 +1,104 @@
+package live
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under 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"
+)
+
+// StopCaster invokes the live.StopCaster API synchronously
+// api document: https://help.aliyun.com/api/live/stopcaster.html
+func (client *Client) StopCaster(request *StopCasterRequest) (response *StopCasterResponse, err error) {
+	response = CreateStopCasterResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StopCasterWithChan invokes the live.StopCaster API asynchronously
+// api document: https://help.aliyun.com/api/live/stopcaster.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StopCasterWithChan(request *StopCasterRequest) (<-chan *StopCasterResponse, <-chan error) {
+	responseChan := make(chan *StopCasterResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StopCaster(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StopCasterWithCallback invokes the live.StopCaster API asynchronously
+// api document: https://help.aliyun.com/api/live/stopcaster.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StopCasterWithCallback(request *StopCasterRequest, callback func(response *StopCasterResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StopCasterResponse
+		var err error
+		defer close(result)
+		response, err = client.StopCaster(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StopCasterRequest is the request struct for api StopCaster
+type StopCasterRequest struct {
+	*requests.RpcRequest
+	CasterId string           `position:"Query" name:"CasterId"`
+	OwnerId  requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// StopCasterResponse is the response struct for api StopCaster
+type StopCasterResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateStopCasterRequest creates a request to invoke StopCaster API
+func CreateStopCasterRequest() (request *StopCasterRequest) {
+	request = &StopCasterRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("live", "2016-11-01", "StopCaster", "live", "openAPI")
+	return
+}
+
+// CreateStopCasterResponse creates a response to parse from StopCaster response
+func CreateStopCasterResponse() (response *StopCasterResponse) {
+	response = &StopCasterResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

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